Estrategia de almacenamiento de datos
El estado actual de la tecnología informática es que es posible almacenar cantidades casi infinitas de datos. Como consecuencia de esto, la necesidad de eliminar datos para liberar espacio para los nuevos queda prácticamente eliminada.
Esto ofrece muchas ventajas, comenzando por la relación natural de datos y objetos que describen, ya que existen leyes de conservación en la naturaleza, lo mismo debería aplicarse a los datos que reflejan objetos naturales, y termina con la excepción de problemas puramente tecnológicos relacionados con la integridad de datos en tiempo
Por lo tanto, la estrategia de almacenamiento debe basarse en el paradigma de eliminación "suave", que consiste en marcar los datos como perdidos de relevancia desde cierto punto en el tiempo.
Lo mismo se aplica exactamente a los cambios de datos. Las actualizaciones no deben sobrescribir los datos anteriores, sino indicar que, a partir de un cierto punto en el tiempo, los datos tienen diferentes significados.
Si realmente desea liberar espacio limpiando los almacenamientos de los datos no utilizados, puede aplicar la estrategia de comprimir los almacenamientos haciendo una copia del mismo sobrescribiendo solo los datos relevantes en algún momento en el pasado.
Estas consideraciones no son nuevas, ya que ya están implementadas en grandes almacenes de datos como Hadoop.
Formato de almacenamiento de datos
Los datos que reflejan ciertas entidades, como regla, son un conjunto de atributos, cuya composición refleja las características necesarias de la entidad. Para simplificar, asumimos que estamos hablando de un modelo relacional que consiste en tuplas.
Por lo tanto, los datos se almacenan en forma de tuplas de cierto tipo, que con el tiempo pueden cambiar y perder relevancia.
También queremos decir que los grandes almacenes de Big Data a menudo tienen una estructura clave-valor con un índice primario por clave y posibles índices opcionales por otros atributos.
Dadas estas consideraciones, se propone el siguiente formato de almacenamiento de datos.
Me gustaría señalar de inmediato que este formato no es único, sino que está inspirado en la estructura de almacenamiento de datos en objetos 1C bajo el nombre "Registrarse". Pero en este desarrollo, se propone hacer que el formato sea universal y almacenar todos los datos en él.
Por lo tanto, proponemos un formato para registrar datos sobre entidades y sus atributos, basado en el concepto de un flujo de trabajo basado en las siguientes definiciones:
- Una operación es un cambio atómico en una entidad de datos.
- Una entidad consta de atributos.
- Una entidad tiene un tipo que determina la composición de sus atributos.
- Las entidades del mismo tipo se almacenan en un solo hilo.
- Flujo de trabajo: un objeto de almacenamiento de la tabla de tipos donde se ubican las operaciones relacionadas con entidades del mismo tipo y que cambian su estado.
En consecuencia, cada operación consta de un encabezado de operación y un conjunto de atributos que dependen del tipo de entidad:
- OpID: identificador único de la operación
- OpTS - marca de tiempo de operación
- OpType - tipo de operación
- OpClass - nombre de la secuencia
- OpUser: usuario del sistema que emitió el comando
- OpDoc - documento de operación, es decir, el documento que lo creó puede no estar instalado
- OpComment - comentario de operación
- ID: identificador de la entidad con la que se relaciona la operación
- Parámetros: atributos de operación dependientes del flujo
Los OpID y los ID pueden ser cualquier cosa, pero por ahora, podría tener sentido usar un UID.
Lo más probable es que el OpTS sea de tipo de marca de tiempo, pero complementado por un índice ordinal, si varias operaciones caen dentro del mismo período de tiempo para garantizar un orden único de operaciones.
OpType puede ser de cualquier tipo, por ejemplo, uno / varios caracteres o un número.
OpClass, OpUser y OpComment pueden ser una cadena o alguna referencia a un directorio.
OpDoc proporciona un enlace al documento, pero puede estar ausente. Esta es una conexión con el nivel superior.
Las operaciones se dividen en básicas y de servicio.
Operaciones básicas
Operaciones básicas 3: agregar, actualizar, eliminar:
- Operación "A" add - establece la creación de instancias de una nueva entidad de cierto tipo y establece un conjunto de atributos.
- Actualización de la operación "U": detecta un cambio en una entidad de cierto tipo y establece nuevos valores para un conjunto específico de atributos.
- Eliminación de la operación "D": establece el final de la realidad de una entidad de cierto tipo.
Las operaciones A y U pueden establecer no todos los atributos, sino solo algunos. Esos atributos que no están establecidos por esta operación pueden tener un valor de tipo NULL, o algún otro valor especial, que por el momento aún no está disponible, pero sería bueno crearlo.
Como resultado, el valor real de los atributos de la entidad en un punto particular en el tiempo requiere su cálculo buscando hacia atrás, seleccionando todos los atributos que difieren del valor especial (no establecido).
Al emitir la operación U, el sistema debe verificar la presencia de la operación A para esta entidad y, si está ausente, cambiar el tipo de operación a A.
La operación D cierra la existencia de una determinada entidad, y cuando solicita valores de atributo para esta entidad con un punto de relevancia después de esta operación, los valores "no establecidos" deben devolverse para todos los atributos de esta entidad. Al emitir la operación D, el sistema debe verificar la presencia de la operación A para esta entidad y, si está ausente, negarse a guardar el comando D.
Como característica adicional, esta estructura de operaciones le permite organizar el almacenamiento de una entidad con la misma ID con diferentes atributos en diferentes momentos, no solo en función de los atributos, sino también de toda la entidad. Es decir, podemos tener varios bloques AN * UD en los que la entidad existe, y entre D y A no existe.
Operaciones de servicio
Las operaciones de servicio pueden ser muchas y su composición puede reponerse. Como ejemplo, se pueden hacer varias consideraciones:
- La operación "N" es una operación no válida: el sistema debe ignorar esta operación. Puede cambiar otros tipos de operaciones a N para excluirlos del trabajo.
- Operación "C" caché: esta operación se puede crear con una cierta frecuencia y almacenar valores de atributos en un punto específico en el tiempo para reducir el costo de buscar en profundidad los valores de los atributos. Los detalles de los parámetros de operación se pueden almacenar, por ejemplo, en un comentario o en el código de operación mismo. Por supuesto, al aplicar operaciones básicas, las operaciones de tipo C deben recalcularse o reemplazarse por N.
- Operaciones de grupo de operación "S": esta operación se puede crear con una cierta frecuencia y almacenar valores de grupo (por ejemplo, sumas, promedios, etc.) de atributos de tipos numéricos durante un período determinado. Los detalles de los parámetros de operación se pueden almacenar, por ejemplo, en un comentario o en el código de operación mismo. Por supuesto, al aplicar operaciones básicas, las operaciones de tipo S deben recalcularse o reemplazarse por N.
- Atributos del grupo de la operación "G": esta operación puede ser similar a U, pero al mismo tiempo, ciertos comandos del sistema emitirán no un valor de atributo, sino varios. Un valor de atributo por operación A / U, los valores restantes, en la operación G, que se encuentran entre A / U adyacentes.
Las operaciones de servicio son opcionales, pero pueden proporcionar un servicio adicional al sistema de almacenamiento y mejorar su rendimiento. Su composición puede ser diferente para diferentes sistemas.