O que é MongoDB? Introdução, arquitetura, recursos e exemplo

O que é MongoDB?

MongoDB é um banco de dados NoSQL orientado a documentos usado para armazenamento de dados de alto volume. Em vez de usar tabelas e linhas como nos bancos de dados relacionais tradicionais, o MongoDB faz uso de coleções e documentos. Os documentos consistem em pares de valores-chave que são a unidade básica de dados no MongoDB. As coleções contêm conjuntos de documentos e funções que são equivalentes às tabelas de banco de dados relacional. MongoDB é um banco de dados que surgiu em meados dos anos 2000.

Neste tutorial, você aprenderá-

Recursos do MongoDB

    1. Cada banco de dados contém coleções que, por sua vez, contêm documentos. Cada documento pode ser diferente com um número variável de campos. O tamanho e o conteúdo de cada documento podem ser diferentes um do outro.
    2. A estrutura do documento está mais alinhada com a forma como os desenvolvedores constroem suas classes e objetos em suas respectivas linguagens de programação. Os desenvolvedores costumam dizer que suas classes não são linhas e colunas, mas têm uma estrutura clara com pares de valores-chave.
    3. As linhas (ou documentos como chamados no MongoDB) não precisam ter um esquema definido de antemão. Em vez disso, os campos podem ser criados instantaneamente.
    4. O modelo de dados disponível no MongoDB permite representar relacionamentos hierárquicos, armazenar arrays e outras estruturas mais complexas com mais facilidade.
  1. Escalabilidade - os ambientes MongoDB são muito escaláveis. Empresas em todo o mundo definiram clusters com alguns deles executando mais de 100 nós com cerca de milhões de documentos no banco de dados

Exemplo de MongoDB

O exemplo a seguir mostra como um documento pode ser modelado no MongoDB.

  1. O campo _id é adicionado pelo MongoDB para identificar exclusivamente o documento na coleção.
  2. O que você pode observar é que os dados do pedido (ID do pedido, produto e quantidade) que no RDBMS serão normalmente armazenados em uma tabela separada, enquanto no MongoDB eles são armazenados como um documento embutido na própria coleção. Essa é uma das principais diferenças em como os dados são modelados no MongoDB.

Componentes-chave da arquitetura MongoDB

Abaixo estão alguns dos termos comuns usados ​​no MongoDB

  1. _Eu iria - Este é um campo obrigatório em todos os documentos MongoDB. O campo _id representa um valor exclusivo no documento MongoDB. O campo _id é como a chave primária do documento. Se você criar um novo documento sem um campo _id, o MongoDB criará o campo automaticamente. Portanto, por exemplo, se virmos o exemplo da tabela de clientes acima, o Mongo DB adicionará um identificador exclusivo de 24 dígitos a cada documento da coleção.
_Identificação Identificação do Cliente Nome do cliente OrderID
563479cc8a8a4246bd27d784 onze Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Coleção - Este é um agrupamento de documentos MongoDB. Uma coleção é o equivalente a uma tabela criada em qualquer outro RDMS, como Oracle ou MS SQL. Existe uma coleção em um único banco de dados. Como visto nas coleções de introdução, não impõe nenhum tipo de estrutura.
  2. Cursor - Este é um ponteiro para o conjunto de resultados de uma consulta. Os clientes podem iterar por meio de um cursor para recuperar os resultados.
  3. Base de dados - Este é um contêiner para coleções como no RDMS, onde é um contêiner para tabelas. Cada banco de dados obtém seu próprio conjunto de arquivos no sistema de arquivos. Um servidor MongoDB pode armazenar vários bancos de dados.
  4. Documento - Um registro em uma coleção do MongoDB é basicamente chamado de documento. O documento, por sua vez, será composto por nome de campo e valores.
  5. Campo - Um par nome-valor em um documento. Um documento tem zero ou mais campos. Os campos são análogos às colunas em bancos de dados relacionais.

    O diagrama a seguir mostra um exemplo de campos com pares de valores-chave. Portanto, no exemplo abaixo CustomerID e 11 é um dos pares de valores-chave definidos no documento.

  1. JSON - Isso é conhecido como JavaScript Object Notation. Este é um formato de texto simples legível para expressar dados estruturados. JSON é atualmente compatível com muitas linguagens de programação.

Apenas uma nota rápida sobre a principal diferença entre o campo _id e um campo de coleção normal. O campo _id é usado para identificar exclusivamente os documentos em uma coleção e é adicionado automaticamente pelo MongoDB quando a coleção é criada.

