CN113961569B - 一种医疗数据etl任务同步方法和装置 - Google Patents
一种医疗数据etl任务同步方法和装置 Download PDFInfo
- Publication number
- CN113961569B CN113961569B CN202111575921.7A CN202111575921A CN113961569B CN 113961569 B CN113961569 B CN 113961569B CN 202111575921 A CN202111575921 A CN 202111575921A CN 113961569 B CN113961569 B CN 113961569B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- synchronized
- target
- target data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H50/00—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
- G16H50/70—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for mining of medical data, e.g. analysing previous cases of other patients
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Public Health (AREA)
- Medical Informatics (AREA)
- Pathology (AREA)
- Biomedical Technology (AREA)
- Epidemiology (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明提供一种医疗数据ETL任务同步方法和装置,其中方法包括:基于待同步的数据源与目标数据库中目标数据表之间的关联关系,确定待同步的数据源对应的待写入目标数据表;基于待写入目标数据表之间的数据关联性,确定待写入目标数据表对应的中间文件;其中,存在数据关联的待写入目标数据表对应同一中间文件;基于待写入目标数据表,获取待同步的数据源中属性名与待写入目标数据表的字段名称相匹配的待同步数据;将待同步数据写入至待写入目标数据表对应的中间文件中;将中间文件中的数据批量写入至对应待写入目标数据表中。本发明降低了目标数据库的存储空间占用率以及数据库写入的负载,提高了数据同步的效率,同时避免了导入过多无用数据。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种医疗数据ETL任务同步方法和装置。
背景技术
随着医疗信息化建设的稳步发展,医疗数据中心可以为临床、科研、药物研发等领域提供优质的数据服务。其中,医疗数据中心离不开ETL(Extract-Transform-Load)数据处理系统的构建。在构建ETL数据处理系统时,由于异构数据源数量较多,如何高效地从大量异构数据源中获取数据并写入至数据中心是核心问题。
在医疗领域下,各个异构数据源(例如病历数据、挂号数据等)的更新频率较快,且单个数据量较小,因此有大量的微批数据需要写入至数据中心的目标数据库中以实现异构数据源和目标数据库的数据同步。目前的数据库读写方案中,通常在产生待同步的微批数据后,会将其一一写入至目标数据库中。如此一来,每一个微批数据的数据库写入均需要打开和关闭数据库事务。因此,医疗场景下存在的海量待同步的微批数据会造成数据库的频繁写入,从而带来大量的资源消耗和时间成本,导致数据库写入和异构数据源同步的效率显著下降。此外,在进行数据同步时,现有的同步方式中通常以全量或增量的形式将数据源中所有字段或节点的更新数据写入至目标数据库中。然而,由于医疗场景下数据源数量级大,各个数据源的字段或节点积累的数量也十分庞大。若将各个数据源的所有字段或节点的更新数据均写入至目标数据库,目标数据库的存储空间会迅速减少,难以应对长期的数据同步需求。
发明内容
本发明提供一种医疗数据ETL任务同步方法和装置,用以解决现有技术中微批数据写入效率低下且存储空间占用大的缺陷。
本发明提供一种医疗数据ETL任务同步方法,包括:
从多个异构数据源中确定若干个待同步的数据源;
基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;
基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;
将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
根据本发明提供的一种医疗数据ETL任务同步方法,所述基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据,具体包括:
获取所述对应待同步的数据源中的更新数据;
基于映射关系表,确定所述更新数据中属性名与所述任一待写入目标数据表的任一字段名称存在映射关系的数据,作为所述待同步数据;其中,所述映射关系表中存储有所述任一待写入目标数据表各字段名称与所述对应待同步的数据源的数据的属性名之间的映射关系;
所述映射关系是对所述待写入目标数据表的数据表描述文件和所述对应待同步的数据源中各数据的属性名进行语义分析,得到所述任一待写入目标数据表各字段名称的语义信息以及所述对应待同步的数据源中各数据的属性名的语义信息后,基于所述各字段名称的语义信息和所述各数据的属性名的语义信息之间的相似度,以及所述任一待写入目标数据表各字段和所述对应待同步的数据源中各数据的取值范围确定得到的。
根据本发明提供的一种医疗数据ETL任务同步方法,所述获取所述对应待同步的数据源中的更新数据,具体包括:
基于所述对应待同步的数据源的格式类型,确定所述对应待同步的数据源的解析器;
基于所述解析器对所述对应待同步的数据源进行解析,得到所述对应待同步的数据源中的更新数据。
根据本发明提供的一种医疗数据ETL任务同步方法,所述将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中,具体包括:
基于所述映射关系表,对所述待同步数据进行名称标准化处理,得到命名规范化数据;其中,所述映射关系表是对所述中间文件的签名信息进行解析后得到的;
基于所述待写入目标数据表的格式类型,对所述命名规范化数据进行格式标准化处理,得到待写入数据;
将所述待写入数据写入至所述中间文件中。
根据本发明提供的一种医疗数据ETL任务同步方法,所述从多个异构数据源中确定若干个待同步的数据源,具体包括:
确定当前时间与任一数据源的最新同步时间之间的时间间隔;其中,所述最新同步时间是基于所述中间文件的最新修改时间以及所述中间文件的数据读取时长确定的;
若所述时间间隔不小于所述任一数据源的预设更新时长,则确定所述任一数据源为所述待同步的数据源。
根据本发明提供的一种医疗数据ETL任务同步方法,所述任一数据源的预设更新时长是基于所述任一数据源的数据类型和/或所述目标数据库的应用场景类型确定的。
根据本发明提供的一种医疗数据ETL任务同步方法,所述中间文件的数据读取时长是基于所述中间文件的文件大小计算得到的。
根据本发明提供的一种医疗数据ETL任务同步方法,所述将所述中间文件中的数据批量写入至所述待写入目标数据表中,具体包括:
将所述中间文件中的数据写入至内存缓冲区中;
将所述内存缓冲区中的数据批量写入至所述待写入目标数据表中。
根据本发明提供的一种医疗数据ETL任务同步方法,所述基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据,之前还包括:
接收用户输入的数据读写配置;
其中,所述数据读写配置包括所述待同步的数据源的连接方式和读取方式,以及所述目标数据库的连接方式。
本发明还提供一种医疗数据ETL任务同步装置,包括:
数据源确定单元,用于从多个异构数据源中确定若干个待同步的数据源;
目标数据表确定单元,用于基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
中间文件确定单元,用于基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;
数据读取单元,用于基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
中间文件写入单元,用于将所述待同步数据写入至相匹配的所述待写入目标数据表对应的中间文件中;
数据表写入单元,用于将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述医疗数据ETL任务同步方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述医疗数据ETL任务同步方法的步骤。
本发明实施例提供的方法,基于目标数据库的待写入目标数据表,将待同步的数据源中属性名与待写入目标数据表的字段名称相匹配的待同步数据写入至对应的中间文件中,降低了目标数据库的存储空间占用率以及目标数据库写入的负载,提高了数据同步的效率,同时避免了导入过多无用数据;此外,通过将与存在数据关联的待写入目标数据表的字段相匹配的待同步数据写入至同一中间文件中,并将中间文件中的数据批量写入至待写入目标数据表中,显著减少了中间文件的读写效率和待写入目标数据表的写入频率,提高了数据库写入的效率以及数据同步的效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的医疗数据ETL任务同步方法的流程示意图;
图2是本发明又一实施例提供的医疗数据ETL任务同步方法的流程示意图;
图3是本发明实施例提供的医疗数据ETL任务同步装置的结构示意图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对此,本发明实施例提供了一种医疗数据ETL任务同步方法。图1为本发明实施例提供的医疗数据ETL任务同步方法的流程示意图,如图1所示,该方法包括:
步骤110,从多个异构数据源中确定若干个待同步的数据源;
步骤120,基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
步骤130,基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性可以基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;
步骤140,基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
步骤150,将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;
步骤160,将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
此处,可以从多个异构的医疗数据源中确定当前需要进行数据同步的一个或多个数据源。其中,数据源可以为关系型数据库的数据库表、xml文件、json文件和TXT文件等任何格式,本发明实施例对此不作任何限定。随后,根据待同步的数据源与目标数据库中目标数据表之间的关联关系,确定待同步的数据源对应的待写入目标数据表,即待同步的数据源中的数据所要写入的对象。其中,目标数据库由多个目标数据表构成,而每次进行数据同步时,可能仅有部分目标数据表要进行数据同步更新,此时确定的将进行数据同步更新的目标数据表即为待写入目标数据表。待同步的数据源与目标数据库中目标数据表之间的关联关系可以在设计目标数据表建立数据来源需求时设定得到。
由于医疗数据源中数据的更新频率较高且数据量大,若将医疗数据源中所有发生更新的数据均同步至目标数据库中,目标数据库的可用存储空间也会迅速缩小,导致目标数据库需要不停扩容才能继续提供服务,并且数据库写入的负载也将会难以承受。此外,医疗数据源中的字段或节点数较多,例如病案首页文件中包括医疗机构编号、医疗机构名称、病案号、就诊号码、手术编号、手术名称等多个节点。然而,待写入目标数据表的应用场景可能决定在大量的字段或节点中仅有部分字段或节点的数据为其需要的数据。例如,对于科学研究这一应用场景,其对应的待写入目标数据表更需要病患的手术编号、手术名称等信息,但对于就诊号码等信息则无需关注。
因此,为了减少目标数据库的存储空间占用率,同时降低目标数据库写入的负载从而提高数据同步的效率,并避免导入过多无用数据使得目标数据库管理困难,可以基于目标数据库的待写入目标数据表,获取对应待同步的数据源中属性名与上述待写入目标数据表的字段名称相匹配的待同步数据。其中,待同步的数据源中的某一字段或节点的字段名称或节点名称统称为属性名,某一字段或节点的取值称为属性值。通过获取属性名与待写入目标数据表的字段名称相匹配的部分字段或节点的数据,提高了数据写入的针对性和效率。
从待同步的数据源中读取与待写入目标数据表的字段相匹配的待同步数据后,可以将上述待同步数据写入至该待写入目标数据表对应的中间文件中。其中,中间文件用于批量存储从待同步的数据源中读取的多个待同步数据。中间文件可以为任意格式的物理文件,本发明实施例对此不作具体限定。例如,考虑到中间文件的解析难度会影响整个数据同步的效率,可以将中间文件设置为易解析的TXT文件以提高解析效率。此外,由于大部分数据库都默认支持TXT文件的数据导入,无需二次解析使得TXT文件的导入性能较高,因此,将中间文件设置为TXT文件,可以提高中间文件的解析性能。
此处,在将待同步数据写入至待写入目标数据表对应的中间文件前,可以确定各个待写入目标数据表对应的中间文件。目标数据库中通常包含多个目标数据表,且多个目标数据表所需的数据不完全相同。因此,在存在多个目标数据表的情况下,可以为每个目标数据表设置对应的中间文件,然后在数据同步时,将与各个待写入目标数据表关联的待同步数据分别写入至对应的中间文件中。具体而言,可以在创建任一目标数据表后,为该目标数据表创建一个或多个中间文件。其中,创建的中间文件数量可以根据目标数据表的数据量(例如目标数据表的字段数量、字段长度等)设定,例如,若目标数据表的数据量较大,则可以设置两个以上中间文件,若目标数据表的数据量较小,则可以仅设置一个中间文件。
然而,在医疗场景的大部分情形下,多个目标数据表之间通常存在关联,包括以同一字段为关联字段关联的多个目标数据表。例如,一个目标数据表为患者检查检验信息,另一个目标数据表为患者医嘱信息,两个目标数据表之间存在关联字段(即患者信息)。又例如,一个目标数据表为患者用药信息,另一个目标数据表为药物不良反应信息,两个目标数据表之间存在关联字段(即药品信息)。
当多个目标数据表之间存在关联时,上述多个目标数据表所需的数据存在重叠,而上述重叠的数据可能来自同一数据源。例如,相关联的目标数据表“患者检查检验信息”和目标数据表“患者医嘱信息”所需的数据均包括患者信息以及检查项目信息等。因此,当多个待同步的数据源对应多个待写入目标数据表,即当前有多个待写入目标数据表需要进行数据写入时,若部分或全部待写入目标数据表之间存在上述数据关联,则可以将与上述多个相互关联的待写入目标数据表字段相匹配的待同步数据写入同一中间文件。具体而言,一个中间文件可以对应两个或以上待写入目标数据表,即一个中间文件中可以存储与两个或以上待写入目标数据表的字段相匹配的待同步数据,且上述两个或以上待写入目标数据表之间存在关联。因此,可以仅为上述两个或以上待写入目标数据表创建一个中间文件,并将该中间文件与上述两个或以上待写入目标数据表之间建立关联。
其中,可以基于任意两个待写入目标数据表的字段引用关系和/或字段相似性确定上述两个待写入目标数据表是否存在数据关联。此处,字段引用关系是指上述两个待写入目标数据表的字段之间是否存在外键约束关系,例如当待写入目标数据表A中的字段M为待写入目标数据表B中的主键字段时,两者之间存在外键约束关系。根据两个待写入目标数据表的字段引用关系,可以确定两张表中是否存在对应同一数据对象的字段,若存在,则表明两张表之间存在数据关联。字段相似性用于判断任意两个待写入目标数据表的字段名称是否相同或高度相似,若两个待写入目标数据表的字段名称相同或高度相似,则表明上述两张表中的这两个字段指向同一数据对象,因此也可以确定两张表之间存在数据关联。
一方面,由于与相关联的多个待写入目标数据表的字段相匹配的待同步数据可能部分来自同一数据源,因此将其写入同一中间文件,可以只对该数据源进行一次读取,减少了数据源的读取频率,有助于提高数据同步的效率;另一方面,由于相关联的待写入目标数据表所需的数据存在重叠,因此将与上述多个待写入目标数据表的字段相匹配的待同步数据写入至同一中间文件后,在将该中间文件中的数据写入至待写入目标数据表时,读取的重叠数据可以同时写入至上述关联的多个待写入目标数据表中,减少了中间文件的解析频率,也有助于提高数据同步的效率。
任一待写入目标数据表对应的中间文件写入完毕后,可以将该中间文件中的数据一次性批量写入至该待写入目标数据表中,实现数据由待同步的数据源到中间文件再到待写入目标数据表的传输,得到更新后的待写入目标数据表。其中,若多个待写入目标数据表对应同一中间文件,则可以只对该中间文件进行一次文件打开和文件读操作,并在这一次文件读操作的过程中将数据同时写入至上述多个待写入目标数据表中。此外,由于可以将中间文件的数据批量写入至待写入目标数据表中,显著减少了待写入目标数据表的写入频率,提高了数据库写入的效率以及数据同步的效率。当目标数据库中所有的待写入目标数据表均按照上述步骤完成数据传输得到更新后的待写入目标数据表后,即完成一次针对目标数据库的ETL任务。
本发明实施例提供的方法,基于目标数据库的待写入目标数据表,将待同步的数据源中属性名与待写入目标数据表的字段名称相匹配的待同步数据写入至对应的中间文件中,降低了目标数据库的存储空间占用率以及目标数据库写入的负载,提高了数据同步的效率,同时避免了导入过多无用数据;此外,通过将与存在数据关联的待写入目标数据表的字段相匹配的待同步数据写入至同一中间文件中,并将中间文件中的数据批量写入至待写入目标数据表中,显著减少了中间文件的读写效率和待写入目标数据表的写入频率,提高了数据库写入的效率以及数据同步的效率。
基于上述实施例,步骤140具体包括:
获取对应待同步的数据源中的更新数据;
基于映射关系表,确定所述更新数据中属性名与所述任一待写入目标数据表的任一字段名称存在映射关系的数据,作为所述待同步数据;其中,所述映射关系表中存储有所述任一待写入目标数据表各字段名称与所述对应待同步的数据源的数据的属性名之间的映射关系;
所述映射关系是对所述待写入目标数据表的数据表描述文件和所述对应待同步的数据源中各数据的属性名进行语义分析,得到所述任一待写入目标数据表各字段名称的语义信息以及所述对应待同步的数据源中各数据的属性名的语义信息后,基于所述各字段名称的语义信息和所述各数据的属性名的语义信息之间的相似度,以及所述任一待写入目标数据表各字段和所述对应待同步的数据源中各数据的取值范围确定得到的。
此处,首先获取待同步的数据源中发生变化的更新数据。由于这部分数据的状态与之前的状态相比产生了变化,例如数据新增、更改和删除等,因此可能需要将其变化同步至目标数据库中,以避免目标数据库中的数据与数据源中的数据不一致。其中,可以根据待同步的数据源的类型,选择以全量模式获取更新数据,或以增量模式获取更新数据。例如,当待同步的数据源的数据为静态数据(例如医院架构信息等)时,当新增数据源时,可以以全量模式获取该数据源的全部数据,作为更新数据;当待同步的数据源的数据为动态数据时,可以以增量模式获取其中发生变化的数据,作为更新数据。
为了从上述更新数据中属性名获取与待写入目标数据表的字段名称相匹配的待同步数据,即待写入目标数据表所需要的数据,可以利用预先构建的映射关系表,根据该映射关系表中待写入目标数据表各字段名称与待同步的数据源的数据的属性名之间的映射关系,快速定位待同步的数据源中属性名与待写入目标数据表中字段名称存在映射关系的数据。其中,待同步的数据源可能来自各大医疗机构或科研机构,不同机构对于同一事物的命名方式可能存在较大差别,与待写入目标数据表的命名方式也可能存在较大差别。因此,为了从不同待同步的数据源中获取属性名与待写入目标数据表的字段名称相匹配的数据,可以预先构建映射关系表,存储任一目标数据表各字段名称与任一数据源的数据的属性名之间的映射关系,具体而言可以存储任一目标数据表各字段与任一数据源的数据字段或节点之间的映射关系。例如,以xml文件格式的数据源为例,可以构建如表1所示的映射关系表,以在数据同步时快速定位与待写入目标数据表字段相匹配的数据。
表1
其中,可以通过对待写入目标数据表的数据表描述文件和对应待同步的数据源中各数据的属性名进行语义分析,得到该待写入目标数据表各字段名称的语义信息,以及对应待同步的数据源中各数据的属性名的语义信息后,基于上述各字段名称的语义信息和上述各数据的属性名的语义信息之间的相似度,以及该待写入目标数据表各字段和上述对应待同步的数据源中各数据的取值范围,确定该待写入目标数据表各字段名称和上述对应待同步的数据源中各数据的属性名之间是否存在映射关系。
此处,数据表描述文件为待写入目标数据表在创建之初由数据表设计人员生成的描述文件,其中描述了该表中各字段的含义以及取值范围。根据数据表描述文件中描述各字段含义的文本信息,可以语义分析得到待写入目标数据表中各字段的语义信息。在此基础上结合对待同步的数据源中各数据的属性名进行语义分析后得到的属性名的语义信息,基于两者之间的语义相似度,可以确定待写入目标数据表中的各字段名称与数据源中各数据的属性名之间是否存在映射关系。在此基础上,还可以结合待写入目标数据表各字段和对应待同步的数据源中各数据的取值范围,通过判断待写入目标数据表各字段和对应待同步的数据源中各数据的取值范围是否重合,进一步确定待写入目标数据表中的各字段名称与数据源中各数据的属性名之间是否存在映射关系,提高映射关系表的准确性。
当获取到待同步的数据源中的更新数据后,可以查询对应的映射关系表。若待同步的数据源中任一个字段或节点的属性名在映射关系表中与待写入目标数据表的任一字段名称之间存在映射关系,则可以将该字段或节点的更新数据筛选出来作为待同步数据。否则,该字段或节点的更新数据将不会同步至待写入目标数据表中。所有字段或节点均筛选完毕后,可以将筛选得到的待同步数据写入至对应的中间文件中。
本发明实施例提供的方法,通过获取待同步的数据源中的更新数据,并基于映射关系表,确定更新数据中与待写入目标数据表的字段存在映射关系的待同步数据,可以从繁复且不规范的海量医疗数据中快速筛选出待写入目标数据表需要的待同步数据,有助于进一步提高数据同步的效率。
基于上述任一实施例,所述获取所述对应待同步的数据源中的更新数据,具体包括:
基于所述对应待同步的数据源的格式类型,确定所述对应待同步的数据源的解析器;
基于所述解析器对所述对应待同步的数据源进行解析,得到所述对应待同步的数据源中的更新数据。
此处,由于待同步的数据源可以为异构数据源,针对任一类型的数据源,在读取其中的更新数据时可以采用该数据源的格式类型对应的解析器进行数据解析。例如,对于数据库表类型的数据源,可以采用日志解析方式读取数据;对于xml文件格式的数据源,可以采用xml解析器读取数据;对于json文件格式的数据源,可以采用json解析器读取数据;对于TXT文件格式的数据源,可以采用txt解析器读取数据。由于可以采用多解析器进行异构数据源的针对性读取,因此本发明实施例提供的方法适用于多种类型的异构数据源。
基于上述任一实施例,所述将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中,具体包括:
基于所述映射关系表,对所述待同步数据进行名称标准化处理,得到命名规范化数据;其中,所述映射关系表是对所述中间文件的签名信息进行解析后得到的;
基于所述待写入目标数据表的格式类型,对所述命名规范化数据进行格式标准化处理,得到待写入数据;
将所述待写入数据写入至所述中间文件中。
此处,考虑到筛选出的待同步数据仍然存在命名标准不一致、不规范的问题,为了在解析完中间文件并将数据写入至待写入目标数据表时,提高待同步数据与待写入目标数据表字段的匹配效率,可以对待同步数据进行名称标准化处理,得到命名规范化数据。其中,映射关系表是对中间文件的签名信息进行解析后得到的。此处,在系统预先创建各个目标数据表对应的中间文件时,该中间文件的签名信息中可以存储该目标数据表与各数据源之间的映射关系表本身或者映射关系表的存储地址。由于签名信息是在中间文件创建时由系统写入,且签名信息无法篡改,因此通过对中间文件的签名信息进行解析获得映射关系表,可以保证映射关系表的真实性和可靠性,从而提高名称标准化的准确性。
名称标准化处理的目的在于将待同步数据中各数据的字段名或节点名转换为与待写入目标数据表中字段对应一致的命名方式。例如,待同步数据中就诊号码这一字段或节点的名称为Mr_VisitN,而待写入目标数据表中就诊号码的字段名称为VisitNumber,可以将待同步数据的就诊号码名称转换为待写入目标数据表中就诊号码的字段名称,即VisitNumber,或是以待写入目标数据表中就诊号码的字段名称为名称前缀,例如VisitNumber_Mr。
此外,医疗场景下数据源数量较多,且不同数据源的命名标准存在不一致的问题,可能存在不同数据对应的命名相同的情形。例如在一个数据源中,手术编码的命名为ProceN,但在另一个数据源中,手术名称的命名也为ProceN。此时,若上述两个数据源对应同一个待写入目标数据表,将上述两个数据写入至同一中间文件时,会产生数据冲突。此时,利用名称标准化处理的方式将待同步数据中各数据的字段名或节点名转换为与待写入目标数据表中字段对应一致的命名方式,可以有效解决上述数据冲突的问题。
由于待同步数据来自各个异构数据源,其格式与待写入目标数据表可能存在较大差别,因此,为了进一步提高中间文件的解析效率,从而提高数据同步的效率,可以基于待写入目标数据表的格式类型,对命名规范化数据进行格式标准化处理,得到待写入数据。格式标准化处理的目的在于将命名规范化数据的组织形式转换为待写入目标数据表对应的易写入形式,使得在从中间文件中解析出数据后可以直接快速地写入至待写入目标数据表中。例如,命名规范化数据原本的格式为xml格式,即由各层节点组织而成的树状形式,而待写入目标数据表为二维数据表格式,因此可以将命名规范化数据的组织形式转换为待写入目标数据表自身对应的二维数据表格式,在完成中间文件解析后,可以直接按行将数据写入至待写入目标数据表中,从而提升了待写入目标数据表的写入效率。
随后,即可将待写入数据写入至中间文件中。
本发明实施例提供的方法,从中间文件的签名信息解析得到映射关系表后,利用映射关系表对待同步数据进行名称标准化处理后,再根据待写入目标数据表的格式类型,对命名规范化数据进行格式标准化处理,可以提高将中间文件的数据写入至待写入目标数据表的效率并避免数据冲突。
基于上述任一实施例,步骤110具体包括:
确定当前时间与任一数据源的最新同步时间之间的时间间隔;其中,所述最新同步时间是基于所述中间文件的最新修改时间以及所述中间文件的数据读取时长确定的;
若所述时间间隔不小于所述任一数据源的预设更新时长,则确定所述任一数据源为所述待同步的数据源。
此处,不同医疗数据源的更新频率不尽相同,例如病历数据源的更新频率相较于就诊数据源的更新频率更低,并且用户访问不同数据源数据的频率也不尽相同,例如医生访问就诊数据源的频率会高于医院信息数据源的频率。若为所有数据源均设定相同的数据同步频率,即每次均对所有数据源进行数据同步,而在上一次同步后部分数据源并未发生数据更新,或者此次同步后下次同步前用户均未访问部分数据源的数据,将浪费大量的资源和时间。因此,可以为不同的数据源设定不同的数据同步频率,在保证目标数据库与数据源间数据一致性以满足目标数据库访问需求的同时,尽可能减少数据同步的频率,降低数据库写入带来的资源消耗和时间成本。
具体而言,在确定当前时刻待同步的数据源时,可以计算当前时间与任一数据源的最新同步时间之间的时间间隔。其中,任一数据源的最新同步时间为该数据源上一次进行数据同步的时间,其可以基于中间文件的最新修改时间以及该中间文件的数据读取时长确定。其中,由于不同数据量的数据写入到中间文件中所需的时间不同,并且从中间文件中读取数据的数据读取时长也不同,因此,为了确定待同步的数据源,避免在数据源上一次同步过程还未完全结束时即开始下一次同步造成数据同步错乱,可以根据中间文件的最新修改时间以及上一次读取该中间文件的数据读取时长,确定最新同步时间。此处,中间文件的最新修改时间对应上一次数据同步过程中将数据源的数据写入到该中间文件的时间,数据读取时长则对应上一次数据同步过程中将该中间文件的数据写入到待写入目标数据表的时间。其中,中间文件的数据读取时长是基于中间文件的文件大小计算得到的。
若该时间间隔不小于该数据源的预设更新时长,则确定该数据源为待同步的数据源。其中,任一数据源的预设更新时长对应其数据同步频率,数据同步频率越高,预设更新时长越短。
本发明实施例提供的方法,通过为各个数据源设定各自对应的预设更新时长,并在时间间隔达到预设更新时长时,将对应的数据源作为待同步的数据源进行后续的数据同步处理,在保证目标数据库与数据源间数据一致性以满足目标数据库访问需求的同时,尽可能减少数据同步的频率,降低数据库写入带来的资源消耗和时间成本。
基于上述任一实施例,所述任一数据源的预设更新时长是基于所述任一数据源的数据类型和/或所述目标数据库的应用场景类型确定的。
此处,在设置数据源的预设更新时长时,医疗数据源的更新频率越低,其对应的同步频率可以相对越低,预设更新时长则可以相对越长。除此之外,用户对医疗数据源的数据访问频率越低,其对应的同步频率也可以相对越低,预设更新时长也可以相对越长。
考虑到数据源的更新频率与其数据类型相关,例如病历数据的更新频率较低,而就诊数据、医嘱数据等的更新频率则较高,因此,可以根据该数据源的数据类型,设定其对应的预设更新时长。另外,用户对数据源数据的访问频率和目标数据库的应用场景类型相关。例如,若目标数据库的应用场景类型为科研领域,在科研领域,客户对于病患的用药信息、疾病诊断信息以及检查检验信息等数据的访问频率相对较高,但对于患者基本信息等数据的访问频率相对较低。因此,可以根据目标数据库的应用场景类型,推断应用端客户对各个数据源的访问需求,从而设定各个数据源的预设更新时长。
本发明实施例提供的方法,根据任一数据源的数据类型和/或目标数据库的应用场景类型确定该数据源的预设更新时长,可以针对不同数据源设定各自更适合的同步频率,从而在保证目标数据库访问需求的同时,尽可能减少数据同步的频率。
基于上述任一实施例,步骤160具体包括:
将所述中间文件中的数据写入至内存缓冲区中;
将所述内存缓冲区中的数据批量写入至所述待写入目标数据表中。
此处,可以通过目标数据库的BatchInsert机制(批量插入机制),将中间文件中的数据高效地一次性批量直接写入至待写入目标数据表中。若目标数据库不支持BatchInsert机制,目标数据库内部或外部通常会设立内存缓冲区,则可以将中间文件的数据首先批量地写入至内存缓冲区中,然后再将内存缓冲区内的数据批量写入至待写入目标数据表中,以实现数据库的高效写入。
基于上述任一实施例,步骤140之前还包括:
接收用户输入的数据读写配置;
其中,所述数据读写配置包括所述待同步的数据源的连接方式和读取方式,以及所述目标数据库的连接方式。
此处,为了提高数据同步的操作便捷性,可以利用输入输出组件封装本发明中数据处理方法和装置中所述上述文件和数据库的读写操作,对用户只暴露基础的数据读写配置接口。用户通过上述输入输出组件给出的数据读写配置接口输入数据读写配置后,可以根据上述数据读写配置自动执行上述实施例给出的医疗数据ETL任务同步方法。其中,数据读写配置包括待同步的数据源的连接方式和读取方式,例如连接接口和读取脚本(解析器或SQL语句)以及目标数据库的连接方式,例如连接接口。
由于利用输入输出组件将后台复杂的数据处理操作进行了封装,用户只需配置数据源的连接方式和读取方式,以及目标数据库的连接方式,降低了用户的使用门槛以及成本,提高了数据同步的操作便捷性。
本发明实施例提供的方法,通过封装底层数据读写操作,只暴露数据读写配置接口,使得用户只需配置数据源的连接方式和读取方式,以及目标数据库的连接方式,即可进行高效的数据处理操作,提高了数据同步的操作便捷性,优化了用户体验。
基于上述任一实施例,图2为本发明又一实施例提供的医疗数据ETL任务同步方法的流程示意图。如图2所示,该方法由输入输出组件(即图2的虚线框)执行,该方法包括:
用户可以在可视化ETL系统中选择输入输出组件,用以封装数据源和目标数据库的读写操作,同时对用户暴露数据读写配置接口。用户通过该输入输出组件,只需要配置该组件的三个属性,即对数据源的连接方式和读取方式,以及对目标数据库的连接方式,即可完成异构数据在运行时的高效传输与读写,实现快速的数据同步。
用户配置好上述三个属性后,从多个异构数据源中确定当前待同步的数据源。此处,可以根据各个数据源对应的预设更新时长,确定当前有哪些数据源的数据需要同步到目标数据库中。其中,数据源对应的预设更新时长可以根据该数据源的数据类型(例如是结构化数据还是非结构化数据,是动态数据还是静态数据等)和/或目标数据库的应用场景类型(应用场景类型决定了应用端客户对目标数据库的目标数据表的访问需求)进行设定,以获得适合该数据源的同步频率。
一个目标数据表的数据可以来源于多个数据源,如目标数据表“病案表”的数据可以来源于RDBMS的病案首页表,同时还来源于部分xml格式的电子病历数据。因此,可以利用各类数据源对应的解析器对待同步的数据源进行数据解析。随后,基于预先构建的映射关系表,确定待同步的数据源中与待写入目标数据表的字段相匹配的待同步数据,即待写入目标数据表所需要的数据;其中,映射关系表中存储有待写入目标数据表各字段与待同步的数据源的数据之间的映射关系。然后,将待同步数据写入至待写入目标数据表对应的中间文件中。此处,中间文件可以为TXT格式。在将待同步数据写入至中间文件之前,可以对待同步数据进行格式标准化处理,将其统一成标准格式,此外,还可以对待同步数据进行名称标准化处理,以实现命名标准的同一。
将中间文件中的数据批量写入至对应的待写入目标数据表中,实现数据的合并和同步。此处,可以通过目标数据库的BatchInsert机制,将中间文件中的数据高效地批量写入至待写入目标数据表中。若目标数据库不支持BatchInsert机制,则可以将中间文件的数据首先批量地写入至内存缓冲区中,然后将内存缓冲区内的数据批量写入至待写入目标数据表中,以实现数据库的高效写入。
需要说明的是,图2中给出的医疗数据ETL任务同步方法的流程仅为其中一种示例性描述,在实际应用场景中可以采用上述任一实施例或实施例的组合进行数据处理,本发明实施例对此不作任何限定。
下面对本发明提供的医疗数据ETL任务同步装置进行描述,下文描述的医疗数据ETL任务同步装置与上文描述的医疗数据ETL任务同步方法可相互对应参照。
基于上述任一实施例,图3为本发明实施例提供的医疗数据ETL任务同步装置的结构示意图,如图3所示,该装置包括:数据源确定单元310、目标数据表确定单元320、中间文件确定单元330、数据读取单元340、中间文件写入单元350和数据表写入单元360。
其中,数据源确定单元310用于从多个异构数据源中确定若干个待同步的数据源;
目标数据表确定单元320用于基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
中间文件确定单元330用于基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性可以基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;
数据读取单元340用于基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
中间文件写入单元350用于将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;
数据表写入单元360用于将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
本发明实施例提供的装置,基于目标数据库的待写入目标数据表,将待同步的数据源中属性名与待写入目标数据表的字段名称相匹配的待同步数据写入至对应的中间文件中,降低了目标数据库的存储空间占用率以及目标数据库写入的负载,提高了数据同步的效率,同时避免了导入过多无用数据;此外,通过将与存在数据关联的待写入目标数据表的字段相匹配的待同步数据写入至同一中间文件中,并将中间文件中的数据批量写入至待写入目标数据表中,显著减少了中间文件的读写效率和待写入目标数据表的写入频率,提高了数据库写入的效率以及数据同步的效率。
基于上述任一实施例,数据读取单元340具体用于:
获取所述对应待同步的数据源中的更新数据;
基于映射关系表,确定所述更新数据中属性名与所述任一待写入目标数据表的任一字段名称存在映射关系的数据,作为所述待同步数据;其中,所述映射关系表中存储有所述任一待写入目标数据表各字段名称与所述对应待同步的数据源的数据的属性名之间的映射关系;
所述映射关系是对所述待写入目标数据表的数据表描述文件和所述对应待同步的数据源中各数据的属性名进行语义分析,得到所述任一待写入目标数据表各字段名称的语义信息以及所述对应待同步的数据源中各数据的属性名的语义信息后,基于所述各字段名称的语义信息和所述各数据的属性名的语义信息之间的相似度,以及所述任一待写入目标数据表各字段和所述对应待同步的数据源中各数据的取值范围确定得到的。
本发明实施例提供的装置,通过获取待同步的数据源中的更新数据,并基于映射关系表,确定更新数据中与待写入目标数据表的字段存在映射关系的待同步数据,可以从繁复且不规范的海量医疗数据中快速筛选出待写入目标数据表需要的待同步数据,有助于进一步提高数据同步的效率。
基于上述任一实施例,所述获取所述对应待同步的数据源中的更新数据,具体包括:
基于所述对应待同步的数据源的格式类型,确定所述对应待同步的数据源的解析器;
基于所述解析器对所述对应待同步的数据源进行解析,得到所述对应待同步的数据源中的更新数据。
基于上述任一实施例,所述将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中,具体包括:
基于所述映射关系表,对所述待同步数据进行名称标准化处理,得到命名规范化数据;其中,所述映射关系表是对所述中间文件的签名信息进行解析后得到的;
基于所述待写入目标数据表的格式类型,对所述命名规范化数据进行格式标准化处理,得到待写入数据;
将所述待写入数据写入至所述中间文件中。
本发明实施例提供的装置,从中间文件的签名信息解析得到映射关系表后,利用映射关系表对待同步数据进行名称标准化处理后,再根据待写入目标数据表的格式类型,对命名规范化数据进行格式标准化处理,可以提高将中间文件的数据写入至待写入目标数据表的效率并避免数据冲突。
基于上述任一实施例,数据源确定单元310具体用于:
确定当前时间与任一数据源的最新同步时间之间的时间间隔;其中,所述最新同步时间是基于所述中间文件的最新修改时间以及所述中间文件的数据读取时长确定的;
若所述时间间隔不小于所述任一数据源的预设更新时长,则确定所述任一数据源为所述待同步的数据源。
本发明实施例提供的装置,通过为各个数据源设定各自对应的预设更新时长,并在时间间隔达到预设更新时长时,将对应的数据源作为待同步的数据源进行后续的数据同步处理,在保证目标数据库与数据源间数据一致性以满足目标数据库访问需求的同时,尽可能减少数据同步的频率,降低数据库写入带来的资源消耗和时间成本。
基于上述任一实施例,所述中间文件的数据读取时长是基于所述中间文件的文件大小计算得到的。
基于上述任一实施例,所述任一数据源的预设更新时长是基于所述任一数据源的数据类型和/或所述目标数据库的应用场景类型确定的。
本发明实施例提供的装置,根据任一数据源的数据类型和/或目标数据库的应用场景类型确定该数据源的预设更新时长,可以针对不同数据源设定各自更适合的同步频率,从而在保证目标数据库访问需求的同时,尽可能减少数据同步的频率。
基于上述任一实施例,数据表写入单元360具体用于:
将所述中间文件中的数据写入至内存缓冲区中;
将所述内存缓冲区中的数据批量写入至对应的待写入目标数据表中。
基于上述任一实施例,该装置还包括配置单元,在基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据之前,配置单元用于:
接收用户输入的数据读写配置;
其中,所述数据读写配置包括所述待同步的数据源的连接方式和读取方式,以及所述目标数据库的连接方式。
本发明实施例提供的装置,通过封装底层数据读写操作,只暴露数据读写配置接口,使得用户只需配置数据源的连接方式和读取方式,以及目标数据库的连接方式,即可进行高效的数据处理操作,提高了数据同步的操作便捷性,优化了用户体验。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行医疗数据ETL任务同步方法,该方法包括:从多个异构数据源中确定若干个待同步的数据源;基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性可以基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的医疗数据ETL任务同步方法,该方法包括:从多个异构数据源中确定若干个待同步的数据源;基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性可以基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的医疗数据ETL任务同步方法,该方法包括:从多个异构数据源中确定若干个待同步的数据源;基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性可以基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的待写入目标数据表对应同一中间文件;基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种医疗数据ETL任务同步方法,其特征在于,包括:
从多个异构数据源中确定若干个待同步的数据源;
基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的多个待写入目标数据表对应同一中间文件,所述同一中间文件用于存储与所述存在数据关联的多个待写入目标数据表相匹配的待同步数据;
基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;
将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
2.根据权利要求1所述的方法,其特征在于,所述基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据,具体包括:
获取所述对应待同步的数据源中的更新数据;
基于映射关系表,确定所述更新数据中属性名与所述任一待写入目标数据表的任一字段名称存在映射关系的数据,作为所述待同步数据;其中,所述映射关系表中存储有所述任一待写入目标数据表各字段名称与所述对应待同步的数据源的数据的属性名之间的映射关系;
所述映射关系是对所述待写入目标数据表的数据表描述文件和所述对应待同步的数据源中各数据的属性名进行语义分析,得到所述任一待写入目标数据表各字段名称的语义信息以及所述对应待同步的数据源中各数据的属性名的语义信息后,基于所述各字段名称的语义信息和所述各数据的属性名的语义信息之间的相似度,以及所述任一待写入目标数据表各字段和所述对应待同步的数据源中各数据的取值范围确定得到的。
3.根据权利要求2所述的方法,其特征在于,所述获取所述对应待同步的数据源中的更新数据,具体包括:
基于所述对应待同步的数据源的格式类型,确定所述对应待同步的数据源的解析器;
基于所述解析器对所述对应待同步的数据源进行解析,得到所述对应待同步的数据源中的更新数据。
4.根据权利要求2所述的方法,其特征在于,所述将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中,具体包括:
基于所述映射关系表,对所述待同步数据进行名称标准化处理,得到命名规范化数据;其中,所述映射关系表是对所述中间文件的签名信息进行解析后得到的;
基于所述待写入目标数据表的格式类型,对所述命名规范化数据进行格式标准化处理,得到待写入数据;
将所述待写入数据写入至所述中间文件中。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述从多个异构数据源中确定若干个待同步的数据源,具体包括:
确定当前时间与任一数据源的最新同步时间之间的时间间隔;其中,所述最新同步时间是基于所述中间文件的最新修改时间以及所述中间文件的数据读取时长确定的;
若所述时间间隔不小于所述任一数据源的预设更新时长,则确定所述任一数据源为所述待同步的数据源。
6.根据权利要求5所述的方法,其特征在于,所述任一数据源的预设更新时长是基于所述任一数据源的数据类型和/或所述目标数据库的应用场景类型确定的。
7.根据权利要求5所述的方法,其特征在于,所述中间文件的数据读取时长是基于所述中间文件的文件大小计算得到的。
8.根据权利要求1至4任一项所述的方法,其特征在于,所述将所述中间文件中的数据批量写入至对应的待写入目标数据表中,具体包括:
将所述中间文件中的数据写入至内存缓冲区中;
将所述内存缓冲区中的数据批量写入至对应的待写入目标数据表中。
9.根据权利要求1至4任一项所述的方法,其特征在于,所述基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据,之前还包括:
接收用户输入的数据读写配置;
其中,所述数据读写配置包括所述待同步的数据源的连接方式和读取方式,以及所述目标数据库的连接方式。
10.一种医疗数据ETL任务同步装置,其特征在于,包括:
数据源确定单元,用于从多个异构数据源中确定若干个待同步的数据源;
目标数据表确定单元,用于基于所述若干个待同步的数据源与目标数据库中目标数据表之间的关联关系,确定所述若干个待同步的数据源对应的若干个待写入目标数据表;
中间文件确定单元,用于基于所述若干个待写入目标数据表之间的数据关联性,确定所述若干个待写入目标数据表对应的中间文件;其中,任意两个待写入目标数据表之间的数据关联性基于所述两个待写入目标数据表的字段引用关系和/或字段相似性确定得到,且存在数据关联的多个待写入目标数据表对应同一中间文件,所述同一中间文件用于存储与所述存在数据关联的多个待写入目标数据表相匹配的待同步数据;
数据读取单元,用于基于任一待写入目标数据表,获取对应待同步的数据源中属性名与所述任一待写入目标数据表的字段名称相匹配的待同步数据;
中间文件写入单元,用于将所述待同步数据写入至相匹配的待写入目标数据表对应的中间文件中;
数据表写入单元,用于将所述中间文件中的数据批量写入至对应的待写入目标数据表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575921.7A CN113961569B (zh) | 2021-12-22 | 2021-12-22 | 一种医疗数据etl任务同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575921.7A CN113961569B (zh) | 2021-12-22 | 2021-12-22 | 一种医疗数据etl任务同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961569A CN113961569A (zh) | 2022-01-21 |
CN113961569B true CN113961569B (zh) | 2022-04-12 |
Family
ID=79473621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111575921.7A Active CN113961569B (zh) | 2021-12-22 | 2021-12-22 | 一种医疗数据etl任务同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961569B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076574B (zh) * | 2023-10-16 | 2024-01-23 | 北京持安科技有限公司 | 一种可编排多数据源数据同步聚合方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079260A (ja) * | 2004-09-08 | 2006-03-23 | Nec Corp | データベースへのデータ入力方法、データ入力装置、データベースシステム、及びプログラム |
CN101751397B (zh) * | 2008-12-04 | 2013-03-27 | 中国移动通信集团安徽有限公司 | 一种将文件导入数据库的方法及装置 |
CN107203642A (zh) * | 2017-06-19 | 2017-09-26 | 山东浪潮通软信息科技有限公司 | 一种数据同步方法和装置 |
CN108009282A (zh) * | 2017-12-22 | 2018-05-08 | 武汉楚鼎信息技术有限公司 | 一种json数据同步到关系型数据库的方法及系统装置 |
CN109325037A (zh) * | 2018-08-17 | 2019-02-12 | 中国平安人寿保险股份有限公司 | 一种针对海量数据的数据同步方法、存储介质和服务器 |
CN111090640A (zh) * | 2019-11-13 | 2020-05-01 | 山东中磁视讯股份有限公司 | 一种etl数据清洗方法及系统 |
CN113111084B (zh) * | 2021-03-31 | 2024-06-18 | 北京沃东天骏信息技术有限公司 | 一种处理数据的方法和装置 |
CN113254534B (zh) * | 2021-06-04 | 2023-04-11 | 四川省明厚天信息技术股份有限公司 | 数据同步方法、装置及计算机存储介质 |
-
2021
- 2021-12-22 CN CN202111575921.7A patent/CN113961569B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113961569A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467220B2 (en) | System and method for generating an effective test data set for testing big data applications | |
WO2018177252A1 (zh) | 一种基于区块链的数据存储以及查询的方法及装置 | |
CN110032575A (zh) | 数据查询方法、装置、设备和存储介质 | |
US8418142B2 (en) | Architecture for data validation | |
US8601438B2 (en) | Data transformation based on a technical design document | |
US20160171019A1 (en) | System and method for modelling data | |
US20060047648A1 (en) | Comprehensive query processing and data access system and user interface | |
US9967370B2 (en) | OData enabled mobile software applications | |
CN111414403B (zh) | 数据访问方法和装置、数据存储方法和装置 | |
US20100293161A1 (en) | Automatically avoiding unconstrained cartesian product joins | |
US20140136511A1 (en) | Discovery and use of navigational relationships in tabular data | |
CN109582672B (zh) | 数据处理方法、装置及介质 | |
CN114049927A (zh) | 疾病数据处理方法、装置、电子设备及可读介质 | |
CN113961569B (zh) | 一种医疗数据etl任务同步方法和装置 | |
US20180046779A1 (en) | Caching technology for clinical data sources | |
CN113886485A (zh) | 数据处理方法、装置、电子设备、系统和存储介质 | |
CN114911775A (zh) | 一种动态表单、字段配置及存储的方法及系统 | |
CN110955719B (zh) | 一种数据存取处理设备、系统和方法 | |
EP3567497A1 (en) | Remote data blending | |
US8290922B2 (en) | Data framework to enable rich processing of data from any arbitrary data source | |
US11397781B2 (en) | Database search integration | |
CN111639087A (zh) | 数据库中数据更新方法、装置和电子设备 | |
US10956386B2 (en) | Methods and apparatuses for automated performance tuning of a data modeling platform | |
CN116561208A (zh) | 一种统一OpenAPI查询接口的方法、装置和设备 | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |