MongoDB World is back in NYC June 7 - 9!

O que é um documento banco de dados?

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.

Exemplo de um documento JSON

Os bancos de dados de documentos oferecem uma variedade de vantagens, incluindo:

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

Devido a essas vantagens, os bancos de dados de documentos são bancos de dados de uso geral que podem ser utilizados em uma variedade de casos de uso e indústrias.

Bancos de dados de documentos são considerados não relacionais (ou NoSQL) databases. Instead of storing data in fixed rows and columns, document databases use flexible documents. Document databases are the most popular alternative to tabular, relational databases. Saiba mais sobre bancos de dados NoSQL.

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 seus metadados relacionados.

Os documentos armazenam dados em pares de campo e valor. Os valores podem ser de vários 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.

    {
         "_id": 1,
         "first_name": "Tom",
         "email": "tom@example.com",
    }
         "celular": "765-555-5555",
         "gostos": [
            "moda",
            "spas",
            "compras"
         ],
         "empresas": [
            {
               "nome": "Entretenimento 1080",
               "parceiro": "Jean",
               "situação": "Falido",
               "data_fundação": {
                  "$data": "2012-05-19T04:00:00Z"
               }
            },
            {
               "nome": "Swag para Adolescentes",
               "data_fundação": {
                  "$data": "2012-11-01T04:00:00Z"
               }
            }
         ]
      }

Coleções

Uma coleção é um grupo de documentos. As coleções geralmente armazenam documentos com conteúdos semelhantes.

Nem todos os documentos em uma coleção precisam ter os mesmos campos, pois os bancos de dados de documentos possuem esquemas flexíveis. Observe que alguns bancos de dados de documentos oferecem validação de esquema, permitindo que o esquema seja opcionalmente bloqueado quando necessário.

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

     {
     "_id": 2, 
     "first_name": "Donna", 
     "email": "donna@example.com",
     "cônjuge": "Joe", 
     "gostos": [ "spas", 
       "compras", 
         "live tweeting"
      ], 
     "empresas": [ 
     {
       "name": "Castle Realty",
       "status": "Próspera",
       "date_founded": { 
          "$date": "2013-11-21T04:00:00Z"
               }
            }
         ]
      }

Observe que o documento de Donna não contém os mesmos campos que o documento de Tom. A coleção users está utilizando 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 aos desenvolvedores realizar operações CRUD (criar, ler, atualizar e excluir).

  • Criar : Documentos podem ser criados no banco de dados. Cada documento tem um identificador único.
  • Leitura : Os documentos podem ser lidos do banco de dados. A API ou linguagem de query permite que os desenvolvedores consultem documentos usando seus identificadores únicos ou valores de campo. Índices podem ser adicionados ao banco de dados para melhorar o desempenho de leitura.
  • Atualizar : Documentos existentes podem ser atualizados — seja no todo ou em parte.
  • Excluir : Documentos podem ser removidos do banco de dados.

Quais são as principais características dos bancos de dados de documentos?

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

  • Modelo de documento: Os dados são armazenados em documentos (ao contrário de outros bancos de dados que armazenam dados em estruturas como tabelas ou grafos). Documentos são mapeados para objetos nas linguagens de programação mais populares, permitindo que os desenvolvedores criem rapidamente seus aplicativos.
  • Esquema flexível : Bancos de dados de documentos possuem esquemas flexíveis, o que significa que nem todos os documentos em uma coleção precisam ter os mesmos campos. Note que alguns bancos de dados de documentos suportam validação de esquema, de modo que o esquema pode ser opcionalmente bloqueado.
  • Distribuídos e resilientes: Bancos de dados de documentos são distribuídos, permitindo escalonamento horizontal (geralmente mais econômico que o vertical) e distribuição de dados. Bancos de dados de documentos oferecem resiliência através da replicação.
  • Consultando através de uma API ou linguagem de query: Bancos de dados de documentos possuem uma API ou uma linguagem de query que permite aos desenvolvedores executar as operações CRUD no banco de dados. Os desenvolvedores têm a capacidade de query por documentos com base em identificadores exclusivos ou valores de campo.

O que diferencia os bancos de dados de documentos dos bancos de dados relacionais?

Três fatores principais diferenciam bancos de dados de documentos de bancos de dados relacionais:

  1. A intuitividade do modelo de dados: Os documentos são mapeados para os objetos no código, tornando-os muito mais naturais para trabalhar. Não há necessidade de decompor dados em tabelas, executar junções caras ou integrar uma camada separada de Mapeamento Objeto-Relacional (ORM). Dados que são acessados juntos são armazenados juntos, então os desenvolvedores têm menos código para escrever e os usuários finais obtêm maior desempenho.

  2. A ubiquidade dos documentos JSON: JSON tornou-se um padrão estabelecido para a troca e armazenamento de dados. Os documentos JSON são leves, independentes de linguagem e fáceis de ler por humanos. 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 ricos, pares chave-valor, tabelas, dados geoespaciais e de série temporal, ou os nós e arestas de um grafo.

  3. A flexibilidade do esquema: O esquema de um documento é dinâmico e autodescritivo, de modo que os desenvolvedores não precisam predefini-lo 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 que causem interrupções. Alguns bancos de dados de documentos oferecem validação de esquema para que você possa opcionalmente forçar regras que governam as estruturas dos documentos.

