Compartir a través de


Descripción de los modelos del almacén de datos

Los sistemas empresariales modernos administran volúmenes cada vez más grandes de datos heterogéneos. Esta heterogeneidad significa que un único almacén de datos no suele ser el mejor enfoque. En su lugar, a menudo es mejor almacenar diferentes tipos de datos en diferentes almacenes de datos, cada uno centrado en un patrón de uso o carga de trabajo específico. El término persistencia políglota se utiliza para describir soluciones que emplean una combinación de tecnologías de almacenamiento de datos. Por lo tanto, es importante comprender los principales modelos de almacenamiento y sus inconvenientes.

Seleccionar el almacén de datos adecuado para sus requisitos es una decisión de diseño clave. Hay literalmente cientos de implementaciones entre las bases de datos SQL y NoSQL. Los almacenes de datos suelen clasificarse por la forma en que estructuran los datos y los tipos de operaciones que admiten. En este artículo se describen varios de los modelos de almacenamiento más comunes. Tenga en cuenta que una tecnología de almacén de datos determinada puede admitir varios modelos de almacenamiento. Por ejemplo, un sistema de administración de bases de datos relacionales (RDBMS) también puede admitir almacenamiento de clave/valor o grafo. De hecho, hay una tendencia general hacia el denominado soporte multimodelo, en el que un único sistema de base de datos es compatible con varios modelos. Pero sigue siendo útil comprender los diferentes modelos en un nivel alto.

No todos los almacenes de datos de una categoría determinada proporcionan el mismo conjunto de características. La mayoría de los almacenes de datos proporcionan funcionalidad del lado servidor para consultar y procesar datos. A veces, esta funcionalidad está integrada en el motor de almacenamiento de datos. En otros casos, las funcionalidades de almacenamiento y procesamiento de datos están separadas y puede haber varias opciones para el procesamiento y el análisis. Los almacenes de datos también admiten diferentes interfaces de administración y programación.

Por lo general, debe empezar teniendo en cuenta qué modelo de almacenamiento es más adecuado para sus requisitos. A continuación, considere un almacén de datos determinado dentro de esa categoría, en función de factores como el conjunto de características, el costo y la facilidad de administración.

Nota

Obtenga más información sobre cómo identificar y revisar los requisitos del servicio de datos para adoptar la nube, en el Microsoft Cloud Adoption Framework para Azure. Del mismo modo, también puede obtener información en Revisión de las opciones de almacenamiento.

Sistemas de administración de bases de datos relacionales

Las bases de datos relacionales organizan los datos como una serie de tablas bidimensionales con filas y columnas. La mayoría de los proveedores proporcionan un dialecto del lenguaje de consulta estructurado (SQL) para recuperar y administrar datos. Un RDBMS suele implementar un mecanismo transaccionalmente coherente que se ajusta al modelo ACID (Atomic, Consistent, Isolated, Durable) para actualizar la información.

Un RDBMS normalmente admite un modelo de esquema en escritura, donde la estructura de datos se define con antelación y todas las operaciones de lectura o escritura deben usar el esquema.

Este modelo es muy útil cuando las garantías de coherencia fuerte son importantes, donde todos los cambios son atómicos, y las transacciones siempre dejan los datos en un estado coherente. Sin embargo, un RDBMS generalmente no puede escalar horizontalmente sin particionar los datos de alguna manera. Además, los datos de un RDBMS deben normalizarse, lo que no es adecuado para todos los conjuntos de datos.

Servicios de Azure

Carga de trabajo

  • Los registros se crean y actualizan con frecuencia.
  • Se deben completar varias operaciones en una sola transacción.
  • Las relaciones se imponen mediante restricciones de base de datos.
  • Los índices se usan para optimizar el rendimiento de las consultas.

Tipo de dato

  • Los datos están muy normalizados.
  • Los esquemas de base de datos son necesarios y se aplican.
  • Relaciones de muchos a muchos entre entidades de datos de la base de datos.
  • Las restricciones se definen en el esquema y se imponen a los datos de la base de datos.
  • Los datos requieren una integridad alta. Los índices y las relaciones deben mantenerse con precisión.
  • Los datos requieren una coherencia fuerte. Las transacciones funcionan de forma que garantiza que todos los datos sean 100% coherentes para todos los usuarios y procesos.
  • El tamaño de las entradas de datos individuales es pequeño a mediano.

Ejemplos

  • Administración del inventario
  • Administración de pedidos
  • Base de datos de informes
  • Contabilidad

Almacenes clave-valor

Un almacén de claves y valores asocia cada valor de datos a una clave única. La mayoría de los almacenes de claves y valores solo admiten operaciones simples de consulta, inserción y eliminación. Para modificar un valor (parcial o completamente), una aplicación debe sobrescribir los datos existentes para todo el valor. En la mayoría de las implementaciones, leer o escribir un valor único es una operación atómica.

