Skip to content

Modelação de Dados NoSQL explicados

Padrões de modelação para documentos, chave-valor, coluna larga, grafos e vector stores — quando incorporar, referenciar, desnormalizar ou agrupar.

As lojas NoSQL trocam esquemas fixos e joins por escala horizontal. Cada família modela relações à sua maneira, pelo que o padrão de acesso — não a forma normal — dita a estrutura.

Tabela de referência · 28 entradas
28 of 28 rows
Documento
Subdocumentos aninhados vivem dentro de um documento pai, em vez de tabelas separadas.Relações um-para-poucos lidas em conjunto. Um pedido com as suas linhas. Um utilizador com três endereços.
Guarda um id externo, não os dados. Resolve-o com uma segunda leitura ou um $lookup.Subentidades grandes, partilhadas ou atualizadas de forma independente. Ligações muitos-para-muitos entre coleções.
O pai incorpora um array curto de filhos; o conjunto inteiro cabe e carrega como um documento.Um punhado de números de telefone ou preferências num perfil. Uma leitura devolve pai e filhos.
Os filhos vivem na própria coleção; cada filho traz o id do pai, ou o pai mantém um array de ids limitado.Conjuntos grandes demais ou independentes demais para incorporar. Consultar filhos por id do pai.
O filho guarda o id do pai; o pai nunca lista filhos porque o conjunto é ilimitado.Eventos, logs ou votos ligados a um host ou utilizador. Filtrar filhos por id do pai e paginar.
Documentos de tipos de entidade diferentes partilham uma coleção, distinguidos por um campo de tipo.Comentários ou notificações anexados a muitos tipos de pai, todos consultados da mesma forma.
Algumas entidades extremas são separadas da forma partilhada para que o seu tamanho ou tráfego não distorça o resto.Contas de celebridades cujas listas de seguidores ou contadores cresceriam para além do documento normal.
Cada revisão é um novo documento com o mesmo id e um número de versão crescente; a consulta escolhe a última.Trilhos de auditoria e histórico de edições onde revisões antigas continuam consultáveis.
Valores derivados são calculados no momento da escrita e guardados junto aos dados que resumem.Totais, classificações e top-N que caso contrário correriam uma agregação em cada leitura.
Chave-valor e coluna larga
Termo de desenho DynamoDB: colapsar muitos tipos de entidade numa tabela com partition e sort keys sobrecarregadas.Obter itens heterogéneos numa única consulta sem join.
Um atributo-chave serve muitos tipos de entidade, marcado por prefixos como USER# ou ORDER#.Desenhos de tabela única. Agrupar itens relacionados numa partição e obtê-los numa consulta.
Uma partition key distribui linhas pelos nós; uma sort key ordena cada partição.Cassandra e DynamoDB. Pesquisas de intervalo, logs ordenados, chaves compostas hierárquicas.
Empilha vários atributos numa sort key delimitada — country#region#city — para uma correspondência de prefixo descer a hierarquia.Hierarquias e filtros multifacetados. Uma consulta ordenada de intervalo substitui muitas pesquisas indexadas.
Agrupa eventos em janelas fixas — hora, dia, mês — sob partições ou tabelas dedicadas.Métricas, logs e telemetria IoT. Limita o tamanho da partição e arrefece dados frios.
Duplica campos muito lidos entre registos para que uma consulta nunca persiga uma segunda pesquisa.Cargas de leitura intensa onde a consistência eventual é tolerável e o armazenamento é barato.
Um índice secundário construído sobre um atributo que só alguns itens têm; itens sem ele nunca entram no índice.Caminhos de acesso alternativos. Encontrar o subconjunto esparso — pedidos abertos, itens não expedidos — sem uma pesquisa completa.
Escreve primeiro as consultas exatas; o layout da tabela deriva delas, não de entidades ou forma normal.Trabalho de esquema Cassandra e DynamoDB. Uma tabela por família de consultas; o modelo de dados copia a pergunta.
Uma consulta tem de atingir muitas partições ou nós em paralelo porque nenhuma chave corresponde à pergunta.Um mau cheiro a eliminar, não um objetivo. Rechaveie a tabela para que a consulta comum caia numa partição.
Cópias são empurradas para a vista de cada leitor no momento da escrita, ou reunidas e fundidas no momento da leitura.Feeds e cronologias. Fan-out na escrita para audiências pequenas, na leitura para audiências enormes.
Um resultado de consulta pré-construído guardado como a sua própria tabela, mantido atual à medida que a base muda.Formas de leitura alternativas sobre um caminho de escrita. Serve consultas que a tabela base não consegue responder.
Grafo
Cada aresta é uma linha ou tuple que aponta de um nó de origem para um nó de destino.Grafos e property stores. Pesquisas amigo-de-amigo, encaminhamento, recomendações.
Cada relação é um documento na própria coleção, com ids de origem e destino mais atributos da ligação.Grafos em document stores. Atributos na própria ligação — classificação, papel, marca temporal.
Cada nó guarda contadores esquerdo e direito de uma travessia em profundidade; uma subárvore vive dentro do intervalo do pai.Árvores de leitura intensa. Uma consulta BETWEEN devolve uma subárvore; inserções renumeram a travessia.
Uma tabela dedicada regista cada par ancestral-descendente, incluindo cada nó à profundidade zero.Consultas de ramo inteiro a qualquer profundidade. Joins simples, pagos em armazenamento e manutenção.
Property graphs anexam atributos chave-valor a nós e arestas; RDF afirma tudo como triplos sujeito-predicado-objeto.Property graphs para travessia rica (Neo4j); RDF para dados abertos ligados e troca de ontologias.
Vetor
Um array de floats de alta dimensão fica junto aos metadados. Um índice ANN encontra os vizinhos mais próximos.Pesquisa semântica, recuperação RAG, recomendações e semelhança sobre conteúdo não estruturado.
Os documentos-fonte são divididos — por tamanho, sobreposição ou estrutura — antes de cada peça ser incorporada por si.Qualidade de recuperação RAG. O tamanho do chunk troca precisão por revocação; a sobreposição protege frases divididas.
A semelhança vetorial densa corre ao lado da correspondência por palavras-chave; as duas listas ranqueadas fundem-se num resultado.Consultas que precisam de termos exatos e significado ao mesmo tempo, com filtros de metadados por cima.