MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Bancos de dados NoSQL mais populares suportados pelo ClusterControl

NoSQL ("não apenas SQL") é uma abordagem de design de banco de dados que permite o armazenamento e a consulta de dados fora das estruturas tradicionais encontradas em bancos de dados relacionais. Ele foi criado para lidar principalmente com dados não estruturados que são gerados a partir de várias fontes, como documentos, áudio, vídeo, redes sociais, etc. Os bancos de dados NoSQL são melhores para aplicativos modernos em que os modelos de dados evoluem e a escalabilidade é essencial. Esse banco de dados ganhou popularidade nos últimos anos, já que as empresas agora precisam lidar com dados não estruturados mais do que nunca. Esse modelo armazena dados de forma diferente das tabelas relacionais tradicionais para permitir que os dados relacionados sejam mantidos em uma única estrutura de dados. Um banco de dados NoSQL pode ser dividido em quatro categorias:

  • Armazenamento de documentos

  • Bancos de dados de valores-chave

  • Lojas de coluna ampla

  • Bancos de dados de gráficos

Bancos de dados NoSQL são frequentemente usados ​​em projetos ágeis porque oferecem modelos de dados flexíveis. Isso permite que os desenvolvedores se concentrem na lógica e nos algoritmos de negócios em vez de lidar com atualizações de esquema. Se você prevê que o modelo de dados do seu aplicativo precisa permanecer flexível para acomodar as mudanças ao longo do tempo, a abordagem de esquema flexível dos bancos de dados NoSQL pode ser adequada às suas necessidades.

De acordo com db-engines, os dois principais bancos de dados NoSQL (julho de 2021) são MongoDB (classificação:5) e Redis (classificação:6). Curiosamente, esses bancos de dados NoSQL não existiam 12 anos atrás. Como eles surgiram e ganharam atração, popularidade e mudaram o cenário do sistema de gerenciamento de banco de dados é a essência principal deste post do blog.

MongoDB

MongoDB é um banco de dados orientado a documentos de código aberto, com o lançamento inicial em fevereiro de 2009. Os bancos de dados de documentos contrastam fortemente com o banco de dados relacional tradicional. Eles armazenam todas as informações de um determinado objeto em uma única instância no banco de dados, e cada objeto armazenado pode ser diferente de todos os outros. Isso elimina a necessidade de mapeamento objeto-relacional e permite estrutura sem esquema, um recurso em que os desenvolvedores de aplicativos têm agilidade para evoluir rapidamente devido ao seu modelo de dados flexível. Em vez de ajustar um aplicativo para atender aos requisitos do esquema, os desenvolvedores escrevem o aplicativo e o esquema segue.

O MongoDB é muito popular devido à sua flexibilidade, facilidade de aprendizado e menor custo de propriedade para começar. Os desenvolvedores de aplicativos adoram o MongoDB porque podem alterar o modelo de dados em movimento e porque o MongoDB usa documentos JSON para registrar dados. O JSON está em toda parte e pode ser considerado o formato de fato para enviar dados avançados entre aplicativos da Web e endpoints. Seu design simples e flexibilidade facilitam a leitura e a compreensão e, na maioria dos casos, fáceis de manipular na linguagem de programação de sua escolha.

O MongoDB surgiu graças ao 10gen (antes de ser renomeado para MongoDB Inc), começou a desenvolvê-lo em 2007 e saiu com sua primeira versão GA em fevereiro de 2009. Desde então, o MongoDB evoluiu rapidamente e é considerado um dos projetos de banco de dados mais interessantes para aplicativos modernos. De acordo com a StackOverflow Developer Survey 2020, o MongoDB continua sendo a tecnologia de banco de dados que os desenvolvedores mais desejam aprender. No momento da redação deste artigo, eles acabaram de lançar a versão 5.0 (13 de julho de 2021) e vem com muitos recursos notáveis, como reestilhaçamento ao vivo, suporte a dados de série temporal nativos e API com versão, adequada para ambientes de várias nuvens.

Outro recurso significativo do MongoDB são os recursos integrados de alta disponibilidade, como replicação, conjunto de réplicas e fragmentação. É escalável horizontalmente, o que ajuda a reduzir a carga de trabalho e dimensionar seus negócios com facilidade. Ele oferece replicação por meio de um protocolo de consenso local que se inspira no Raft e pode distribuir dados entre fragmentos por meio de seu roteador de consulta chamado mongos. Você pode usar o ClusterControl para implantar um conjunto de réplicas do MongoDB e uma configuração de cluster fragmentado com facilidade.