Una aplicación puede almacenar datos arbitrarios como un conjunto de valores. La aplicación debe proporcionar cualquier información de esquema. El almacén de pares de clave-valor simplemente recupera o almacena el valor por clave.

Diagrama de un almacén de pares clave-valor

Los almacenes de claves y valores están altamente optimizados para las aplicaciones que realizan búsquedas simples, pero son menos adecuadas si necesita consultar datos en diferentes almacenes de claves y valores. Los almacenes de clave y valor tampoco están optimizados para realizar consultas por valor.

Un único almacén de claves y valores puede ser extremadamente escalable, ya que el almacén de datos puede distribuir fácilmente los datos entre varios nodos en máquinas independientes.

Servicios de Azure

Carga de trabajo

  • Se accede a los datos mediante una sola clave, como un diccionario.
  • No se necesitan combinaciones, bloqueos ni uniones.
  • No se usan mecanismos de agregación.
  • Por lo general, no se usan índices secundarios.

Tipo de dato

  • Cada clave está asociada a un valor único.
  • No hay ninguna aplicación del esquema.
  • No hay relaciones entre entidades.

Ejemplos

  • Almacenamiento en caché de datos
  • Administración de sesiones
  • Preferencias de usuario y administración de perfiles
  • Recomendación del producto y servicio de anuncios

Bases de datos de documentos

Una base de datos de documentos almacena una colección de documentos, donde cada documento consta de campos y datos con nombre. Los datos pueden ser valores simples o elementos complejos como listas y colecciones secundarias. Los documentos se recuperan mediante claves únicas.

Normalmente, un documento contiene los datos de una sola entidad, como un cliente o un pedido. Un documento puede contener información que se distribuiría entre varias tablas relacionales en un RDBMS. Los documentos no necesitan tener la misma estructura. Las aplicaciones pueden almacenar datos diferentes en documentos a medida que cambian los requisitos empresariales.

diagrama de un almacén de documentos

Servicio de Azure

Carga de trabajo

  • Las operaciones de inserción y actualización son comunes.
  • Sin desajuste de impedancia objeto-relacional. Los documentos pueden coincidir mejor con las estructuras de objeto usadas en el código de aplicación.
  • Los documentos individuales se recuperan y escriben como un solo bloque.
  • Los datos requieren índice en varios campos.

Tipo de dato

  • Los datos se pueden administrar de forma des normalizada.
  • El tamaño de los datos de documento individuales es relativamente pequeño.
  • Cada tipo de documento puede usar su propio esquema.
  • Los documentos pueden incluir campos opcionales.
  • Los datos del documento están semiestructurados, lo que significa que los tipos de datos de cada campo no se definen estrictamente.

Ejemplos

  • Catálogo de productos
  • Administración de contenido
  • Administración del inventario

Bases de datos de grafos

Una base de datos de grafos almacena dos tipos de información, nodos y bordes. Los bordes especifican relaciones entre nodos. Los nodos y bordes pueden tener propiedades que proporcionan información sobre ese nodo o borde, similar a las columnas de una tabla. Los bordes también pueden tener una dirección que indique la naturaleza de la relación.

Las bases de datos de grafos pueden realizar consultas de forma eficaz en la red de nodos y bordes y analizar las relaciones entre entidades. En el diagrama siguiente se muestra la base de datos de personal de una organización estructurada como gráfico. Las entidades son empleados y departamentos, y los bordes indican relaciones de informes y los departamentos en los que trabajan los empleados.

Diagrama de una base de datos de documentos

Esta estructura facilita la realización de consultas como "Buscar a todos los empleados que informan directamente o indirectamente a Sarah" o "Quién trabaja en el mismo departamento que John?" Para gráficos grandes con una gran cantidad de entidades y relaciones, puede realizar análisis muy complejos muy rápidamente. Muchas bases de datos de grafos proporcionan un lenguaje de consulta que puede usar para atravesar una red de relaciones de forma eficaz.

Servicios de Azure

Carga de trabajo

  • Relaciones complejas entre elementos de datos que implican muchos saltos entre elementos de datos relacionados.
  • La relación entre los elementos de datos es dinámica y cambia con el tiempo.
  • Las relaciones entre objetos son ciudadanos de primera clase, sin requerir claves externas ni combinaciones que recorrer.

Tipo de dato

  • Nodos y relaciones.
  • Los nodos son similares a las filas de tabla o a los documentos JSON.
  • Las relaciones son tan importantes como los nodos y se exponen directamente en el lenguaje de consulta.
  • Los objetos compuestos, como una persona con varios números de teléfono, tienden a dividirse en nodos independientes y más pequeños, combinados con relaciones transversales