Saiba mais sobre bancos de dados NoSQL versus bancos de dados relacionais.

Quão mais fáceis são os documentos para trabalhar do que as tabelas?

Os desenvolvedores geralmente consideram que trabalhar com dados em documentos é mais fácil e intuitivo do que trabalhar 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 dados relacionados em várias tabelas ao armazená-los ou em uni-los novamente ao recuperá-los. Eles também não precisam usar um ORM para manipular os dados por eles. Em vez disso, eles podem facilmente trabalhar com os dados diretamente em seus aplicativos.

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

Usuários

    {
         "_id": 1,
         "first_name": "Tom",
         "email": "tom@example.com",
    }
         "celular": "765-555-5555",
         "gostos": [
            "moda",
            "spas",
            "compras"
         ],
         "empresas": [
            {
               "nome": "Entretenimento 1080",
               "parceiro": "Jean",
               "situação": "Falido",
               "data_fundação": {
                  "$data": "2012-05-19T04:00:00Z"
               }
            },
            {
               "nome": "Swag para Adolescentes",
               "data_fundação": {
                  "$data": "2012-11-01T04:00:00Z"
               }
            }
         ]
      }

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

Agora vamos considerar como podemos armazenar essas mesmas informações em um relational database. Iniciaremos criando uma tabela que armazena as informações básicas do usuário.

Usuários

IDfirst_namee-mailcélula
1Tomtom@example.com765-555-5555

Um usuário pode gostar de muitas coisas (o que significa que há um relacionamento um-para-muitos entre um usuário e as curtidas), então criaremos uma nova tabela chamada "Likes" para armazenar as curtidas de um usuário. A tabela Likes terá uma chave estrangeira que referencia a coluna ID na tabela Usuários.

Curtidas

IDuser_idsemelhante a
101maneira
111spas
121compras

Da mesma forma, um usuário pode executar muitos negócios, então criaremos uma nova tabela chamada "Negócios" para armazenar informações de negócios. A tabela Empresas terá uma chave estrangeira que referencia a coluna ID na tabela Usuários.

Empresas

IDuser_idNomeparceiroStatusdata_de_fundação
201Porta 1080 de EntretenimentoJeanFalência2011-05-19
211Swag para pré-adolescentesZeroZero2012-11-01

Neste exemplo simples, observamos que os dados de 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 developer deseja recuperar ou atualizar informações sobre um usuário no banco de dados de documentos, ele pode gravar uma query sem joins. A interação com o banco de dados é direta, e modelar os dados no banco de dados é intuitivo.

Visite Mapeamento de Termos e Conceitos do SQL para o MongoDB para aprender mais.

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

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

  • Pares chave-valor podem ser modelados com campos e valores em um documento. Qualquer campo em um documento pode ser indexado, oferecendo aos desenvolvedores flexibilidade adicional na consulta dos dados.
  • Dados relacionais podem ser modelados de maneira diferente (e alguns diriam de forma mais intuitiva) ao manter dados relacionados juntos em um único documento usando documentos incorporados e arrays. Dados relacionados também podem ser armazenados em documentos separados, e referências de banco de dados podem ser usadas para conectar os dados relacionados.
  • Os documentos são mapeados para objetos nas linguagens de programação mais populares.
  • Nós e/ou arestas do grafo podem ser modelados como documentos. As arestas também podem ser modeladas através de database references. Graph queries can be run using operations like $graphLookup.
  • Os dados geoespaciais podem ser modelados como matrizes em documentos.

Um diagrama de quatro níveis:
1. Modelo de documento
2. Pares chave-valor, relacionais, objetos, grafos, geoespacial
3. Interface unificada
4. Análise transacional, de pesquisa, móvel, em tempo real, Data Lake O modelo de documento é um superconjunto de outros modelos de dados

Devido às suas ricas capacidades de modelagem de dados, os bancos de dados de documentos são bancos de dados de propósito 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?

Com os bancos de dados de documentos capacitando os desenvolvedores a construir mais rapidamente, a maioria dos bancos de dados relacionais adicionou suporte para JSON. No entanto, a simples adição de um tipo de dados JSON não oferece os benefícios de um banco de dados com suporte nativo para JSON. Por quê? Porque a abordagem relacional reduz a produtividade do desenvolvedor, em vez de aumentá-la. Essas são algumas das questões que os desenvolvedores precisam enfrentar.


Extensões proprietárias

Trabalhar com documentos implica o uso de funções SQL personalizadas e específicas de fornecedores, que não são familiares para a maioria dos desenvolvedores e não funcionam com suas ferramentas SQL preferidas. Adicione drivers JDBC/ODBC de baixo nível e ORMs e você enfrentará processos de desenvolvimento complexos, resultando em baixa produtividade.


