选择NoSQL数据库在CQRS设计的应用程序中存储事件 [英] Choosing a NoSQL database for storing events in a CQRS designed application

查看:94
本文介绍了选择NoSQL数据库在CQRS设计的应用程序中存储事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找有关如何选择NoSQL数据库引擎以将所有事件存储在CQRS设计的应用程序中的良好且最新的决定帮助。

I am looking for a good, up to date and "decision helping" explanation on how to choose a NoSQL database engine for storing all the events in a CQRS designed application.

我目前是NoSQL的所有事物的新手(但是正在学习):请明确表示,不要犹豫,以(几乎太多)精确的方式解释您的观点。

I am currently a newcomer to all things around NoSQL (but learning): please be clear and do not hesitate to explain your point of view in an (almost too much) precise manner. This post may deserve other newcomers like me.

该数据库将:


  • 能够在前视图要求的每个更新中插入2到10行(在我的情况下,经常更新)。考虑到每分钟有数千次更新,它将如何扩展?

  • Be able to insert 2 to 10 rows per updates asked by the front view (in my case, updates are frequent). Think of thousand of updates per minute, how would it scale?

关键是必须保持一致和故障安全,因为事件是应用程序真相的来源

Critically need to be consistent and failure safe, since events are the source of truth of the application

不需要实体之间的任何链接(就像RDBMS一样),除非用户ID / GUID(我不知道是否

Not need any link between entities (like RDBMS does) except maybe a user ID/GUID (I don't know if it's critical or needed yet)

接收包含3到10个列的事件(序列ID,事件名称,日期时间,JSON /二进制编码)参数包,一些上下文信息..)。如果不将您的观点放在面向列的数据库类型中,那么它就可以满足所有其他要求

Receive events containing 3 to 10 "columns" (a sequence ID, an event name, a datetime, a JSON/binary encoded parameter bag, some context informations..). Without orientating your point of view in a column-oriented type of database, it may be document-oriented if it fits all other requirements

用作队列或从RabbitMQ或ZeroMQ之类的外部AMQP系统发送/读取(如果您也可以进行论证/说明,则该部分还无法工作),因为视图投影将基于事件

Be used as a queue or sent to/read from an external AMQP system like RabbitMQ or ZeroMQ (didn't worked that part yet, if you could also argument/explain..) since view projections will be built upon events

需要通过序列ID进行某种过滤,例如 SELECT * FROM来自WHERE sequence_id>事件的过滤。 last_sequence_id ,以便订户(或队列系统)能够从给定点进行同步

Need some kind of filtering by sequence ID like SELECT * FROM events WHERE sequence_id > last_sequence_id for subscribers (or queue systems) to be able to synchronize from a given point

我听说过用于CQRS事件存储的HBase,但也许MongoDB适合吗?甚至甚至是Elasticsearch(不会赌那个..)?我也对RDBMS保持一致性和可用性。.但是分区容忍部分呢?。

I heard of HBase for CQRS event storing, but maybe MongoDB could fit? Or even Elasticsearch (would not bet on that one..)? I'm also open to RDBMS for consistency and availability.. but what about the partition tolerance part..?

我真的迷路了,我需要一些参数来使相关选择。

Really I'm lost, I need arguments to make a pertinent choice.

推荐答案

https ://geteventstore.com/ 是专门为事件流设计的数据库。

https://geteventstore.com/ is a database designed specifically for event streams.

他们非常重视真理源(您的事件)的一致性和可靠性,我自己使用它每秒读取/写入数千个事件。

They take consistency and reliability of the source of truth (your events) very seriously and I use it myself to read/write thousands of events a second.

这篇关于选择NoSQL数据库在CQRS设计的应用程序中存储事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