AnúncioApresentando MongoDB 8.0, o MongoDB mais rápido de todos os tempos! Leia mais > >>
AnúncioVoyage AI se junta ao MongoDB para impulsionar aplicativos de AI mais precisos e confiáveis no Atlas. Saiba mais > >>

O que é um banco de dados de documentos?

Um banco de dados de documentos (também conhecido como banco de dados orientado a documentos ou armazenamento de documentos) é um banco de dados que armazena informações em documentos.

Os bancos de dados de documentos oferecem várias vantagens, entre elas:

  • Um modelo de dados intuitivo que é rápido e fácil para os desenvolvedores trabalharem
  • Um esquema flexível que permite que o modelo de dados evolua conforme as necessidades do aplicativo mudam
  • A capacidade de dimensionar horizontalmente

Devido a essas vantagens, os bancos de dados de documentos são bancos de dados de uso geral que podem ser usados em vários casos de uso e setores.

Bancos de dados de documentos são considerados bancos de dados não relacionais (ou NoSQL). Em vez de armazenar dados em linhas e colunas fixas, os bancos de dados de documentos usam documentos flexíveis. Os bancos de dados de documentos são a alternativa mais popular aos bancos de dados relacionais e tabulares. Saiba mais sobre bancos de dados NoSQL.

Índice:

O que são documentos?

Um documento é um registro em um banco de dados de documentos. Um documento normalmente armazena informações sobre um objeto e quaisquer metadados relacionados a ele.

Os documentos armazenam dados em pares de campo-valor. Os valores podem ser de diversos tipos e estruturas, incluindo strings, números, datas, arrays ou objetos. Os documentos podem ser armazenados em formatos como JSON, BSON e XML.

Abaixo está um documento JSON que armazena informações sobre um usuário chamado Tom.

 

 

Collections

Uma coleção é um grupo de documentos. As coleções normalmente armazenam documentos que têm conteúdos semelhantes.

Nem todos os documentos de uma coleção precisam ter os mesmos campos, pois os bancos de dados de documentos têm esquemas flexíveis. Observe que alguns bancos de dados de documentos oferecem validação de esquema, de modo que o esquema pode opcionalmente ser bloqueado conforme necessário.

Continuando com o exemplo acima, o documento com informações sobre Tom poderia ser armazenado em uma coleção chamada usuários. Mais documentos podem ser adicionados à coleção de usuários para armazenar informações sobre outros usuários. Por exemplo, o documento abaixo que armazena informações sobre Donna pode ser adicionado à coleção de usuários.

 

 

Observe que o documento de Donna não contém os mesmos campos que o documento de Tom. A coleção users está aproveitando um esquema flexível para armazenar as informações que existem para cada usuário.

Operações CRUD

Os bancos de dados de documentos geralmente possuem uma API ou linguagem de query que permite que os desenvolvedores executem as operações CRUD (criar, ler, atualizar e excluir).

  • Criar: documentos podem ser criados no banco de dados. Cada documento tem um identificador exclusivo.
  • Ler: Os documentos podem ser lidos do banco de dados. A API ou linguagem de query permite aos desenvolvedores fazer query de documentos usando seus identificadores exclusivos ou valores de campo. Os índices podem ser adicionados ao banco de dados para aumentar o desempenho de leitura.
  • Atualizar: Os documentos existentes podem ser atualizados — no todo ou em parte.
  • Excluir: os documentos podem ser excluídos do banco de dados.

Quais são os principais recursos dos bancos de dados de documentos?

Os bancos de dados de documentos têm os seguintes recursos principais:

O que torna os bancos de dados de documentos diferentes dos bancos de dados relacionais?

