Noções básicas sobre documentos - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Noções básicas sobre documentos

Os bancos de dados de documentos são usados para armazenar dados semiestruturados como um documento em vez de normalizar dados em várias tabelas, cada uma com uma estrutura única e fixa, como em um banco de dados relacional. Os documentos armazenados em um banco de dados de documentos usam pares de chave/valor aninhados para fornecer a estrutura ou o esquema do documento. No entanto, diferentes tipos de documentos podem ser armazenados no mesmo banco de dados de documentos, atendendo assim ao requisito de processamento de dados semelhantes em formatos diferentes. Por exemplo, como cada documento é autodescritivo, os documentos codificados em JSON de um armazenamento on-line descritos no tópico Exemplo de documentos em um banco de dados de documentos podem ser armazenados no mesmo banco de dados de documentos.

Terminologia do SQL versus não relacional

A tabela a seguir compara a terminologia usada pelos bancos de dados de documentos (MongoDB) com a terminologia usada pelos bancos de dados SQL.

SQL MongoDB

Tabela

Coleta

Linha

Documento

Coluna

Campo

Chave primária

ObjectId

Índice

Índice

Visualizar

Visualizar

Tabela ou objeto aninhado

Documento incorporado

Array

Array

Documentos simples

Todos os documentos em um banco de dados de documentos são autodescritivos. Esta documentação usa documentos formatados como JSON, embora você possa usar outros meios de codificação.

Um documento simples tem um ou mais campos que estão todos no mesmo nível no documento. No exemplo a seguir, os campos SSN, LName, FName, DOB, Street, City, State-Province, PostalCode e Country são todos irmãos no documento.

{ "SSN": "123-45-6789", "LName": "Rivera", "FName": "Martha", "DOB": "1992-11-16", "Street": "125 Main St.", "City": "Anytown", "State-Province": "WA", "PostalCode": "98117", "Country": "USA" }

Quando as informações são organizadas em um documento simples, cada campo é gerenciado individualmente. Para recuperar o endereço de uma pessoa, é necessário recuperar Street, City, State-Province, PostalCode e Country como itens de dados individuais.

Documentos incorporados

Um documento complexo organiza os dados criando documentos incorporados no documento. Documentos incorporados ajudam a gerenciar dados em agrupamentos e como itens de dados individuais, o que for mais eficiente em um determinado caso. Usando o exemplo anterior, você poderia incorporar um documento Address no documento principal. Isso resulta na estrutura do documento a seguir:

{ "SSN": "123-45-6789", "LName": "Rivera", "FName": "Martha", "DOB": "1992-11-16", "Address": { "Street": "125 Main St.", "City": "Anytown", "State-Province": "WA", "PostalCode": "98117", "Country": "USA" } }

Agora, você pode acessar os dados no documento como campos individuais ("SSN":), como um documento incorporado ("Address":) ou como membro de um documento incorporado ("Address":{"Street":}).

Exemplo de documentos em um banco de dados de documentos

Como afirmado anteriormente, como cada documento em um banco de dados de documentos é autodescritivo, a estrutura dos documentos em um banco de dados de documentos pode ser diferente. Os dois documentos seguintes, um de um livro e o outro de um periódico, são estruturalmente diferentes. No entanto, ambos podem estar no mesmo banco de dados de documentos.

Veja a seguir um exemplo de documento de livro:

{ "_id" : "9876543210123", "Type": "book", "ISBN": "987-6-543-21012-3", "Author": { "LName":"Roe", "MI": "T", "FName": "Richard" }, "Title": "Understanding Document Databases" }

Veja a seguir um exemplo de documento de periódico com dois artigos:

{ "_id" : "0123456789012", "Publication": "Programming Today", "Issue": { "Volume": "14", "Number": "09" }, "Articles" : [ { "Title": "Is a Document Database Your Best Solution?", "Author": { "LName": "Major", "FName": "Mary" } }, { "Title": "Databases for Online Solutions", "Author": { "LName": "Stiles", "FName": "John" } } ], "Type": "periodical" }

Compare a estrutura desses dois documentos. Com um banco de dados relacional, você precisa de tabelas de "periódico" e de "livros" separadas ou de uma única tabela com campos não utilizados, como "Publicação", "Problema", "Artigos" e "MI", como valores null. Como os bancos de dados de documentos são semiestruturados, com cada documento definindo a própria estrutura, esses dois documentos podem coexistir no mesmo banco de dados de documentos sem campos null. Bancos de dados de documentos são ideais para lidar com dados esparsos.

O desenvolvimento em um banco de dados de documentos permite um desenvolvimento rápido e interativo. Isso ocorre porque você pode alterar a estrutura de dados de um documento dinamicamente, sem precisar alterar o esquema para toda a coleção. Os bancos de dados de documentos são adequados para o desenvolvimento ágil e para ambientes que mudam dinamicamente.

Noções básicas sobre normalização em um banco de dados de documentos

Bancos de dados de documentos não são normalizados; os dados encontrados em um documento podem ser repetidos em outro documento. Além disso, algumas discrepâncias de dados podem existir entre documentos. Por exemplo, considere o cenário em que você faz uma compra em um armazenamento on-line e todos os detalhes de suas compras são armazenados em um único documento. O documento pode ser semelhante ao documento JSON a seguir:

{ "DateTime": "2018-08-15T12:13:10Z", "LName" : "Santos", "FName" : "Paul", "Cart" : [ { "ItemId" : "9876543210123", "Description" : "Understanding Document Databases", "Price" : "29.95" }, { "ItemId" : "0123456789012", "Description" : "Programming Today", "Issue": { "Volume": "14", "Number": "09" }, "Price" : "8.95" }, { "ItemId": "234567890-K", "Description": "Gel Pen (black)", "Price": "2.49" } ], "PaymentMethod" : { "Issuer" : "MasterCard", "Number" : "1234-5678-9012-3456" }, "ShopperId" : "1234567890" }

Todas essas informações são armazenadas como um documento em uma coleção de transações. Mais tarde, você percebe que esqueceu de comprar um item. Então, você faz logon novamente na mesma loja e faz outra compra, que também é armazenada como outro documento na coleção de transações.

{ "DateTime": "2018-08-15T14:49:00Z", "LName" : "Santos", "FName" : "Paul", "Cart" : [ { "ItemId" : "2109876543210", "Description" : "Document Databases for Fun and Profit", "Price" : "45.95" } ], "PaymentMethod" : { "Issuer" : "Visa", "Number" : "0987-6543-2109-8765" }, "ShopperId" : "1234567890" }

Observe a redundância entre esses dois documentos seu nome e ID de comprador (e, se você usou o mesmo cartão de crédito, suas informações de cartão de crédito). Mas não tem problema, porque o armazenamento é barato e cada documento registra completamente uma única transação que pode ser recuperada rapidamente com uma consulta simples de chave/valor que não requer junções.

Existe também uma aparente discrepância entre os dois documentos as informações do seu cartão de crédito. Essa é apenas uma discrepância aparente porque é provável que você tenha usado um cartão de crédito diferente para cada compra. Cada documento é preciso em relação à transação que ele documenta.