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 aplicativo os utiliza. O esquema flexível permite que você evolua seu modelo de dados sem tempo de inatividade, itere de forma rápida e lida facilmente com dados não uniformes.
O MongoDB oferece um mecanismo de query eficiente, dimensionamento horizontal e alta disponibilidade integrada para que você possa fornecer suporte a tudo, de prototipagem rápida a grandes cargas de trabalho críticas.
O MongoDB é um banco de dados operacional totalmente transacional que oferece suporte a uma ampla variedade de tipos de carga 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: A fragmentação 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 incorporados e arrays 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 coleção.
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 coleções, o MongoDB oferece suporte a visualizaçõessomente leitura.
Transações
O MongoDB oferece suporte a transações multidocumento, 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 o dimensionamento horizontal por meio de uma técnica chamada Fragmentação.
Os principais recursos de fragmentação incluem:
Distribuição automática de dados: o MongoDB particiona automaticamente os dados com base em uma chave de fragmento 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 faixas de chaves de fragmento.
Refinamento da chave de fragmento: você pode refinar sua chave de fragmento para melhorar o desempenho à medida que seu aplicativo desenvolve.