Ejemplos

  • Organigramas
  • Gráficos sociales
  • Detección de fraudes
  • Motores de recomendaciones

Análisis de datos

Los almacenes de análisis de datos proporcionan soluciones paralelas masivas para ingerir, almacenar y analizar datos. Los datos se distribuyen entre varios servidores para maximizar la escalabilidad. Los formatos de archivo de datos de gran tamaño, como archivos delimitadores (CSV), parquet, y ORC se usan ampliamente en el análisis de datos. Normalmente, los datos históricos se almacenan en almacenes de datos como Blob Storage o azure Data Lake Storage Gen2, a los que azure Synapse, Databricks o HDInsight acceden a ellos como tablas externas. En el artículo Uso de tablas externas con Synapse SQL se describe un escenario típico en el que se usan los datos almacenados como archivos Parquet para el rendimiento.

Servicios de Azure

Carga de trabajo

  • Análisis de datos
  • BI empresarial

Tipo de dato

  • Datos históricos de varios orígenes.
  • Normalmente se desnormaliza en un esquema de "estrella" o "copo de nieve", que consta de tablas de hechos y dimensiones.
  • Normalmente se cargan con nuevos datos de forma programada.
  • Las tablas de dimensiones suelen incluir varias versiones históricas de una entidad, denominadas dimensión de variación lenta.

Ejemplos

  • Almacenamiento de datos empresariales

Bases de datos de familia de columnas

Una base de datos de familia de columnas organiza los datos en filas y columnas. En su forma más sencilla, una base de datos de familia de columnas puede aparecer muy similar a una base de datos relacional, al menos conceptualmente. La verdadera eficacia de una base de datos de familia de columnas se encuentra en su enfoque desnormalizado para estructurar datos dispersos.

Puede considerar que una base de datos de familia de columnas contiene datos tabulares con filas y columnas, pero las columnas se dividen en grupos conocidos como familias de columnas. Cada familia de columnas contiene un conjunto de columnas que están relacionadas lógicamente juntas y normalmente se recuperan o manipulan como una unidad. Otros datos a los que se accede por separado se pueden almacenar en familias de columnas independientes. Dentro de una familia de columnas, las nuevas columnas se pueden agregar dinámicamente y las filas se pueden dispersar (es decir, una fila no necesita tener un valor para cada columna).

En el diagrama siguiente se muestra un ejemplo con dos familias de columnas, Identity y Contact Info. Los datos de una sola entidad tienen la misma clave de fila en cada familia de columnas. Esta estructura, donde las filas de cualquier objeto determinado de una familia de columnas pueden variar dinámicamente, es una ventaja importante del enfoque de la familia de columnas, lo que hace que esta forma de almacén de datos sea muy adecuada para almacenar datos estructurados y volátiles.

Diagrama de una base de datos de familia de columnas

A diferencia de un almacén de clave/valor o una base de datos de documentos, la mayoría de las bases de datos de la familia de columnas almacenan datos en orden de clave, en lugar de calcular un hash. Muchas implementaciones permiten crear índices a través de columnas específicas en una familia de columnas. Los índices permiten recuperar datos por valor de columnas, en lugar de por clave de fila.

Las operaciones de lectura y escritura de una fila suelen ser atómicas con una sola familia de columnas, aunque algunas implementaciones proporcionan atomicidad en toda la fila, que abarca varias familias de columnas.

Servicios de Azure

Carga de trabajo

  • La mayoría de las bases de datos de familia de columnas realizan operaciones de escritura muy rápidamente.
  • Las operaciones de actualización y eliminación son poco frecuentes.
  • Diseñado para proporcionar un alto rendimiento y acceso de baja latencia.
  • Admite el acceso de consulta fácil a un conjunto determinado de campos dentro de un registro mucho mayor.
  • Altamente escalable.

Tipo de dato

  • Los datos se almacenan en tablas que constan de una columna de clave y una o varias familias de columnas.
  • Las columnas específicas pueden variar según las filas individuales.
  • Se accede a las celdas individuales a través de los comandos get y put
  • Se devuelven varias filas mediante un comando scan.

Ejemplos

  • Recomendaciones
  • Personalización
  • Datos del sensor
  • Telemetría
  • Mensajería
  • Análisis de redes sociales
  • Análisis web
  • Supervisión de actividades
  • Tiempo y otros datos de series temporales

Bases de datos del motor de búsqueda

Una base de datos del motor de búsqueda permite a las aplicaciones buscar información contenida en almacenes de datos externos. Una base de datos del motor de búsqueda puede indexar volúmenes masivos de datos y proporcionar acceso casi en tiempo real a estos índices.

