分布式数据库扩展

38 阅读1分钟

数据库读写分离

以前单体架构里读写都是在一个库上操作,数据强一致性,但一个业务出现问题,将会导致整个数据库崩溃,影响其他业务正常使用。
分布式架构解决单体架构的问题,多个业务对数据库的操作大部分读多写少,把数据库拆分成读库和写库,把业务隔离开,避免一个业务故障导致整个系统挂掉。

CQRS命令与查询职责分离

命令指的是增,删,改,查询指的是查。命令不会返回数据,只会返回执行结果。查询返回数据结果,不会修改数据。

好处:

  • 分工明确
  • 高度灵活性,防止出现CRUD问题
  • 知道哪些操作导致系统状态变化
  • 从数据驱动转到任务驱动,记录不可修改事件,通过回溯得到数据的状态

分库分表

数据库操作

我们做业务操作,减少数据库的做关联查询,搜索操作可以用ElasticSearch查询,做数据报表可以用Hadoop。

数据库数据大小

数据太多我们要对数据库做分库分表,有一些规则可以帮助我们,按地理位置,日期,范围,哈希散列。

数据分片

水平分片

垂直分片

把重要的字段和不重要的字段分成两张表,不重要字段表查询速度快,重要字段表需要经常修改。