Estoy leyendo sobre el abastecimiento de eventos y tengo una pregunta sobre la persistencia.
Todavía puedo tener un DB con todas las entidades, ¿verdad? ¿O deberían repetirse los eventos cada vez que se inicia la aplicación para obtener la última versión de cada entidad en la memoria? ¿Parece un desperdicio en sistemas más grandes (como en una gran cantidad de datos)?
El punto con el abastecimiento de eventos es que puedo reproducir los eventos para llenar un almacén de datos si es necesario. (o analizar los datos)
fuente
Se beneficiará al máximo del abastecimiento de eventos cuando decida cambiar también la arquitectura de su sistema. Ir hacia una arquitectura de estilo CQRS combinada con DDD traerá los verdaderos beneficios de una fuente de eventos, al menos en mi opinión.
Crear una tienda de eventos que se comporte bien en sistemas grandes no es una tarea fácil. Reproducción de todos los datos puede ser costoso, depende mucho de la cantidad de datos que necesita reproducirse. Pero existen técnicas que pueden ayudarlo con esto, una de ellas es el concepto de una instantánea. La repetición se realiza solo desde cierto punto en adelante. Las ventajas que una tienda de eventos aporta a su sistema son invaluables. Teniendo todo lo que sucedió en su sistema reproducible, todos los datos en cada momento son una gran cosa. Piense en el análisis, en la reproducción de errores, en las estadísticas.
Hay muchas tiendas de eventos geniales, la última fue lanzada ayer Event Store y parece una muy buena.
La base de datos tradicional se puede mantener para la parte de consulta de su sistema para construir DTO con los datos solicitados. Esta base de datos se puede organizar y optimizar teniendo en cuenta las necesidades de consulta de su aplicación y clientes.
Escribí un artículo detallado sobre cuáles son los beneficios y cómo se ve realmente una arquitectura CQRS combinada con el abastecimiento de eventos. Puede consultar CQRS, Eventos de dominio y revisión DDD .
fuente
La respuesta depende de los requisitos de su aplicación. Lo he visto hecho en ambos sentidos.
Un paquete de software extremadamente exitoso para pequeñas empresas de contabilidad lee su registro CQRS cada vez que se inicia. La cantidad bruta de datos era relativamente pequeña, por lo que el tiempo de inicio fue inferior a un minuto incluso en computadoras más lentas. Han estado haciendo CQRS durante más de una década antes de que la práctica se hiciera popular. Sabían que estaban haciendo algo bueno cuando se dieron cuenta de que pueden actualizar sus datos de clientes una y otra vez sin tener problemas que ven con sus sistemas más grandes.
En sistemas con grandes volúmenes de datos y / o sistemas que dependen de la funcionalidad RDBMS para implementar el lado de consulta, tiene una base de datos para la "vista actual" de los datos de origen de eventos (incluso puede tener múltiples vistas de este tipo). La ventaja de este enfoque es que le permite construir el lado de la consulta utilizando las tecnologías familiares.
fuente