-
Notifications
You must be signed in to change notification settings - Fork 55
针对读库的设计
anruence edited this page Nov 17, 2021
·
4 revisions
当我们想要实现CQRS
时,使用enode
通过消息队列的扩展解决了C
端的高并发写入的问题
那么如何解决Q端的问题呢,针对读库的设计,如果同时要满足多维度的查询和检索,以及海量数据的存储,目前的想法如下
在数据选型时有时为了更好的扩展性和性能,我们需要针对性的进行优化,首选我们要解决的问题是构建一个吞吐大,实时性高,扩展性好,性能好的查询引擎 针对于此,关系型数据库 整体的思路:
- 存储和计算分离
- 索引和数据分离
优点如下:
- 索引和数据分离,搜索引擎索引的数据量降下来了,吞吐量大,可针对性的横向扩容
- get by primary key操作对于任何数据库都是极快的,为了极致性能时,很容易针对性的做缓存优化
- 更容易和DDD中聚合根结合起来,修改索引时,对业务数据不影响
- 利用hbase多版本的能力,可存储历史数据快照
但这个选型的缺点带来了索引和数据一致性的问题,需要一些其他工作来实现 缺点如下:
- 针对历史数据的更新需要单独定制
- 索引更新实时性和一致性(只能最终一致)
打包解决方案:阿里云 Lindorm