如何支持数据库双向同步
数据库同步最典型的应用是异地容灾、负担主库查询统计,这一般是1对1的应用,但是多维同步的需求有时也会浮出水面,这方面的需求一般来说更有实际应用价值,大致分为以下几种:
1、N->1型:这种需求主要是应用于分部将生产数据上传到总部,可以让总部实时了解生产调拨情况以及各分部计划完成情况来进行集中分析使用当然同步的前提是各分部业务数据同步的表必须是独立的,或者数据的主键是不冲突的,这样多组日志在执行的时候就不会出现内部干扰的情况,此种方式必须从应用上进行隔离,保证数据的独立性。
2、1->N型:这种需求是第一种情况的逆过程,主要是应用于总部将通知发布到各分部的应用。目的是一些重要的通知,报表数据,当业务数据没有实现大集中情况下需要分发到分部,当然,这种需求一般会要求同步软件能够配置哪些表或者哪些字段的数据需要定向同步到哪个备库,这就需要同步软件需要具备进行表过滤或者字段过滤功能。
3、N<->N型:这种情况应用不多,但是特点是网络结构复杂,还需要应用上的配合。一个简单的例子就是跨国企业多国联合生产系统。比如A国是总部,B国是分部1,C国是分部2,D国是分部3。当一个生产计划从总部下发到BCD分部时,各分部就得到了生产数据,同时根据总计划制定各自的生产计划,之后每个分部可以针对自身独立的部分进行生产,同时每个分部会把各自计划完成的情况实时传到总部,之后由总部进行区分,比如把CD产生的生产数据同步到B,把BC产生的生产数据同步到D,把BD产生的数据同步到C,这样就完成一个生产计划的分布控制,同时各分部可以根据相临分部生产计划的执行情况对自己的生产任务进行调整。
可以说N<->N模式是目前最复杂的一种应用,不止要从应用系统上保持同步数据的一致和无冲突性,还要保证数据能够在多向传输中的所有断点记录,并且在实际应用过程中还会有根据用户、字段、表进行过滤和转化的一系列需求,甚至还会涉及到各国字符编码的转换问题。
但是无论如何,再复杂的应用也必须建立在数据库同步技术基础上,只有依靠同步技术,再通过应用系统的配合(主要是数据主键冲突),并且充分利用同步日志中的相关要素(日期、表、OWNER、字段)来进行个性化配置,才能完成一个多到多的同步应用。