Três fatores importantes diferenciam os bancos de dados de documentos dos bancos de dados relacionais:

  1. A natureza intuitiva do modelo de dados: os documentos correspondem aos objetos no código, o que torna muito mais natural trabalhar com eles. Não há necessidade de dividir os dados entre tabelas, realizar junções dispendiosas ou integrar uma camada separada de mapeamento objeto-relacional (ORM). Os dados que são acessados juntos são armazenados juntos, de modo que os desenvolvedores tenham menos código para gravar e os usuários finais obtenham um desempenho mais alto.
  2. A onipresença dos documentos JSON: O JSON tornou-se um padrão estabelecido para intercâmbio e armazenamento de dados. Os documentos JSON são leves, independentes da linguagem e legíveis por humanos. Os documentos são um superconjunto de todos os outros modelos de dados, permitindo que os desenvolvedores estruturem os dados conforme as necessidades de suas aplicações: objetos complexos, pares de chave-valor, tabelas, dados geoespaciais e de séries temporais ou nós e arestas de um grafo.
  3. Flexibilidade do esquema: o esquema de um documento é dinâmico e autodescritivo, por isso os desenvolvedores não precisam defini-lo previamente no banco de dados. Os campos podem variar de um documento para outro. Os desenvolvedores podem modificar a estrutura a qualquer momento, evitando migrações de esquema disruptivas. Alguns bancos de dados de documentos oferecem validação de esquema para que você possa aplicar, opcionalmente, regras que regem a estrutura dos documentos.

Saiba mais sobre os bancos de dados NoSQL e relacionais.

Quanto mais fáceis são os documentos para trabalhar em comparação com as tabelas?

Os desenvolvedores normalmente consideram mais fácil e intuitivo trabalhar com dados em documentos do que com dados em tabelas. Os documentos são mapeados para estruturas de dados na maioria das linguagens de programação populares. Os desenvolvedores não precisam se preocupar em dividir manualmente os dados relacionados em várias tabelas ao armazená-los ou reuni-los ao recuperá-los. Eles também não precisam usar um ORM para manipular os dados para eles. Em vez disso, eles podem trabalhar facilmente com os dados diretamente em seus aplicativos.

Vamos dar outra olhada em um documento para um usuário chamado Tom.

Usuários

 

Todas as informações sobre Tom estão armazenadas em um único documento.

Agora, vamos ver como podemos armazenar essas mesmas informações em um banco de dados relacional. Vamos começar criando uma tabela que armazena as informações básicas sobre o usuário.

Usuários

IDfirst_nameemailcell
1Tomtom@example.com765-555-5555

Um usuário pode curtir várias coisas (o que significa que há um relacionamento um-para-muitos entre um usuário e suas curtidas), então criaremos uma nova tabela chamada "Curtidas" para armazenar as curtidas de um usuário. A tabela Curtidas terá uma chave estrangeira que faz referência à coluna ID na tabela Usuários.

Curtidas

IDuser_idlike
101fashion
111spas
121shopping

Da mesma forma, um usuário pode administrar várias empresas, então criaremos uma nova tabela chamada "Empresas" para armazenar as informações dessas empresas. A tabela de Empresas terá uma chave estrangeira que faz referência à coluna ID na tabela de Usuários.

Empresas

IDuser_idnamepartnerstatusdate_founded
201Entertainment 1080JeanBankrupt2011-05-19
211Swag for TweensNULLNULL2012-11-01

 

Neste exemplo simples, vemos que os dados sobre um usuário podem ser armazenados em um único documento em um banco de dados de documentos ou em três tabelas em um banco de dados relacional. Quando um desenvolvedor deseja recuperar ou atualizar informações sobre um usuário no banco de dados de documentos, ele pode escrever uma consulta sem junções. Interagir com o banco de dados é simples, e modelar os dados no banco de dados é intuitivo.

Visite Mapeamento de termos e conceitos do SQL para o MongoDB para saber mais.

Quais são os relacionamentos entre bancos de dados de documentos e outros bancos de dados?

O modelo de documentos é um superconjunto de outros modelos de dados, incluindo pares chave-valor, dados relacionais, objetos, grafos e dados geoespaciais.

Devido às suas ricas funcionalidades de modelagem de dados, os bancos de dados de documentos são bancos de dados de uso geral que podem armazenar dados para uma variedade de casos de uso.

Por que não usar apenas JSON em um banco de dados relacional?

Como os bancos de dados de documentos capacitam os desenvolvedores a criar com mais agilidade, a maioria dos bancos de dados relacionais adicionou suporte ao JSON. No entanto, adicionar simplesmente um tipo de dados JSON não traz os benefícios de um banco de dados com suporte nativo ao JSON. Por quê? Porque a abordagem relacional prejudica a produtividade do desenvolvedor, em vez de melhorá-la. Essas são algumas das coisas com as quais os desenvolvedores têm que lidar.

Extensões proprietárias