Los índices pueden ser multidimensionales y pueden admitir búsquedas de texto libre en grandes volúmenes de datos de texto. La indexación se puede realizar mediante un modelo de extracción, desencadenado por la base de datos del motor de búsqueda o mediante un modelo de inserción, iniciado por código de aplicación externo.

La búsqueda puede ser exacta o aproximada. Una búsqueda aproximada busca documentos que coinciden con un conjunto de términos y calcula lo cerca que coinciden. Algunos motores de búsqueda también admiten el análisis lingüístico que puede devolver coincidencias basadas en sinónimos, expansiones de categorías (por ejemplo, la coincidencia de dogs con pets) y lematización (que coincide palabras con la misma raíz).

Servicio de Azure

Carga de trabajo

  • Índices de datos de varios orígenes y servicios.
  • Las consultas son ad hoc y pueden ser complejas.
  • Se requiere búsqueda de texto completo.
  • Se necesita una consulta de autoservicio ad-hoc.

Tipo de dato

  • Texto semiestructurado o no estructurado
  • Texto con referencia a datos estructurados

Ejemplos

  • Catálogos de productos
  • Búsqueda del sitio
  • Registro

Bases de datos de serie temporal

Los datos de serie temporal son un conjunto de valores organizados por tiempo. Las bases de datos de series temporales suelen recopilar grandes cantidades de datos en tiempo real de un gran número de orígenes. Las actualizaciones son poco frecuentes y las eliminaciones a menudo se realizan como operaciones masivas. Aunque los registros escritos en una base de datos de serie temporal suelen ser pequeños, a menudo hay un gran número de registros y el tamaño total de los datos puede crecer rápidamente.

Servicio de Azure

Carga de trabajo

  • Por lo general, los registros se anexan secuencialmente en orden de tiempo.
  • Una proporción de operaciones masiva (95-99 %) son las escrituras.
  • Las actualizaciones son poco frecuentes.
  • Las eliminaciones se producen de forma masiva y se realizan en bloques o registros contiguos.
  • Los datos se leen secuencialmente en orden de tiempo ascendente o descendente, a menudo en paralelo.

Tipo de dato

  • Una marca de tiempo se usa como clave principal y mecanismo de ordenación.
  • Las etiquetas pueden definir información adicional sobre el tipo, el origen y otra información sobre la entrada.

Ejemplos

  • Supervisión y telemetría de eventos.
  • Sensor u otros datos de IoT.

Almacenamiento de objetos

El almacenamiento de objetos está optimizado para almacenar y recuperar objetos binarios grandes (imágenes, archivos, secuencias de vídeo y audio, objetos de datos de aplicaciones grandes y documentos, imágenes de disco de máquina virtual). Los archivos de datos grandes también se usan popularmente en este modelo, por ejemplo, archivo delimitador (CSV), parquety ORC. Los almacenes de objetos pueden administrar cantidades extremadamente grandes de datos no estructurados.

Servicio de Azure

Carga de trabajo

  • Identificado por clave.
  • El contenido suele ser un recurso como un delimitador, una imagen o un archivo de vídeo.
  • El contenido debe ser duradero y externo a cualquier nivel de aplicación.

Tipo de dato

  • El tamaño de los datos es grande.
  • El valor es opaco.

Ejemplos

  • Imágenes, vídeos, documentos de oficina, ARCHIVOS PDF
  • HTML estático, JSON, CSS
  • Archivos de registro y auditoría
  • Copias de seguridad de bases de datos

Archivos compartidos

A veces, el uso de archivos planos simples puede ser el medio más eficaz de almacenar y recuperar información. El uso de recursos compartidos de archivos permite acceder a los archivos a través de una red. Dada la seguridad adecuada y los mecanismos de control de acceso simultáneos, el uso compartido de datos de esta manera puede permitir que los servicios distribuidos proporcionen acceso a datos altamente escalables para realizar operaciones básicas y de bajo nivel, como solicitudes de lectura y escritura simples.

Servicio de Azure

Carga de trabajo

  • Migración desde aplicaciones existentes que interactúan con el sistema de archivos.
  • Requiere la interfaz SMB.

Tipo de dato

  • Archivos de un conjunto jerárquico de carpetas.
  • Accesible con bibliotecas de E/S estándar.

Ejemplos

  • Archivos heredados
  • Contenido compartido accesible entre varias máquinas virtuales o instancias de aplicación

Con esta comprensión de los diferentes modelos de almacenamiento de datos, el siguiente paso es evaluar la carga de trabajo y la aplicación y decidir qué almacén de datos satisfacerá sus necesidades específicas. Use el árbol de decisión de almacenamiento de datos para ayudar con este proceso.

Pasos siguientes