日期:2014-05-16  浏览次数:20581 次

数据库分库模式

?

当针对单个数据库的物理部署优化无法满足性能要求的情况下,需进一步考虑数据库分库方案。一方面,数据库分库增加了开发、维护和调优各个方面的难度。另一方面分库也有一些优势:从底层数据库的分离,支持各个功能域的业务组件的独立,可以单独的替换与改造某个功能域的内部实现,不影响其他功能,增加了应用的灵活性和可复用性;可以把庞大的数据库化整为零,避免单一数据库过于庞大,增强了数据库的可维护性。

常见的分库方式有垂直性和水平性。一般来说,就是按照业务功能块进行分库,或者按照用户属性(地市或者IDhash )进行分库。

1)? 水平分库方式

水平分库方式主要根据用户属性(如地市)拆分物理数据库。一种常见的方式是将全省划分为个大区(通常为2 个),如下图所示。

水平分库方式

如上图所示,全省拆分为2 个大区,每个大区独立部署数据库,物理设备也独立配置。通过该方式将数据库规模降低至一半的水平,在现有硬件设施基础不变的情况下提升系统响应数据。

设置独立的公共数据库存储全省统一的公共资料数据,从公共数据库向各大区数据进行数据同步。

涉及到异地受理和跨本地网业务的流程时,存在两种方式:

A) 无省中心的情况下,由大区的系统通过分布式远程数据库访问方式调用目标大区数据库;本方式流程简单,但数据访问权限存在一定风险。

B) 具备省中心的情况下,由大区发起方向省中心提交跨区业务请求,后者再将请求转发给目标大区系统。通过省中心的集中控制保证业务一致性。在存在多个大区的情况可考虑本方式。

?

2)? 垂直分库方式

根据数据的访问量等,进行数据的分离,剥离为多个数据库。例如,将一些公用的配置信息存储到一个数据库中进行单独维护。如下图所示。


垂直分库方式

如上图所示,全省数据库拆分为2 个独立的物理数据库:公共数据库和营业数据库。从底层数据库的分离,支持各个功能域的业务组件的独立,可以单独的替换与改造某个功能域的内部实现,不影响其他功能,增加了应用的灵活性和可复用性;可以把庞大的数据库化整为零,避免单一数据库过于庞大,增强了数据库的可维护性。