1.一种基于自制序列化算法的数据库同步方法,包括管理工具、发布服务模块和订阅服务模块,其特征在于,建立自定义的数据视图元数据结构,将源数据库按照该结构生成元数据,所述发布服务模块按照元数据的定义抽取数据,建立自制的序列化存储算法,对数据进行序列化存储并进行数据发布,所述订阅服务模块按照元数据的定义接收发布服务模块发布的数据,并对数据进行逆向处理,最终更新到目标数据中。
2.根据权利要求1所述的基于自制序列化算法的数据库同步方法,其特征在于,将源数据库按照自定义的数据视图元数据结构生成元数据包括以下步骤:
步骤1.1)手动生成数据表的结构信息元数据,包括数据表名称、数据表类型、数据表分批条件、字段的名称、数据类型和长度;
步骤1.2)建立数据表的外部数据关系元数据,获取该数据表依赖的其他数据表清单,并记录依赖字段;
步骤1.3)结合步骤1.1)和步骤1.2),建立数据发布配置模型:
步骤1.31)配置源数据库连接字符串、数据序列化文件存储位置和数据订阅端服务地址信息;
步骤1.32)针对所有数据视图,配置数据同步时机,同步时机定义为以分号分割的多个数值,其中,第一个数值代表同步周期,周期最小单位为分钟,其余数值代表强制同步的时间点;
步骤1.4)结合步骤1.1)和步骤1.2),建立数据订阅配置模型:
步骤1.41)配置数据验证插件,若未配置,系统采取默认处理;
步骤1.42)配置数据表更新前和更新后插件,若未配置,系统采取默认处理;
步骤1.43)针对所有数据视图,配置目标数据库连接字符串、数据序文件和ftp服务器相关配置。
3.根据权利要求2所述的基于自制序列化算法的数据库同步方法,其特征在于,所述自制的序列化存储算法包括以下步骤:
步骤2.1)针对数据视图元数据的定义,依次对各个数据项进行数据获取处理,对于单个数据定义项,进行步骤2.2)处理;
步骤2.2)对获取的数据项数据,按照记录条数依次处理每一条数据记录,对于单条数据记录,进行步骤2.3)处理;
步骤2.3)对每一条数据记录,依次按照字段元数据定义进行二进制处理;
步骤2.4)对单个数据定义项的二进制处理的结构,进行压缩处理,进一步减小数据存储和最后传输的尺寸,并对压缩后的数据进行文件存储。
4.根据权利要求3所述的基于自制序列化算法的数据库同步方法,其特征在于,所述数据发布包括以下步骤:
步骤3.1)发布服务模块从数据视图元数据中获取数据同步的周期,并按照周期要求进行数据同步操作,每一个周期操作,系统自动分配一个批次号;
步骤3.2)发布服务模块获取订阅端状态,如果订阅端状态为异常,则本次更新所有的完整数据,以确保所有数据到达目标库后的数据一致性;如果订阅端状态为正常,本次更新变化的数据;计划类数据每次都进行完整更新;
步骤3.3)按照步骤3.2)的处理结果清单,系统进行步骤2.1)完成数据定义项的序列化存储,在每完成一个数据定义项的序列化操作后,发布服务模块向订阅服务模块发送同步指令。
5.根据权利要求4所述的基于自制序列化算法的数据库同步方法,其特征在于,所述订阅服务模块接收和逆向处理数据包括以下步骤:
步骤4.1)订阅服务模块接收发布服务模块发布的同步指令,将该同步指令按照批次要求存入指令队列,并创建独立线程进行指令处理;
步骤4.2)指令处理线程中,依次对指令信息中指定的数据定义项进行ftp下载,针对下载失败的情况,系统进行重复尝试若干次,若干次均失败则标记异常,系统跳转至步骤4.4),否则视为下载成功,下载成功后的数据文件待用;
步骤4.3)指令处理线程中,当前批次所有数据定义项下载成功后,再按照数据约束关系依次进行数据文件的解压缩、反序列化、拼接处理;处理完毕后进行数据验证操作,验证通过后,系统执行更新前插件处理、批次更新保存处理、系统执行更新后插件处理;处理过程中未发生异常和错误,标记批次状态为正常,更新结束;否则,跳转至步骤4.4);
步骤4.4)针对批次处理异常的情况,该批次更新失败,所有指令处理判定为失败,标记批次状态为异常,批次更新结束。
6.根据权利要求2所述的基于自制序列化算法的数据库同步方法,其特征在于,所述步骤1.43)中,ftp服务器相关配置包括服务器地址、端口、登录用户、密码和数据存储目录。
7.根据权利要求4所述的基于自制序列化算法的数据库同步方法,其特征在于,所述步骤3.3)中,同步指令信息包括批次号、数据定义项名称、数据页码、数据条数和指令类型。
8.根据权利要求5所述的基于自制序列化算法的数据库同步方法,其特征在于,所述步骤4.2)中,针对下载失败的情况,系统进行重复尝试3次,3次均失败则标记异常。