O MongoDB chamou a atenção do público e das críticas devido à sua fraqueza na configuração de segurança padrão do MongoDB, permitindo que qualquer pessoa tenha acesso total ao banco de dados. Dados de dezenas de milhares de instalações do MongoDB foram roubados. Além disso, muitos servidores MongoDB foram mantidos para resgate. Essa exposição nos levou a escrever um punhado de postagens de blog relacionadas à segurança relacionadas ao MongoDB, como Secure MongoDB and Protect Yourself From the Ransom Hack e How to Secure MongoDB From Ransomware - Ten Tips. Consequentemente, o MongoDB aprimorou os aspectos de configuração padrão para ser mais seguro com o MongoDB 3 e posterior.

Algumas grandes empresas dependem fortemente do MongoDB como seu armazenamento de dados, como Forbes, Toyota, SAP, Cisco, eBay e Adobe. O MongoDB é considerado um divisor de águas no mundo dos bancos de dados, tornando-se uma das plataformas de banco de dados mais importantes da era da internet.

O ClusterControl oferece suporte ao MongoDB desde a versão de julho de 2013 (v1.2.3) e vem melhorando continuamente desde então. O ClusterControl até suportava o TokuMX (MongoDB com a árvore fractal do Tokutek) naquela época, antes de ser preterido no MongoDB 3 devido às mudanças de design do núcleo do upstream. Nas recentes melhorias notáveis, o ClusterControl apresenta suporte para o Percona Backup for MongoDB, uma solução distribuída e de baixo impacto para obter backups consistentes de clusters fragmentados e conjuntos de réplicas do MongoDB. O projeto Percona Backup for MongoDB é herdado e substitui mongodb_consistent_backup, que não é mais desenvolvido ou suportado ativamente.

Redis

O Redis é outra tecnologia de banco de dados NoSQL mais popular que se concentra no acesso frequente de alta velocidade aos mesmos blocos de dados, mesmo que esses blocos de dados sejam grandes. Em maio de 2019, Salvatore Sanfilllippo lançou a versão inicial do Redis, também conhecido como Remote Dictionary Server, e chamou a atenção de todos por causa de seus recursos mais ricos para a solução de banco de dados em memória de código aberto já estabelecida na época chamada Memcached.

O Redis é super-rápido devido à estrutura de dados na memória e ao fato de ter sido escrito na linguagem C (essa é uma das razões pelas quais o Memcached foi reescrito em C). Devido ao seu alto desempenho, os desenvolvedores recorreram ao Redis para armazenamento em cache de dados quando o volume de operações de leitura e gravação excede os recursos dos bancos de dados tradicionais. Os dados acessados ​​com frequência podem ser armazenados em cache e servidos por datastores de valor-chave na memória e minimizando leituras e gravações em sistemas baseados em disco mais lentos com foco no armazenamento persistente.

Tradicionalmente, os sistemas de gerenciamento de banco de dados são projetados para fornecer funcionalidades de dados robustas em vez de velocidade em escala. O cache do aplicativo é frequentemente usado para armazenar cópias de tabelas de pesquisa e as respostas a consultas caras do DBMS, tanto para melhorar o desempenho do aplicativo quanto para reduzir a carga da fonte de dados. Às vezes, o fluxo de trabalho de um aplicativo requer a geração de resultados com uso intensivo de recursos. Uma vez obtidos esses resultados, há casos em que os resultados podem ser reutilizados posteriormente, como na realização de agregados parciais. O cache atua como um meio intermediário ideal para reter esses resultados entre as solicitações. É aqui que o Redis está brilhando.

O Redis evoluiu de um armazenamento de chave-valor simples muito rápido para armazenamento de dados persistente e sendo usado como um agente de mensagens e sistema de filas. Ele permite a verdadeira ausência de estado para os processos dos aplicativos, reduzindo a duplicação de dados ou solicitações para fontes de dados externas. De acordo com a StackOverflow Developer Survey 2020, o Redis permanece no topo da tecnologia de banco de dados que os desenvolvedores manifestaram interesse em continuar desenvolvendo. No momento da redação deste artigo, o Redis 6 é a versão mais recente, com uma nova e mais sofisticada implementação de ACL baseada no usuário, criptografia SSL de tráfego integrada e E/S multithread, embora o processo Redis ainda seja de thread único .

A implantação do Redis é suportada no ClusterControl 1.9.0 usando nosso novo pacote de GUI do ClusterControl de próxima geração disponível em uma instalação separada. No momento da redação deste artigo, nos referimos a ele como ClusterControl v2 marcado com Technology Preview, que suporta apenas a implantação de uma replicação Redis de até 5 nós com Redis Sentinel com gerenciamento de backup de AOF e RDB. Se você estiver interessado, consulte este guia sobre como instalá-lo.

Resumo

MongoDB e Redis são de longe duas das melhores soluções de banco de dados NoSQL no mercado atualmente e acredita-se que mantenham sua posição no ranking dos 10 principais bancos de dados por um bom tempo. Essa é a razão pela qual o ClusterControl suporta ambas as tecnologias de banco de dados.