Patrones de modelado para almacenes de documentos, clave-valor, columnas anchas, grafos y vectores — cuándo incrustar, referenciar, desnormalizar o agrupar en ventanas de tiempo.
Los almacenes NoSQL intercambian esquemas fijos y joins por escala horizontal. Cada familia modela las relaciones a su manera, así que el patrón de acceso — no la forma normal — dicta la estructura.
Tabla de referencia · 28 entradas
Modelado de datos NoSQLExplained
28 of 28 rows
Documentos
Subdocumentos anidados viven dentro de un documento padre en lugar de en tablas separadas.
Relaciones uno-a-pocos que se leen juntas. Un pedido con sus líneas. Un usuario con tres direcciones.
Guarda un id ajeno, no los datos. Se resuelve con una segunda lectura o un $lookup.
Subentidades grandes, compartidas o actualizadas de forma independiente. Enlaces muchos-a-muchos entre colecciones.
El padre incrusta un array corto de hijos; todo el conjunto cabe y se carga como un solo documento.
Un puñado de teléfonos o preferencias en un perfil. Una lectura devuelve padre e hijos.
Los hijos viven en su propia colección; cada hijo lleva el id del padre, o el padre mantiene un array de ids acotado.
Conjuntos demasiado grandes o independientes para incrustar. Consulta los hijos por id de padre.
El hijo almacena el id del padre; el padre nunca lista hijos porque el conjunto no tiene cota.
Eventos, logs o votos ligados a un host o usuario. Filtra los hijos por id de padre y pagina.
Documentos de distintos tipos de entidad comparten una colección, distinguidos por un campo de tipo.
Comentarios o notificaciones adjuntos a muchos tipos de padre, todos consultados por una sola vía.
Algunas entidades extremas se separan de la forma común para que su tamaño o tráfico no distorsione el resto.
Cuentas de celebridades cuyas listas de seguidores o contadores desbordarían el documento normal.
Cada revisión es un documento nuevo con el mismo id y un número de versión creciente; la consulta elige la última.
Pistas de auditoría e historiales de edición donde las revisiones viejas siguen consultables.
Los valores derivados se calculan al escribir y se guardan junto a los datos que resumen.
Totales, valoraciones y top-N que de otro modo ejecutarían una agregación en cada lectura.
Clave-valor y columnas anchas
Término de diseño de DynamoDB: colapsar muchos tipos de entidad en una tabla con claves de partición y de orden sobrecargadas.
Obtener elementos heterogéneos en una sola consulta sin join.
Un atributo de clave sirve a muchos tipos de entidad, marcado con prefijos como USER# u ORDER#.
Diseños de tabla única. Agrupa elementos relacionados bajo una partición y recupéralos en una consulta.
Una clave de partición reparte filas entre nodos; una clave de orden ordena cada partición.
Cassandra y DynamoDB. Escaneos de rango, logs ordenados, claves compuestas jerárquicas.
Apila varios atributos en una clave de orden delimitada — country#region#city — para que una coincidencia de prefijo recorra la jerarquía hacia abajo.
Jerarquías y filtros multifaceta. Una consulta de rango ordenada sustituye muchas búsquedas indexadas.
Agrupa eventos en ventanas fijas — hora, día, mes — bajo particiones o tablas dedicadas.
Métricas, logs y telemetría IoT. Acota el tamaño de partición y expira los datos fríos.
Duplica campos de lectura intensa entre registros para que una consulta nunca persiga una segunda búsqueda.
Cargas de lectura intensa donde la consistencia eventual es tolerable y el almacenamiento barato.
Un índice secundario sobre un atributo que solo algunos elementos llevan; los que no lo tienen jamás entran al índice.
Rutas de acceso alternativas. Encuentra el subconjunto disperso — pedidos abiertos, artículos sin enviar — sin un escaneo completo.
Escribe primero las consultas exactas; el diseño de la tabla se deriva de ellas, no de entidades ni de la forma normal.
Trabajo de esquemas en Cassandra y DynamoDB. Una tabla por familia de consultas; el modelo de datos copia la pregunta.
Una consulta debe golpear muchas particiones o nodos en paralelo porque ninguna clave responde a la pregunta.
Un olor que se diseña fuera, no una meta. Cambia las claves de la tabla para que la consulta común caiga en una sola partición.
Las copias se empujan a la vista de cada lector al escribir, o se reúnen y fusionan al leer.
Feeds y timelines. Fan-out en escritura para audiencias pequeñas, en lectura para enormes.
Un resultado de consulta preconstruido, almacenado como tabla propia y mantenido al día conforme cambia la base.
Formas de lectura alternativas sobre una sola ruta de escritura. Responde consultas que la tabla base no puede.
Grafos
Cada arista es una fila o tupla que apunta de un nodo origen a un nodo destino.
Almacenes de grafos y de propiedades. Búsquedas amigo-de-amigo, enrutado, recomendaciones.
Cada relación es un documento en su propia colección, con ids from y to más atributos del enlace.
Grafos en almacenes de documentos. Atributos en el propio enlace — valoración, rol, marca de tiempo.
Cada nodo guarda contadores izquierdo y derecho de un recorrido en profundidad; un subárbol vive dentro del rango de su padre.
Árboles de lectura intensa. Una consulta BETWEEN devuelve un subárbol; las inserciones renumeran el recorrido.
Una tabla dedicada registra cada par ancestro-descendiente, incluido cada nodo a profundidad cero.
Consultas de rama completa a cualquier profundidad. Joins sencillos, pagados en almacenamiento y mantenimiento.
Los grafos de propiedades adjuntan atributos clave-valor a nodos y aristas; RDF expresa todo como tripletas sujeto-predicado-objeto.
Grafos de propiedades para recorrido rico (Neo4j); RDF para datos enlazados abiertos e intercambio de ontologías.
Vectores
Un array de coma flotante de alta dimensionalidad junto a metadatos. Un índice ANN encuentra los vecinos más cercanos.
Búsqueda semántica, recuperación RAG, recomendaciones y similitud sobre contenido no estructurado.
Los documentos fuente se dividen — por tamaño, solapamiento o estructura — antes de incrustar cada fragmento por separado.
Calidad de recuperación RAG. El tamaño del chunk intercambia precisión por recall; el solapamiento protege frases partidas.
La similitud vectorial densa corre junto a la coincidencia de palabras clave; las dos listas ordenadas se fusionan en un resultado.
Consultas que necesitan términos exactos y significado a la vez, con filtros de metadatos encima.