现在所有的大行都在实践分布式数据库。
分布式主要解决两个问题。一是性能扩展,弹性伸缩。单机数据库的处理能力是有上限的,尤其是纵向扩展有极限,也不能解决单库的瓶颈。分布式数据库的横向扩展几乎是唯一的解决途径。二是高可用性,单节点的异常不会导致整个集群的损坏,不会影响全局。异常节点的数据和任务能动态漂移,恢复时间短。
然而分布式数据库也存在很多挑战,并不是那么容易实现。分库分表对应用是否透明? 如果从应用角度就开始分,合理开发应用,对于性能来说是最好的方式,但是需要很高的设计开发成本。 如果对应用透明,完全由数据库来做,那么性能可能会成为问题,因为应用会存在夸库事务,存在两阶段提交等。 分布式事务是否支持? 我们会看到接触的大多数分布式产品都支持,然而性能呢,都是问题。在测试的很多分布式数据库,都存在gtm这样的设计,用来协调数据库节点的事务。测试过程中,性能的瓶颈也基本出在这个核心功能上。
因此在上分布式数据库的时候,一定要关注这些点。挑选合适自己的数据库。从性能,高可用,管理性等方面全面评审才行。