O que é o MongoDB? Introdução, Archiestrutura, recursos e exemplo
O que é o 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, 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 em MongoDB. As coleções contêm conjuntos de documentos e funções que equivalem a tabelas de bancos de dados relacionais. MongoDB é um banco de dados que surgiu em meados dos anos 2000.
MongoDB Funcionalidades
- 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 entre si.
- 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.
- As linhas (ou documentos como chamados em MongoDB) não precisa ter um esquema definido previamente. Em vez disso, os campos podem ser criados instantaneamente.
- O modelo de dados disponível dentro MongoDB permite que você represente relacionamentos hierárquicos, armazene matrizes e outras estruturas mais complexas com mais facilidade.
- Escalabilidade – O MongoDB ambientes são muito escaláveis. Empresas em todo o mundo definiram clusters, algumas delas executando mais de 100 nós com cerca de milhões de documentos no banco de dados
MongoDB Exemplo
O exemplo abaixo mostra como um documento pode ser modelado em MongoDB.
- O campo _id é adicionado por MongoDB para identificar exclusivamente o documento na coleção.
- O que você pode notar é que os dados do pedido (OrderID, Product e Quantidade) que no RDBMS normalmente serão armazenados em uma tabela separada, enquanto em MongoDB na verdade, ele é armazenado como um documento incorporado na própria coleção. Esta é uma das principais diferenças em como os dados são modelados em MongoDB.
Principais componentes de MongoDB Archiarquitetura
Abaixo estão alguns dos termos comuns usados em MongoDB
- _id – Este é um campo obrigatório em todos MongoDB documento. O campo _id representa um valor único no MongoDB documento. O campo _id é como a chave primária do documento. Se você criar um novo documento sem um campo _id, MongoDB criará automaticamente o campo. Assim, 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.
_Eu ia | Identificação do Cliente | Nome do cliente | Código do pedido |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Coleção – Este é um agrupamento de MongoDB documentos. Uma coleção é equivalente a uma tabela criada em qualquer outro RDMS, como Oracle ou MSSQL. Uma coleção existe em um único banco de dados. Como pode ser visto na introdução, as coleções não impõem nenhum tipo de estrutura.
- Cursor – Este é um ponteiro para o conjunto de resultados de uma consulta. Os clientes podem iterar através de um cursor para recuperar resultados.
- banco 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. A MongoDB servidor pode armazenar vários bancos de dados.
- ISO – Um recorde em MongoDB coleção é basicamente chamada de documento. O documento, por sua vez, será composto por nome de campo e valores.
- 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.
- JSON – Isso é conhecido como JavaScript Notação de objeto. Este é um formato de texto simples legível por humanos para expressar dados estruturados. JSON é atualmente compatível com muitas linguagens de programação.
Apenas uma observação 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 MongoDB?
Abaixo estão algumas das razões pelas quais alguém deve começar a usar MongoDB
- Orientado a documentos – Desde MongoDB é um NoSQL banco de dados do tipo, em vez de ter os dados em um formato do tipo relacional, ele armazena os dados em documentos. Isto faz MongoDB muito flexível e adaptável à situação e aos requisitos reais do mundo dos negócios.
- Consultas ad hoc – MongoDB suporta pesquisa por campo, consultas de intervalo e pesquisas de expressão regular. Consultas podem ser feitas para retornar campos específicos dentro de documentos.
- Indexação – Índices podem ser criados para melhorar o desempenho das pesquisas dentro MongoDB. Qualquer campo em um MongoDB documento pode ser indexado.
- Replicaçã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 da primária usando replicação integrada. Quando uma réplica primária falha, o conjunto de réplicas alterna automaticamente para o secundário e então se torna o servidor primário.
- Balanceamento de carga - MongoDB usa o conceito de fragmentação para escalar horizontalmente, dividindo os dados em vários MongoDB instâncias. 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 em MongoDB
Como vimos na seção Introdução, os dados em MongoDB tem um esquema flexível. Ao contrário de SQL bancos de dados, onde você deve ter o esquema de uma tabela declarado antes de inserir os dados, MongoDBAs coleções de não impõem a estrutura do documento. Esse tipo de flexibilidade é o que faz MongoDB tão poderoso.
Ao modelar dados no Mongo, tenha em mente o seguinte
- 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 de acordo.
- 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.
- Estão acontecendo inserções, atualizações e remoções frequentes no banco de dados? Reconsidere o uso de índices ou incorpore fragmentação, se necessário, em seu projeto de modelagem de dados para melhorar a eficiência geral MongoDB ambiente.
Diferença entre MongoDB & RDBMS
Abaixo estão algumas das principais diferenças de termos entre MongoDB e RDBMS
RDBMS | MongoDB | Diferença |
---|---|---|
mesa | Coleção | In RDBMS, a tabela contém as colunas e linhas que são usadas para armazenar os dados, enquanto, em MongoDB, essa mesma estrutura é conhecida como coleção. A coleção contém documentos que por sua vez contêm Campos, que por sua vez são pares de valores-chave. |
Linha | ISO | No RDBMS, a linha representa um único item de dados estruturado implicitamente em uma tabela. Em MongoDB, os dados são armazenados em documentos. |
Coluna | Campo | No RDBMS, a coluna denota um conjunto de valores de dados. Estes em MongoDB são conhecidos como Campos. |
Junta | Documentos embutidos | No RDBMS, às vezes os dados 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 tabelas para obter os dados. Em MongoDB, os dados normalmente são armazenados em uma única coleção, mas separados por meio de documentos incorporados. Portanto, não há conceito de junções MongoDB. |
Além das diferenças de termos, algumas outras diferenças são mostradas abaixo
- Os bancos de dados relacionais são conhecidos por impor a integridade dos dados. Este não é um requisito explícito no MongoDB.
- O RDBMS exige 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, portanto, mais chaves e índices. À medida que 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. MongoDB é flexível e não precisa que os dados sejam normalizados primeiro.