一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据资源中心构建方法及系统与流程

2022-11-09 22:16:34 来源:中国专利 TAG:
1.本发明涉及交通管理
技术领域
:,尤其涉及一种数据资源中心构建方法及系统。
背景技术
::2.过去十几年来,随着信息技术的不断发展,公交行业的管理水平得到了很大的提升,涌现了很多实际生产运营必不可少的信息化业务系统,例如调度系统、排班系统、线站基础信息管理系统、收银计费系统、erp系统、客服系统、场站管理、电子站牌管理系统等等。这些业务系统的使用积累了大量的生产运营数据,从而产生了分析、利用这些数据,进一步提升公交数字化智慧化管理的需求。但由于这些系统一般是由不同的运营商承建的,各系统之间并不互连互通。为了分析、利用这些数据,首先需要把这些数据集中汇集起来进行统一的管理,即建立数据资源中心。3.目前汇集各系统数据、构建数据资源中心的方法主要有两种:一是通过系统提供的对外接口,定期调用接口获取数据并集中存储;二是通过数据表复制。第二种方法通常需要事先约定好需要同步的表,提前在数据资源中心创建好对应的数据表,然后通过数据同步工具定期从数据源数据库系统(源头数据所在的数据库系统,源头数据库系统可能是mysql、oracle、sqlserver、clickhouse等多种数据库系统)抓取数据并更新到数据资源中心的数据库系统中。4.以上方法一的缺点是一旦数据结构有变化,很可能需要调整接口;数据内容有增加则通常需要新开发接口。方法二的缺点是一旦要同步的数据表结构发生了变化、或增加了要同步的表,必然也需要人工去调整表、新建表及配置数据同步(数据同步:把一张目标数据表的数据内容和另一张源数据表的内容保持一致的过程)等操作。而实际情况是各业务系统一直处于改进、升级、新建状态中,经常会有数据接口、数据表结构的调整或新增,这使得维护数据资源中心的工作量比较大,且经常会有因沟通不及时,导致数据资源中心的数据不完整甚至有同步失败的情况。技术实现要素:5.本发明实施例所要解决的技术问题在于,提供一种数据资源中心构建方法及系统,以保证数据能及时和源头数据库系统同步,减少数据资源中心运行维护的工作量。6.为了解决上述技术问题,本发明实施例提出了一种数据资源中心构建方法,包括:步骤1:创建源数据库系统的访问信息表,把源数据库系统的访问信息和配置信息填写到访问信息表,与源数据库系统建立连接;步骤2:扫描源数据库系统中全部的表,获取其中每一张源业务数据表内的内容,在数据资源中心构建分别与每一张源业务数据表的数据内容一一对应保持一致的若干目标数据表;构建维护一张记录每个源业务数据表同步时间的任务状态表;步骤3:定期启动数据同步任务,并限定执行任务的时长;步骤4:扫描源数据库系统中全部的表,把其中每一张源业务数据表加到数据同步任务的清单中;步骤5:将任务状态表内各源业务数据表按最近一次的同步时间进行排序,根据该顺序执行数据同步任务,依次将各源业务数据表的数据内容同步至对应的目标数据表,上次同步时间在先的源业务数据表,本次优先执行同步。7.相应地,本发明实施例还提供了一种数据资源中心构建系统,包括以下模块:模块1:创建源数据库系统的访问信息表,把源数据库系统的访问信息和配置信息填写到访问信息表,与源数据库系统建立连接;模块2:扫描源数据库系统中全部的表,获取其中每一张源业务数据表内的内容,在数据资源中心构建分别与每一张源业务数据表的数据内容一一对应保持一致的若干目标数据表;构建维护一张记录每个源业务数据表同步时间的任务状态表;模块3:定期启动数据同步任务,并限定执行任务的时长;模块4:扫描源数据库系统中全部的表,把其中每一张源业务数据表加到数据同步任务的清单中;模块5:将任务状态表内各源业务数据表按最近一次的同步时间进行排序,根据该顺序执行数据同步任务,依次将各源业务数据表的数据内容同步至对应的目标数据表,上次同步时间在先的源业务数据表,本次优先执行同步。8.本发明的有益效果为:本发明能保证数据资源中心中的数据能及时和源头数据库系统同步,并能大大减少维护数据资源中心的工作量。附图说明9.图1是本发明实施例的数据资源中心构建方法的流程示意图。10.图2是本发明实施例的数据表同步的流程示意图。11.图3是本发明实施例的把table中的数据同步到clickhouse中的ck_table的流程示意图。具体实施方式12.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明作进一步详细说明。13.请参照图1,本发明实施例的数据资源中心构建方法包括步骤1~步骤5。14.步骤1:创建源数据库系统的访问信息表,把源数据库系统的访问信息和配置信息填写到访问信息表,与源数据库系统建立连接。15.步骤2:扫描源数据库系统中全部的表,获取其中每一张源业务数据表内的内容,在数据资源中心构建分别与每一张源业务数据表的数据内容一一对应保持一致的若干目标数据表;构建维护一张记录每个源业务数据表同步时间的任务状态表。16.步骤3:定期启动数据同步任务,并限定执行任务的时长。例如每晚2点开始执行数据同步任务,执行5个小时。任务开始时间和任务执行时长可自定义配置。这样做的目的是保证数据同步任务不影响业务系统的使用。17.步骤4:扫描源数据库系统中全部的表,把其中每一张源业务数据表加到数据同步任务的清单中。这样做的目的是保证一旦源数据库系统中表有变更,数据资源中心能捕捉到变更。18.步骤5:将任务状态表内各源业务数据表按最近一次的同步时间进行排序,根据该顺序执行数据同步任务,依次将各源业务数据表的数据内容同步至对应的目标数据表,上次同步时间在先的源业务数据表,本次优先执行同步。这样做的目的是保证不重复、无遗漏地执行源数据库系统中的数据表同步。19.数据同步任务根据以下方法进行数据同步:根据表内数据内容按预设划分规则将所述源业务数据表划分为大表和小表,其中,小表为表中的数据内容可能会有变更、通常数据量小于预设阈值的源业务数据表,大表为表结构固定、其中的数据只会随着时间的推移增加,以往的数据不会改变的源业务数据表。数据资源中心会维护一张大小表配置表,可由管理员手工配置源数据库系统中哪张表是大表,不在该配置表的表则都按小表处理。20.对其中的小表实行全量同步,对其中的大表实行增量同步,其中,对小表的同步方式为重新全量同步源数据库系统中的源业务数据表内的数据;对大表的同步方式为仅同步自上次同步以来源业务数据表中增加的数据。21.同步小表时,先从源数据库系统读取该源业务数据表的表结构数据,然后根据表结构数据在数据资源中创建临时表,利用数据同步工具把源业务数据表中的内容全量复制到临时表中,然后删除数据资源中心中上一次同步该源业务数据表产生的目标数据表,并用临时表替换作为新的目标数据表。这能保证即便小表有变化,系统能捕捉到变化;变化包括表结构变化、表增加、表删除等。这样做的目的是提高数据同步的容错能力,即便本次同步失败,数据资源中心仍能保留上次对该源业务数据表的同步内容。22.同步大表时,首先查询与该源业务数据表对应的目标数据表中入库时间最靠后的那一条数据,然后以此最靠后的入库时间为时间标志从源业务数据表中读取入库时间大于该时间标志的数据并存入目标数据表。大表中的数据量通常比较大。管理员在配置大表的时候同时也会配置能够标识记录增加的字段,该字段通常是入库时间,也可以是自增id等。大表通常都有这样的字段,如果没有,则需要考虑添加一个记录创建时间的字段,并把记录入库的系统时间作为该字段的默认值。为叙述方便,本发明中都按入库时间来表述,并称其为时间戳字段time_field。其它字段如自增id也是类似的。23.本发明实施例的数据资源中心构建系统,包括以下模块:模块1:创建源数据库系统的访问信息表,把源数据库系统的访问信息和配置信息填写到访问信息表,与源数据库系统建立连接;模块2:扫描源数据库系统中全部的表,获取其中每一张源业务数据表内的内容,在数据资源中心构建分别与每一张源业务数据表的数据内容一一对应保持一致的若干目标数据表;构建维护一张记录每个源业务数据表同步时间的任务状态表;模块3:定期启动数据同步任务,并限定执行任务的时长;模块4:扫描源数据库系统中全部的表,把其中每一张源业务数据表加到数据同步任务的清单中;模块5:将任务状态表内各源业务数据表按最近一次的同步时间进行排序,根据该顺序执行数据同步任务,依次将各源业务数据表的数据内容同步至对应的目标数据表,上次同步时间在先的源业务数据表,本次优先执行同步。24.作为一种实施方式,数据同步任务根据以下方法进行数据同步:根据表内数据内容按预设划分规则将所述源业务数据表划分为大表和小表,其中,小表为表中的数据内容会有变更、通常数据量小于预设阈值的源业务数据表,大表为表结构固定、其中的数据只会随着时间的推移增加,以往的数据不会改变的源业务数据表;对其中的小表实行全量同步,对其中的大表实行增量同步,其中,对小表的同步方式为重新全量同步源数据库系统中的源业务数据表内的数据;对大表的同步方式为仅同步自上次同步以来源业务数据表中增加的数据。25.作为一种实施方式,同步小表时,先从源数据库系统读取该源业务数据表的表结构数据,然后根据表结构数据在数据资源中创建临时表,利用数据同步工具把源业务数据表中的内容全量复制到临时表中,然后删除数据资源中心中上一次同步该源业务数据表产生的目标数据表,并用临时表替换作为新的目标数据表;同步大表时,首先查询与该源业务数据表对应的目标数据表中入库时间最靠后的那一条数据,然后以此最靠后的入库时间为时间标志从源业务数据表中读取入库时间大于该时间标志的数据并存入目标数据表。26.本发明通过配置数据源、定期自动读取全量数据库的数据表信息、动态自动化创建目标数据表、并根据数据表特点配置数据表的更新机制,实现几乎全自动的数据资源中心构建方法,并能保证数据资源中心的数据能及时和源头数据库系统同步,大大减少了维护数据资源中心的工作量。27.下面给出数据资源中心构建方法的具体实施过程。为叙述方便,源数据库系统以mysql进行说明(mysql、oracle、sqlserver是目前市面上常用的几种数据库系统),如果源数据库系统是oracle等步骤也是类似的;目标数据库系统(数据资源中心的数据库系统,实际可为任何能够存储大量数据并有自备份功能的数据库系统)以clickhouse为例进行说明(clickhouse是目前市面上常用的一种列式分布式数据库管理系统),如果是其它数据库系统也是类似。28.预先准备工作1)在数据资源中心创建源数据库系统访问信息表db_access_info,字段包括:jdbc_url:源数据库系统jdbc(javadatabaseconnectivity,java数据库连接)访问的url地址,例如192.168.1.177;port:数据库访问的端口号,例如3306;db_type:数据库类型,如mysql,oracle等;user_name:访问账号的用户名;password:访问账号的密码;db_name:需要同步的数据库名称。29.把源数据库系统的访问信息填写到表db_access_info中,例如表1:2)在数据资源中心创建大表配置表big_data_table_config,字段包括:db_type:数据库类型db_name:数据库库名table_name:数据表表名time_field:时间戳字段名把源数据中的大表信息填写到表big_data_table_config中,例如表2:3)在数据资源中心创建数据同步状态记录表table_sync_status,字段包括:db_type:数据表类型db_name:数据库库名table_name:数据表表名is_big_table:是否为大表time_field:时间戳字段的字名,该信息对大表适用last_record_time:目标数据表记录中time_field字段的最大值,该信息对大表适用last_sync_time:上次成功同步该表的时间last_sync_time每次把源业务数据表的记录成功同步到目标数据表后,都会在该表添加一条记录,例如表3:1.整体步骤请参照图2,整体步骤如下:1)设置一个每天执行的时钟任务,例如定在每天凌晨2点启动数据同步;2)根据源数据库系统访问信息表db_access_info,生成需要同步的数据表列表all_table_list;3)根据all_table_list和上次同步结果table_sync_status分析得出本次同步任务需要同步的数据表列表table_to_sync_list;4)从table_to_sync_list取出一条记录,把该记录对应的源业务数据表的数据同步到clickhouse并记录结果到table_sync_status;5)检查系统时间,如果已经过了预定时间(如7点钟)则退出任务,等待下次任务启动的时间到来;否则回到步骤4)。30.2.生成需要同步的数据表列表到all_table_list本步骤对应整体步骤的第2)步。具体过程为:1)读取db_access_info表中的源数据库系统配置信息,对源数据库系统建立连接;2)读取系统表information_schema.schemata,得到数据库列表db_list;3)遍历db_list中每一个数据库,读取系统表information_schema.tables,得到该数据库中的所有数据表,每个数据表对应all_table_list中的一个条目。31.列表all_table_list包含的信息为:db_type:数据表类型db_name:数据库库名table_name:数据表表名3.生成本次数据同步任务列表table_to_sync本步骤对应整体步骤的第3)步。具体过程为:1)对all_table_list中的每一个条目item,看big_data_table_config中是否存在记录record,使得record和item具有相同的db_type、db_name和table_name;如果有,则对item添加信息is_big_table=1,time_field=record.time_field;如果没有则对item添加信息is_big_table=0,time_field=null,null标识该字段信息为空;2)对all_table_list中的每一个条目item,看table_sync_status中是否有记录record,使得record和item具有相同的db_type、dbase_name和table_name;如果有则对item添加信息last_sync_time=record.last_sync_time;如果没有,则item添加信息last_sync_time=1971-1-1,即添加一个很早的时间,表示很久没有同步了;3)对all_table_list中的记录按last_sync_time从小到大排序,成为table_to_sync列表:db_type:数据表类型db_name:数据库库名table_name:数据表表名is_big_table:是否为大表time_field:时间戳字段,对大表适用last_sync_time:该表上次的同步时间4.按顺序对table_to_sync中的每个条目对应的源业务数据表做数据同步,请参照图3。32.本步骤对应整体步骤的第4)步。作用是把table_to_sync中每张源业务数据表(来自table_to_sync中的每个条目)的数据同步到clickhouse中的目标数据表。clickhouse中目标数据表的命名规范位为:db_type_db_name_table_name,这样能保证表名的唯一性。33.数据同步时对大小表的处理过程是不一样的,下面分别叙述。34.对小表的处理过程为:1)根据db_type,db_name和table_name,读取系统表information_schema.columns,得到表table_name的每一个字段的信息,记该表为源业务数据表db_type_db_name_table_name;2)根据字段信息在clickhouse中创建一张同样的表,名称为db_type_db_name_table_name_tmp;3)运用数据同步工具(如datax、kettle等,均为目前市面上常用数据同步工具)把源业务数据表的数据全量同步到目标数据表db_type_db_name_table_name_tmp;4)删除上次同步在clickhouse中保存的目标数据表db_type_db_name_table_name;5)把表db_type_db_name_table_name_tmp重命名为db_type_db_name_table_name;6)在表table_sync_status中添加本次同步记录:db_type、db_name、table_name、is_big_table(为0)、time_field(为null)、last_sync_time(为当前系统时钟)对大表的处理过程为:1)检查clickhouse中是否存在表db_type_db_name_table_name,如果不存在,则创建;步骤类似对小表处理过程的前2步;2)从table_sync_status中找到该表上次同步的最后一条记录时间戳字段对应的时间last_record_time;3)把源业务数据表中时间戳字段对应的值大于last_record_time的记录同步到表db_type_db_name_table_name;4)读取本次同步的记录中time_field的最大值,记为max_record_time;5)在表table_sync_status中添加本次同步记录:db_type、db_name、table_name、is_big_table(为1)、time_field、last_record_time(为max_record_time)、last_sync_time(为当前系统时钟)。35.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献