人社系统大集中后,系统数据集中存放在核心数据库上。核心数据库具有查询,业务办理,备份,大数据分析等功能。若将核心数据库的查询业务,备份、大数据分析等通过dataguard的方式分离出来,核心数据库仅用作业务办理使用,该规划的方式是否合理?另外,其它分离的数据库如何计算所需的硬件资源需求情况?
首先要分清楚查询是什么性质的查询。如果是供公众作静态信息查询,采用读写分库问题也不大,因为你可以提示公众该查询系统的信息是滞后的(可能需要1-2天才能更新)。但如果对经办系统而言,业务人员必须要能够实时看到完整的信息(包括应用程序也要能够实时访问到完整的信息)。所以在架构设计上一定要分清楚各类数据库的用途和使用方式。例如核心业务经办数据库读写都有,必须保证单一的数据映像,即一份数据;对于数据分析与挖掘和公共服务数据,可以从核心数据库经过抽取、转换形成单独的库。
我见过很蹩脚的设计,担心核心数据平台的能力不足而采用分库,即读写分离,然后再定期同步。这种设计必然导致很大的数据完整性问题,也会严重影响系统性能。(该方案只是停留在纸上)。