Trabalhar com documentos significa usar funções SQL personalizadas e específicas de fornecedores, que não são familiares à maioria dos desenvolvedores e não funcionam com suas ferramentas SQL favoritas. Ao adicionar drivers JDBC/ODBC de baixo nível e mapeadores objeto-relacionais (ORMs), você enfrenta processos de desenvolvimento complexos que resultam em baixa produtividade.

Tratamento de dados primitivos

A apresentação de dados JSON como strings e números simples, em vez dos tipos de dados avançados suportados por bancos de dados de documentos nativos como o MongoDB, torna a computação, a comparação e a classificação de dados complexas e propensas a erros.

Má qualidade dos dados e tabelas rígidas

Os bancos de dados relacionais oferecem poucos recursos para validar o esquema de documentos, por isso você não tem como aplicar controles de qualidade aos seus dados JSON. E ainda assim você precisa definir um esquema para seus dados tabulares regulares, com todas as sobrecargas extras envolvidas quando você precisa alterar suas tabelas conforme os recursos do seu aplicativo evoluem.

Baixo desempenho

A maioria dos bancos de dados relacionais não mantém estatísticas sobre dados JSON, o que impede que o planejador de consultas otimize as consultas a documentos e que você ajuste suas consultas.

Sem dimensionamento horizontal nativo

Os bancos de dados relacionais tradicionais não oferecem nenhuma maneira de particionar (fragmentar) o banco de dados em várias instâncias para permitir o dimensionamento à medida que as cargas de trabalho aumentam. Em vez disso, você precisa implementar a fragmentação por conta própria na camada de aplicação ou recorrer a sistemas caros de dimensionamento vertical.

Quais são os pontos fortes e fracos dos bancos de dados de documentos?

Os bancos de dados de documentos têm muitos pontos fortes:

  • O modelo de documento é onipresente, intuitivo e permite o rápido desenvolvimento de software.
  • O esquema flexível permite que o modelo de dados mude conforme os requisitos de um aplicativo mudam.
  • Os bancos de dados de documentos têm APIs avançadas e linguagens de query que permitem que os desenvolvedores interajam facilmente com seus dados.
  • Os bancos de dados de documentos são distribuídos (permitindo o dimensionamento horizontal, bem como a distribuição global de dados) e resilientes.

Esses pontos fortes fazem dos bancos de dados de documentos uma excelente escolha para um banco de dados de uso geral.

Uma fraqueza comum que as pessoas apontam nos bancos de dados de documentos é que muitos não oferecem suporte a transações ACID com vários documentos. Estimamos que 80%-90% das aplicações que usam o modelo de documentos não precisarão usar transações com vários documentos.

Observe que alguns bancos de dados de documentos, como o MongoDB, oferecem suporte a transações ACID com vários documentos.

Acesse O que são transações ACID? para saber mais sobre como o modelo de documentos elimina, em grande parte, a necessidade de transações com vários documentos e como o MongoDB oferece suporte a transações nos raros casos em que elas são necessárias.

Quais são os casos de uso para bancos de dados de documentos?

Os bancos de dados de documentos são bancos de dados de uso geral que servem a uma variedade de casos de uso para aplicações transacionais e analíticas:

  • Visão única ou hub de dados
  • Gerenciamento de dados de clientes e personalização
  • Internet das coisas (IoT) e dados de série temporal
  • Catálogos de produtos e gerenciamento de conteúdo
  • Processamento de pagamentos
  • Aplicativos móveis
  • Descarregamento de mainframe
  • Análise operacional
  • Análise em tempo real

Resumo

Os bancos de dados de documentos utilizam o modelo de dados de documentos intuitivo e flexível para armazenar dados. Os bancos de dados de documentos são bancos de dados de uso geral que podem ser usados para diversos casos de uso em setores.

Comece a usar bancos de dados de documentos criando um banco de dados no MongoDB Atlas, a plataforma de dados do MongoDB. O Atlas tem uma generosa camada grátis permanente que você pode usar para experimentar e explorar o document model.

Perguntas frequentes

Comece a usar o Atlas hoje mesmo

Comece em segundos. Nossos grupos gratuitos oferecem 512 MB de armazenamento para que você possa usar dados de amostragem e conhecer mais sobre a nossa plataforma.
Experimente grátisFale com a equipe de vendas
COMECE A USAR:
  • Mais de 125 regiões em todo o mundo
  • Amostragem de conjuntos de dados
  • Autenticação sempre ativada
  • Criptografia de ponta a ponta
  • Ferramentas de linha de comando