Manipulação de dados primitivos

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


Qualidade de dados ruim e tabelas rígidas

Os bancos de dados relacionais oferecem pouco para validar o esquema dos documentos, então você não tem como aplicar controles de qualidade aos seus dados JSON. E você ainda precisa definir um esquema para seus dados tabulares regulares, com toda a sobrecarga adicional envolvida quando precisar alterar suas tabelas à medida que 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 o planejador de consultas de otimizar consultas em documentos e você de ajustar suas consultas.


Sem escalabilidade nativa

Os bancos de dados relacionais tradicionais não oferecem uma maneira de particionar (fragmentar) o banco de dados em várias instâncias para escalar à medida que as cargas de trabalho aumentam. Em vez disso, você precisa implementar a fragmentação na camada de aplicação ou contar com sistemas de escalonamento caros.

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

Os bancos de dados de documentos possuem muitas vantagens:

  • O modelo de documento é onipresente, intuitivo e permite o desenvolvimento rápido de software.
  • O esquema flexível permite que o modelo de dados seja alterado conforme os requisitos de um aplicativo mudam.
  • Os bancos de dados de documentos possuem APIs ricas e linguagens de query que permitem aos desenvolvedores interagir facilmente com seus dados.
  • Os bancos de dados de documentos são distribuídos (permitindo escalonamento horizontal, bem como 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 propósito geral.

Uma fraqueza comum que as pessoas mencionam sobre bancos de dados de documentos é que muitos não suportam transações ACID multidocumentos. Estimamos que 80% a 90% dos aplicativos que utilizam o modelo de documento não precisarão usar transações multidocumento.

Observe que alguns bancos de dados de documentos, como o MongoDB, suportam transações ACID multidocumento.

Visite O que são transações ACID? para aprender mais sobre como o document model geralmente elimina a necessidade de transações multidocumento e como o MongoDB suporta transações nos raros casos em que são necessárias.

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

Bancos de dados de documentos são bancos de dados de uso geral que servem a uma variedade de casos de uso para aplicativos transacionais e analíticos:

  • Aplicação de visualização individual ou hub de dados
  • Gerenciamento de dados de clientes e personalização
  • Internet das coisas (IoT) e dados de séries temporais
  • 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

Visite Orientação de Caso de Uso: Onde Usar o MongoDB para aprender mais sobre cada um dos aplicativos listados acima.

Resumo

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

Inicie com bancos de dados de documentos criando um banco de dados no MongoDB Atlas, a plataforma de dados para desenvolvedores do MongoDB. O Atlas possui uma camada grátis permanente que você pode usar para experimentar e explorar o modelo de documento.

Experimente o poder do documento gratuitamente com nossos dados de amostra em MongoDB Atlas

perguntas frequentes

Para que serve o documento banco de dados?

Bancos de dados de documentos são bancos de dados de propósito geral que podem ser utilizados em uma variedade de casos de uso em diversos setores. Visite Quando usar NoSQL para aprender mais.

O site MongoDB é um documento de banco de dados?

Sim, o MongoDB é um documento de banco de dados de uso geral.

Qual é um exemplo de um documento de banco de dados?

O MongoDB é o banco de dados de documentos mais popular do mundo. Outros exemplos de bancos de dados de documentos incluem CouchDB e Firebase.

Como funciona o documento banco de dados?

documento banco de dados armazenar informações em um documento. O documento banco de dados tem a rica API e a linguagem de query que podem ser usadas para executar as operações CRUD (criar, ler, atualizar e excluir). Eles têm esquemas flexíveis, permitindo que o desenvolvedor evolua facilmente seu modelo de dados à medida que os requisitos de aplicação mudam.

Como os documentos são armazenados em um banco de dados?

Documento banco de dados armazenar informações em um documento. Em geral, cada documento contém informações sobre um objeto e quaisquer metadados relacionados. Documentos com conteúdo semelhante são agrupados em uma coleção. Os grupos de coleção são armazenados no banco de dados.

Qual campo é sempre o primeiro campo em um documento?

No MongoDB, o primeiro campo em cada documento é nomeado _id. O campo _id serve como um identificador exclusivo para o documento. Consulte a documentação oficial do MongoDB para obter mais informações.

Observe que cada sistema de gerenciamento de banco de dados de documentos possui seus próprios requisitos de campo.

Como os dados do MongoDB são armazenados?

O MongoDB armazena dados em documentos BSON (JSON binário).

O uso do MongoDB é gratuito?

Sim, o MongoDB possui duas opções gratuitas:

documento banco de dados vs. relational database

A diferença mais óbvia entre um documento de banco de dados e um relational database é a forma como os dados são modelados. O documento banco de dados normalmente modela os dados usando o documento flexível JSON-like documento with campo-value pairs. relational database Normalmente, os dados do modelo usam tabelas rígidas com linhas e colunas fixas.