Por que usar o MongoDB?

Abaixo estão algumas das razões pelas quais se deve começar a usar o MongoDB

  1. Orientado a documentos - como o MongoDB é um banco de dados do tipo NoSQL, em vez de ter dados em um formato de tipo relacional, ele armazena os dados em documentos. Isso torna o MongoDB muito flexível e adaptável à situação e aos requisitos do mundo real dos negócios.
  2. Consultas ad hoc - o MongoDB oferece suporte à pesquisa por campo, consultas de intervalo e pesquisas de expressão regular. As consultas podem ser feitas para retornar campos específicos nos documentos.
  3. Indexação - índices podem ser criados para melhorar o desempenho das pesquisas no MongoDB. Qualquer campo em um documento MongoDB pode ser indexado.
  4. Replicação - o MongoDB pode fornecer alta disponibilidade com conjuntos de réplicas. Um conjunto de réplicas consiste em duas ou mais instâncias de banco de dados mongo. Cada membro do conjunto de réplicas pode atuar na função de réplica primária ou secundária a qualquer momento. A réplica primária é o servidor principal que interage com o cliente e executa todas as operações de leitura / gravação. As réplicas secundárias mantêm uma cópia dos dados do primário usando a replicação integrada. Quando uma réplica primária falha, o conjunto de réplicas muda automaticamente para o secundário e então se torna o servidor primário.
  5. Balanceamento de carga - o MongoDB usa o conceito de fragmentação para dimensionar horizontalmente, dividindo os dados em várias instâncias do MongoDB. O MongoDB pode ser executado em vários servidores, equilibrando a carga e / ou duplicando dados para manter o sistema funcionando em caso de falha de hardware.

Modelagem de dados no MongoDB

Como vimos na seção Introdução, os dados no MongoDB têm um esquema flexível. Ao contrário dos bancos de dados SQL, onde você deve ter um esquema de tabela declarado antes de inserir os dados, as coleções do MongoDB não impõem a estrutura do documento. Esse tipo de flexibilidade é o que torna o MongoDB tão poderoso.

Ao modelar dados no Mongo, lembre-se do seguinte

  1. Quais são as necessidades do aplicativo - observe as necessidades de negócios do aplicativo e veja quais dados e os tipos de dados necessários para o aplicativo. Com base nisso, certifique-se de que a estrutura do documento seja decidida em conformidade.
  2. O que são padrões de recuperação de dados - se você prevê um uso intenso de consultas, considere o uso de índices em seu modelo de dados para melhorar a eficiência das consultas.
  3. As inserções, atualizações e remoções frequentes estão acontecendo no banco de dados? Reconsidere o uso de índices ou incorpore sharding, se necessário, em seu design de modelagem de dados para melhorar a eficiência de seu ambiente MongoDB geral.

Diferença entre MongoDB e RDBMS

Abaixo estão algumas das principais diferenças de termos entre MongoDB e RDBMS

RDBMS MongoDB Diferença
Mesa Coleção No RDBMS, a tabela contém as colunas e linhas que são usadas para armazenar os dados, enquanto no MongoDB essa mesma estrutura é conhecida como coleção. A coleção contém documentos que, por sua vez, contêm Fields, que por sua vez são pares de valores-chave.
Linha Documento No RDBMS, a linha representa um único item de dados estruturado implicitamente em uma tabela. No MongoDB, os dados são armazenados em documentos.
Coluna Campo No RDBMS, a coluna denota um conjunto de valores de dados. No MongoDB, eles são conhecidos como Campos.
Junta-se Documentos embutidos No RDBMS, os dados às vezes são espalhados por várias tabelas e, para mostrar uma visão completa de todos os dados, às vezes é formada uma junção entre as tabelas para obter os dados. No MongoDB, os dados são normalmente armazenados em uma única coleção, mas separados por meio de documentos incorporados. Portanto, não há conceito de junções no MongoDB.

Além das diferenças de termos, algumas outras diferenças são mostradas abaixo

  1. Os bancos de dados relacionais são conhecidos por impor integridade de dados. Este não é um requisito explícito no MongoDB.
  2. RDBMS requer que os dados sejam normalizado primeiro, para evitar registros órfãos e duplicatas. A normalização dos dados exige mais tabelas, o que resultará em mais junções de tabelas, exigindo mais chaves e índices.

    Conforme os bancos de dados começam a crescer, o desempenho pode começar a se tornar um problema. Novamente, este não é um requisito explícito no MongoDB. O MongoDB é flexível e não precisa que os dados sejam normalizados primeiro.