O MongoDB é um banco de dados de documento projetado para ajudar os desenvolvedores a criar aplicativos modernos com mais rapidez. Ele armazena dados em documentos flexíveis semelhantes a JSON, facilitando a modelagem de dados da mesma forma que o código do aplicação os utiliza. O esquema flexível permite que você evolua seu modelo de dados sem tempo de inatividade, itere de forma rápida e manipule facilmente dados não uniformes.
O MongoDB oferece um mecanismo de query eficiente, dimensionamento horizontal e alta disponibilidade integrada para que você possa oferecer suporte a tudo, de prototiagem rápida a volumes de trabalho grandes e críticos.
O MongoDB é um banco de dados operacional totalmente transacional que oferece suporte a uma ampla variedade de tipos de volume de trabalho, incluindo:
Arquitetura principal
O MongoDB é baseado em vários componentes de arquitetura principais que o distinguem dos bancos de dados relacionais:
Banco de dados de documentos: o modelo flexível de dados de documento permite mapear seus dados de acordo com as necessidades do seu aplicativo.
Transações: as transações ACID de vários documentos permitem operações complexas que exigem consistência de dados.
Alta disponibilidade: a replicação e o failover automático garantem que seus dados estejam sempre disponíveis.
Dimensionamento horizontal: o compartilhamento permite o dimensionamento horizontal para lidar com grandes conjuntos de dados e alta taxa de transferência.
Banco de dados de documentos
Um registro no MongoDB é um documento, que é uma estrutura de dados composta de pares de campos e valores. Os documentos MongoDB são semelhantes aos objetos JSON . Os valores dos campos podem incluir outros documentos, matrizes e matrizes de documentos.
O modelo de dados flexível orientado a objetos do MongoDB permite estruturar dados de uma forma que espelhe os modelos de objeto em sua base de código. Isso elimina a necessidade do mapeamento complexo objeto-relacional exigido ao usar bancos de dados relacionais.
Aqui está um exemplo de um documento MongoDB que mostra como os documentos podem expressar dados complexos e hierárquicos em um formato que espelha o modelo de objetos do seu aplicativo:
{ _id: ObjectId("507f1f77bcf86cd799439011"), name: "Alice", birthdate: ISODate("1990-01-01T00:00:00Z"), address: { street: "123 Main St", city: "Springfield", state: "IL" }, hobbies: ["reading", "hiking", "coding"] }
As vantagens adicionais do modelo de dados de documento são:
Os documentos correspondem a tipos de dados nativos em linguagens de programação.
Documentos e matrizes incorporados reduzem a necessidade de junções dispendiosas que podem diminuir o desempenho.
Os esquemas dinâmicos suportam o polimorfismo, que permite estruturas diversas entre documentos na mesma collection.
O MongoDB armazena documentos em Coleções. As coleções são semelhantes às tabelas relacionais, mas não impõem um esquema rígido e predefinido.
Além das collections, o MongoDB oferece suporte a visualizações somente leitura.
Transações
O MongoDB oferece suporte a transações de vários documentos, que permitem executar várias operações de leitura e gravação como um único evento de tudo ou nada.
As principais funcionalidades da transação incluem:
Garantias ACID : as transações fornecem atomicidade, consistência, isolamento e durabilidade em várias operações.
Operações de vários documentos: você pode executar operações complexas que abrangem vários documentos enquanto mantêm a consistência dos dados.
Transações distribuídas: você pode coordenar transações em clusters fragmentados com as mesmas garantias ACID .
Para saber mais, consulte Transações.
Alta disponibilidade
O mecanismo de replicação integrado do MongoDB oferece failover automático, redundância de dados e maior capacidade de leitura. Com o failover automático, se o servidor primário ficar indisponível, o cluster elegerá automaticamente um novo primário, o que garante que as gravações permaneçam disponíveis. Além disso, várias cópias de seus dados são armazenadas em diferentes servidores para melhorar a durabilidade dos dados.
Dimensionamento horizontal
O MongoDB suporta nativamente a escalabilidade horizontal por meio de uma técnica chamada Fragmentação.
Os principais recursos de fragmentação incluem:
Distribuiçãoautomática de dados: o MongoDB particiona automaticamente os dados com base em uma chave de shard e os distribui por um cluster de máquinas.
Fragmentação de zona: você pode definir zonas geográficas para controlar a colocação de documentos com base em intervalos de chaves de shard.
Refinamento da chave de shard: você pode refinar sua chave de shard para melhorar o desempenho à medida que seu aplicação desenvolve.