我正在寻找有关如何选择NoSQL数据库引擎以将所有事件存储在CQRS设计的应用程序中的良好且最新的“决策帮助”说明。
我目前是NoSQL的所有事物的新手(但是正在学习):请明确表示,不要犹豫,以(几乎太多)精确的方式解释您的观点。这个帖子可能值得其他像我这样的新来者。
该数据库将:
能够在前视图要求的每个更新中插入2到10行(在我的情况下,经常更新)。考虑每分钟数千次更新,它将如何扩展?
至关重要的是,必须保持一致并确保故障安全,因为事件是应用程序真相的来源
不需要实体之间的任何链接(就像RDBMS一样),除了用户ID / GUID(我不知道它是否很关键还是需要)外
接收包含3到10个“列”的事件(序列ID,事件名称,日期时间,JSON /二进制编码的参数包,某些上下文信息..)。如果不将您的观点放在面向列的数据库类型中,那么如果它满足所有其他要求,则可能是面向文档的
用作队列或从外部AMQP系统(例如RabbitMQ或ZeroMQ)发送/从外部AMQP系统读取(如果您也可以论证/解释,则该部分还无法工作),因为视图投影将基于事件
需要某种通过序列ID的过滤,例如SELECT * FROM events WHERE sequence_id > last_sequence_id
订户(或队列系统)能够从给定点进行同步
我听说过用于CQRS事件存储的HBase,但也许MongoDB合适吗?甚至甚至是Elasticsearch(不会押注那个)。我也对RDBMS保持一致性和可用性。.但是分区容忍部分呢?
确实我迷路了,我需要争论才能做出适当的选择。
https://geteventstore.com/是专门为事件流设计的数据库。
他们非常重视真理来源(您的事件)的一致性和可靠性,我自己使用它每秒读取/写入数千个事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句