CN113963763A - 医疗数据存储的分区变更方法以及装置 - Google Patents
医疗数据存储的分区变更方法以及装置 Download PDFInfo
- Publication number
- CN113963763A CN113963763A CN202111224593.6A CN202111224593A CN113963763A CN 113963763 A CN113963763 A CN 113963763A CN 202111224593 A CN202111224593 A CN 202111224593A CN 113963763 A CN113963763 A CN 113963763A
- Authority
- CN
- China
- Prior art keywords
- medical data
- newly added
- partition
- index information
- historical
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- G16H10/00—ICT specially adapted for the handling or processing of patient-related medical or healthcare data
- G16H10/60—ICT specially adapted for the handling or processing of patient-related medical or healthcare data for patient-specific data, e.g. for electronic patient records
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
-
- 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
-
- 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/24—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Epidemiology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Primary Health Care (AREA)
- Public Health (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Medical Treatment And Welfare Office Work (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种医疗数据存储的分区变更方法以及装置,包括:获取当前时刻的新增医疗数据;若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。该方案高效的实现了分区变更操作,保证了分布式文件系统中存储的医疗数据的准确性。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种医疗数据存储的分区变更方法以及装置。
背景技术
大批量数据在HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)进行存储的场景下,可以对HDFS中的文件进行分区存储,即将数据分别存储在多个不同的目录下,以便于数据查询时根据分区目录进行快速检索。
对于医院的多个业务系统产生的大批量医疗数据,在将其按hudi模式存储至分布式文件系统时,也可以采用分区存储的方式,即按业务字段进行分区存储,然后在查询时通过对应的业务字段进行检索。例如,可以按医疗数据产生时间的区别,分别将数据存储至不同日期对应的目录,例如将2020年1月1日产生的医疗数据存储在分布式文件系统的“2020-01-01”目录上,在数据检索的时候,若想查询2020年1月1日产生的医疗数据,只需要检索“2020-01-01”目录即可查询到想要的数据,避免全文检索保证了查询效率。
分区的目录一般会根据医疗数据的业务字段来确定,例如,医院医嘱数据会根据医嘱的时间进行划分分区目录,在查询的时候带上医嘱的时间就能定位想要查询的医嘱数据。但是,医疗数据中的业务字段往往会随着患者的就诊过程发生变化,若依然将业务字段发生变化的新增医疗数据存储在原先的分区目录之下,会导致在根据业务字段查询时检索不到该新增医疗数据。因此在对该新增业务数据进行存储时,需要对其存储的分区进行变更,而现有技术中没有针对性的分区变更方案,因此有必要提供一种医疗数据存储的分区变更方法。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,本申请实施例所提供的技术方案如下:
第一方面,本申请实施例提供了一种医疗数据存储的分区变更方法,包括:
获取当前时刻的至少一个新增医疗数据;
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;
基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
在本申请的一种可选实施例中,该方法还包括:
若分布式文件系统在当前时刻发生数据回滚,则从预设索引数据库中,获取从数据回滚到的时刻至当前时刻的至少一个当前索引信息,并获取数据回滚到的时刻之前的至少一个历史索引信息;
对于每一当前索引信息,若至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
在本申请的一种可选实施例中,预设索引数据库为Hbase数据库,获取数据回滚到的时刻的至少一个历史索引数据,包括:
获取Hbase数据库在当前时刻的版本,并获取Hbase数据库相对于当前时刻的版本的上一个版本;
确定上一个版本的Hbase数据库中的至少一个索引信息为至少一个历史索引信息。
在本申请的一种可选实施例中,该方法还包括:
对于每一当前索引信息,若至少一个历史索引数据中不存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息。
在本申请的一种可选实施例中,获取当前时刻的至少一个新增医疗数据,包括:
获取当前时刻的至少一个初始新增医疗数据;
对于主键值相同的各初始新增医疗数据,保留产生时刻最新的初始新增医疗数据,并删除其他初始新增医疗数据,得到至少一个新增医疗数据。
在本申请的一种可选实施例中,初始新增医疗数据为未经去重处理的新增医疗数据。
在本申请的一种可选实施例中,从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区,包括:
基于历史索引信息获取历史医疗数据,并基于历史医疗数据构建对应的删除数据,删除数据的主键值和分区键值与历史医疗数据相同,且删除数据的其他字段的值为空;
基于新增医疗数据的指定字段的值确定第一目标文件的标识信息,基于新增医疗数据的分区键值确定第一目标分区的分区路径;
基于历史索引信息中的文件的标识信息和分区路径,将删除数据写入历史医疗数据所在的文件,并基于第一目标文件的标识信息和第一目标分区的分区路径,将新增医疗数据写入第一目标文件后存储至第一目标分区。
在本申请的一种可选实施例中,该方法还包括:
对于每一新增医疗数据,若在预设索引数据库中未查询到与该新增医疗数据的主键值相同的历史索引信息,则将该新增医疗数据写入第二目标文件后存储至分布式文件系统的第二目标分区,并基于该新增医疗数据的分区键值、第二目标文件的标识信息以及第二目标分区的分区路径,获取该新增医疗数据的第二当前索引信息,并将第二当前索引信息存储至预设索引数据库。
在本申请的一种可选实施例中,将该新增医疗数据写入第二目标文件后存储至分布式文件系统的第二目标分区,包括:
基于新增医疗数据的指定字段的值确定第二目标文件的标识信息,基于新增医疗数据的分区键值确定第二目标分区的分区路径;
基于第二目标文件的标识信息和第二目标分区的分区路径,将新增医疗数据写入第二目标文件后存储至第二目标分区。
在本申请的一种可选实施例中,该方法还包括:
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值相同,则利用该新增医疗数据替换历史医疗数据。
第二方面,本申请实施例提供了一种医疗数据存储的分区变更装置,包括:
新增医疗数据获取模块,用于获取当前时刻的至少一个新增医疗数据;
数据分区变更模块,用于对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;
索引信息更新模块,用于基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
在本申请的一种可选实施例中,该装置还包括索引信息回复模块,用于:
若分布式文件系统在当前时刻发生数据回滚,则从预设索引数据库中,获取从数据回滚到的时刻至当前时刻的至少一个当前索引信息,并获取数据回滚到的时刻之前的至少一个历史索引信息;
对于每一当前索引信息,若至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
在本申请的一种可选实施例中,预设索引数据库为Hbase数据库,索引信息恢复模块具体用于:
获取Hbase数据库在当前时刻的版本,并获取Hbase数据库相对于当前时刻的版本的上一个版本;
确定上一个版本的Hbase数据库中的至少一个索引信息为至少一个历史索引信息。
在本申请的一种可选实施例中,索引信息恢复模块进一步用于:
对于每一当前索引信息,若至少一个历史索引数据中不存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息。
在本申请的一种可选实施例中,新增医疗数据获取模块具体用于:
获取当前时刻的至少一个初始新增医疗数据;
对于主键值相同的各初始新增医疗数据,保留产生时刻最新的初始新增医疗数据,并删除其他初始新增医疗数据,得到至少一个新增医疗数据。
在本申请的一种可选实施例中,初始新增医疗数据为未经去重处理的新增医疗数据。
在本申请的一种可选实施例中,数据分区变更模块具体用于:
基于历史索引信息获取历史医疗数据,并基于历史医疗数据构建对应的删除数据,删除数据的主键值和分区键值与历史医疗数据相同,且删除数据的其他字段的值为空;
基于新增医疗数据的指定字段的值确定第一目标文件的标识信息,基于新增医疗数据的分区键值确定第一目标分区的分区路径;
基于历史索引信息中的文件的标识信息和分区路径,将删除数据写入历史医疗数据所在的文件,并基于第一目标文件的标识信息和第一目标分区的分区路径,将新增医疗数据写入第一目标文件后存储至第一目标分区。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
对于每一新增医疗数据,若在预设索引数据库中未查询到与该新增医疗数据的主键值相同的历史索引信息,则将该新增医疗数据写入第二目标文件后存储至分布式文件系统的第二目标分区,并基于该新增医疗数据的分区键值、第二目标文件的标识信息以及第二目标分区的分区路径,获取该新增医疗数据的第二当前索引信息,并将第二当前索引信息存储至预设索引数据库。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
基于新增医疗数据的指定字段的值确定第二目标文件的标识信息,基于新增医疗数据的分区键值确定第二目标分区的分区路径;
基于第二目标文件的标识信息和第二目标分区的分区路径,将新增医疗数据写入第二目标文件后存储至第二目标分区。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值相同,则利用该新增医疗数据替换历史医疗数据。
第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器;
存储器中存储有计算机程序;
处理器,用于执行计算机程序以实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
第五方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
本申请提供的技术方案带来的有益效果是:
通过查询预设索引数据库中是否存在新增医疗数据对应的历史索引信息,并在存在历史索引信息时,比较新增医疗数据的分区键值与历史索引信息的分区键值来确定新增医疗数据是否需要进行分区变更,并在需要进行分区变更时删除对应的历史医疗数据,并将新增医疗数据存储至分布式文件系统的新的分区中,同时更新预设索引数据库中的当前索引信息,高效的实现了分区变更操作,保证了分布式文件系统中存储的医疗数据的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种医疗数据存储的分区变更方法得流程示意图;
图2为本申请实施例的一个示例中新增医疗数据的分区存储过程种分区变更的流程示意图;
图3为本申请实施例的一个示例中索引信息回收的过程的流程示意图;
图4为本申请实施例提供了一种医疗数据存储的分区变更装置的结构框图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
针对上述问题,本申请实施例提供了一种医疗数据存储的分区变更方法以及对应的装置。下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种医疗数据存储的分区变更方法得流程示意图,如图1所示,该方法可以包括:
步骤S101,获取当前时刻的至少一个新增医疗数据。
其中,新增医疗数据为医院各业务系统当前时刻新增的业务数据,这些新增医疗数据需要被存储至分布式文件系统的对应分区中,以便于用户(例如,医生或科研人员)后续查询获取。进一步地,新增医疗数据包括多个字段,主要包括主键、分区键、以及决定存储文件的指定字段,其中,通过新增医疗数据的分区键值可以确定其在分布式文件系统中所属的分区,通过指定字段的值可以确定其在所属分区中所处的文件。
具体地,在有新增医疗数据产生的当前时刻,获取需要存储至分布式文件系统的新增医疗数据,并对每一条新增医疗数据进行后续处理。
步骤S102,对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区。
其中,每一条新增医疗数据在存储至分布式文件系统中时,会在预设索引数据库中生成一条对应的索引信息,该索引信息可以包括对应的新增医疗数据的主键值、提交时间(coommit_ts)、写入时间(wirte_time)、写入的文件的标识信息(即文件名)(file_name)以及所属分区的分区路径(partion_path)(即对应的分区键值)等信息。进一度地,为了便于区分,可以将同一主键值对应的医疗数据在当前时刻之前记录的索引信息称为历史索引信息,当前时刻完成存储后记录的索引信息称为当前索引信息。
具体地,对于上一步骤获取到的每一条新增医疗数据,在将其存储至分布式文件系统时,首先要确定该新增医疗数据是否发生了分区变更,即确定在分布式文件系统中是否存储有该新增医疗数据的历史医疗数据,且该新增医疗数据相对于历史医疗数据的分区键值是否发生了变化。然后,若确定该新增医疗数据发生了分区变更,则需要采用本申请提供的方案进行分区变更操作以完成该新增医疗数据的存储。
具体来说,由于历史索引信息中包含有历史医疗数据的主键值,因此可以通过比较新增医疗数据的主键值与历史索引信息中的主键值来确定在分布式文件系统中是否存在对应的历史医疗数据。
那么,确定预设索引数据库中是否存在与该新增医疗数据主键值相同的历史索引信息,若存在,则说明在分布式文件系统中存储有该新增医疗数据的历史医疗数据,即说明该新增医疗数据为历史医疗数据的修改数据。若不存在,则说明在分布式文件系统中没有该新增医疗数据的历史医疗数据,即说明该新增医疗数据为新增数据。
若确定新增医疗数据为新增数据,则不涉及分区变更的情形,直接按配置将新增医疗数据存储至分布式文件系统。若确定新增医疗数据为修改数据,则需要进一步确定新增医疗数据相对于对应的历史新增医疗数据是否发生分区变更。
由于历史索引信息中包含有历史医疗数据的分区键值,因此可以通过比较新增医疗数据的分区键值与历史索引信息中的分区值来确定是否发生了分区变更。那么,确定新增医疗数据的分区键值与历史索引信息中的分区键值是否相同。若相同,则说明没有发生分区变更,直接利用该新增医疗数据替换历史医疗数据。若不相同,则说明发生了分区变更,那么需要将新增医疗数据写入新的文件并存储至新的分区,即将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区,同时,为了防止一个主键值对应多个数据内容,造成数据错误,需要将该新增医疗数据对应的历史医疗数据删除。因此,当新增医疗数据为对应的历史医疗数据的修改数据,且发生了分区变更时,通过本申请的方式实现了分区变更存储。
举例来说,在分布式文件系统中存储有历史医疗数据,其主键值为ID1,分区键值为数据产生时间20210901(即该历史医疗数据存储在20210901对应的分区),名称字段键值为A,如表1所示。
表1
主键值 | 分区键值(产生时间) | 名称字段键值 |
ID1 | 20210901 | A |
当前时刻获取到对应的新增医疗数据,如果其主键值为ID1,分区键值为数据产生时间20210902(即该新增医疗数据需要变更存储至20210902对应的分区),名称字段键值为B,如表2所示。那么,通过前文描述的方案,确定该新增医疗数据为对应的历史医疗数据的修改数据,且相对于历史医疗数据发生了分区变更,那么,需要将该新增医疗数据存储至新的分区(即20210902对应的分区),并删除表1所示的历史医疗数据。
表2
主键值 | 分区键值(产生时间) | 名称字段键值 |
ID1 | 20210902 | B |
当前时刻获取到对应的新增医疗数据,如果其主键值为ID1,分区键值为数据产生时间20210901,名称字段键值为C,如表3所示。那么,通过前文描述的方案,确定该新增医疗数据为对应的历史医疗数据的修改数据,且相对于历史医疗数据没有分区变更,那么,直接利用该新增医疗数据替换对应的历史医疗数据,换言之,将该新增医疗数据存储至20210901对应的分区,并删除该分区表1所示的历史数据。
表3
主键值 | 分区键值(产生时间) | 名称字段键值 |
ID1 | 20210901 | C |
进一步地,根据前文描述可知,本申请实施例在对新增医疗数据进行存储之前,需要确定新增医疗数据的类型。首先,确定新增医疗数据为新增数据还是修改数据,具体来说,若新增医疗数据不存在对应的历史医疗数据,则确定其为新增数据,若新增医疗数据存在对应的历史医疗数据,则确定其为修改数据。然后,进一步确定修改数据是否涉及分区变更,若相对于历史医疗数据,该修改数据的分区键值不变,则确定其不涉及分区变更,若相对于历史医疗数据,该修改数据的分区键值发生变化,则确定其涉及分区变更。本申请的方案,主要解决的是涉及分区变更的修改数据的存储问题,同时也提供了新增数据和不涉及分区变更的修改数据的存储方案。
需要说明的是,本申请实施例中,在对医疗数据进行存储时,基于hudi的数据存储方式将医疗数据落地至分布式文件系统。
步骤S103,基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
具体地,在将该新增医疗数据存储至分布式文件系统后,由于其分区发生了变更,则需要同步更新其在预设索引数据库中的索引信息,具体来说,通过该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,替换对应的历史索引信息中的分区键值、文件的标识信息以及分区的分区路径得到第一当前索引信息,将该第一当前索引信息存储在预设索引数据库中,以供后续使用。
需要说明的是,对于当前时刻获取到的所有新增医疗数据,分别采用上述方案进行分区变更判断,并进行对应的处理,最后即完成了这些新增医疗数据的存储。
本申请提供的方案,通过查询预设索引数据库中是否存在新增医疗数据对应的历史索引信息,并在存在历史索引信息时,比较新增医疗数据的分区键值与历史索引信息的分区键值来确定新增医疗数据是否需要进行分区变更,并在需要进行分区变更时删除对应的历史医疗数据,并将新增医疗数据存储至分布式文件系统的新的分区中,同时更新预设索引数据库中的当前索引信息,高效的实现了分区变更操作,保证了分布式文件系统中存储的医疗数据的准确性。
在本申请的一种可选实施例中,获取当前时刻的至少一个新增医疗数据,包括:
获取当前时刻的至少一个初始新增医疗数据;
对于主键值相同的各初始新增医疗数据,保留产生时刻最新的初始新增医疗数据,并删除其他初始新增医疗数据,得到至少一个新增医疗数据。
其中,初始新增医疗数据为未经去重处理的新增医疗数据。
具体地,在当前时刻获取到多个初始新增医疗数据,在这些初始新增医疗数据中可能存在多个主键值相同的初始新增医疗数据,对于这些主键值相同的初始医疗数据仅需要将产生时刻最新的初始医疗数据存储至分布式文件系统,因此需要对这些主键相同的初始新增医疗数据进行去重。具体来说,将这些主键值相同的多个初始新增医疗数据中产生时刻较晚的初始新增医疗数据删除,仅保留产生时刻最新的初始新增医疗数据,即得到后续本申请方案需要进行处理的多个新增医疗数据。
在本申请的一种可选实施例中,从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区,包括:
基于历史索引信息获取历史医疗数据,并基于历史医疗数据构建对应的删除数据,删除数据的主键值和分区键值与历史医疗数据相同,且删除数据的其他字段的值为空;
基于新增医疗数据的指定字段的值确定第一目标文件的标识信息,基于新增医疗数据的分区键值确定第一目标分区的分区路径;
基于历史索引信息中的文件的标识信息和分区路径,将删除数据写入历史医疗数据所在的文件,并基于第一目标文件的标识信息和第一目标分区的分区路径,将新增医疗数据写入第一目标文件后存储至第一目标分区。
具体地,对于每一条新增医疗数据,在确定该新增医疗数据为对应的历史医疗数据的修改数据,且该修改数据发生的分区变更的情况下,则需要执行本申请方案中的删除历史医疗数据以及将新增医疗数据存储至分布式文件系统的新的分区中的操作。
具体来说,对于删除历史医疗数据,首先获取该历史医疗数据,并将该历史医疗数据中除主键值和分区键值保持不变,将该历史医疗数据中其他字段的值设置为空,得到一条对应的删除数据。然后,按历史索引信息中的分区路径和文件名,将该删除数据写入历史医疗数据所属分区的所处文件中,进而将该历史医疗数据删除。对于将新增医疗数据存储至分布式文件系统的新的分区中,则基于该新增医疗数据的分区键值确定其在分布式文件系统中的分区路径,并基于该新增医疗数据的指定字段的值确定其写入的文件名,进而根据确定的分区路径和文件名,将该新增医疗数据写入第一目标文件后存储至第一目标分区。
在本申请的一种可选实施例中,该方法还可以包括:
对于每一新增医疗数据,若在预设索引数据库中未查询到与该新增医疗数据的主键值相同的历史索引信息,则将该新增医疗数据写入第二目标文件后存储至分布式文件系统的第二目标分区,并基于该新增医疗数据的分区键值、第二目标文件的标识信息以及第二目标分区的分区路径,获取该新增医疗数据的第二当前索引信息,并将第二当前索引信息存储至预设索引数据库;
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值相同,则利用该新增医疗数据替换历史医疗数据。
具体地,由前文描述可知,若未查询到该新增医疗数据的主键值相同的历史索引信息,则可以确定该新增医疗数据不存在对应的历史医疗数据,为新增医疗数据,则直接将该新增医疗数据存储至分布式文件系统对应的分区的文件中。具体来说,对于为新增数据的新增医疗数据,根据其指定字段的值确定其第二目标文件的标识信息,根据其分区键值确定其第二目标分区的分区路径,然后按照第二目标文件的标识信息和第二目标分区的分区路径进行存储。同时,根据其分区键值、第二目标文件的标识信息以及第二分区的分区路径,生成其对应的第二当前索引信息,并将该第二当前索引信息存储至预设索引数据库中。
若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值相同,则可以确定该新增医疗数据存在对应的历史医疗数据,为对应的历史医疗数据的修改数据,同时由于其与对应的历史医疗数据的分区键值相同,说明该修改数据没有发生分区变更。因此,直接采用该新增医疗数据替换对应的历史医疗数据,同时,由于其在分布式文件系统中的文件名和分区路径并没有改变,因此不需要更新其索引信息,即其当前索引信息为历史索引信息。
下面通过图2对本申请实施例中新增医疗数据的分区存储过程中分区变更的进行进一步说明,该过程可以包括以下几个步骤:
步骤(1):从医院业务系统中获取新增医疗数据;
步骤(2):从Hbase(即预设索引数据库)中查询是否存在与新增医疗数据对应的历史索引信息,若未查询到则进入步骤(3);若查询到则进入步骤(4)。
步骤(3):若未查询到,则确定该新增医疗数据为新增数据,则将该新增医疗数据直接写入对应的文件后存储至分布式文件系统中对应的分区。
步骤(4):若查询到,则确定该新增医疗数据为修改数据,并进一步确定修改数据的分区键值是否与历史索引信息中的分区键值相同,若相同到则进入步骤(5);若不相同查询到则进入步骤(6)。
步骤(5)若相同,则确定该新增医疗数据为不涉及分区变更的修改数据,则直接利用该新增医疗数据替换分布式文件系统中对应的历史医疗数据。
步骤(6)若不相同,则确定该新增医疗数据为涉及分区变更的修改数据,则删除分布式文件系统中对应的历史医疗数据,并将该新增医疗数据写入新的文件后存储至分布式文件系统的新的分区中。同时,更新Hbase中该新增医疗数据的当前索引信息。
需要说明的是,对于步骤(3)中的新增数据,在将其写入对应的分区后,也需要在Hbase中写入其当前索引信息。
在对新增医疗数据进行分区存储过程中可能出现写入失败而发生异常,此时分布式文件系统可以通过数据回滚将分布式文件系统中的文件进行回收,但在预设索引数据库中的索引信息不能同时进行回收,使得在下次使用索引信息进行分区变更时,定位到错误的路径。因此,为了避免上述问题,本申请实施例中引入了与数据回滚同步进行的索引信息回收方案,下面将对此方案进行详细描述。
在本申请的一种可选实施例中,该方法还可以包括:
若分布式文件系统在当前时刻发生数据回滚,则从预设索引数据库中,获取从数据回滚到的时刻至当前时刻的至少一个当前索引信息,并获取数据回滚到的时刻的至少一个历史索引信息;
对于每一当前索引信息,若至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
具体地,若分布式文件系统在当前时刻发生数据回滚,说明在当前时刻存储发生错误,那么在进行数据回滚的同时,需要对预设索引数据库中的索引信息也进行回收操作,以保证索引信息的准确性。
具体来说,首先,在数据回滚的同时,获取从数据回滚至的时刻至当前时刻之间的所有索引信息,即所有当前索引信息。同时,获取数据回滚到的时刻的所有索引信息,即所有历史索引信息。可以理解的是,这些当前索引信息中,有些是新增数据的当前索引信息,有些是涉及分区变更的修改数据的当前索引信息。那么,由于新增数据没有对应的历史医疗数据,则其当前索引信息没有对应的历史索引信息,由于修改数据有对应的历史医疗数据,则其当前索引信息有对应的历史索引信息。那么,在对这两种索引信息进行回收时,采用不同的回收方式。
进一步地,对于每一当前索引信息,若至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。即对于涉及分区变更的修改数据的索引信息,删除其当前索引信息,恢复其对应的历史索引信息。
对于每一当前索引信息,若至少一个历史索引数据中不存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息。即对于新增数据的索引信息,直接删除其当前索引信息即可。
在本申请的一种可选实施例中,预设索引数据库为Hbase数据库,获取数据回滚到的时刻的至少一个历史索引数据,包括:
获取Hbase数据库在当前时刻的版本,并获取Hbase数据库相对于当前时刻的版本的上一个版本;
确定上一个版本的Hbase数据库中的至少一个索引信息为至少一个历史索引信息。
具体地,由于Hbase数据库有多个版本,在不同阶段采用不同版本,为了获取历史索引信息,即可通过获取当前时刻对应的上一个版本的索引信息,将这些索引信息作为对应的历史索引信息。
下面通过图3对本申请实施例中索引信息回收的过程进行进一步说明,
该过程可以包括以下几个步骤:
步骤(1)在分布式文件系统发生数据回滚时,从Hbase中获取从数据回滚到的时刻至当前时刻的多个当前索引信息,并获取数据回滚到的时刻的多个历史索引信息。
步骤(2)对于每一当前索引信息,判断是否有与该当前索引信息主键值相同的历史索引信息,若有到则进入步骤(3);若没有到则进入步骤(4)。
步骤(3)若有,则从Hbase中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
步骤(4)若没有,则从Hbase中删除该当前索引信息。
由以上描述可知,图2为正常的医疗数据分区存储流程,当图2中的数据分区存储过程发生失败时,分布式文件系统会进行数据回滚。在发生数据回滚时,即需要对预设索引数据库(即Hbase)中的索引信息按图3所示流程进行处理,以保证Hbase中索引信息的准确性。
图4为本申请实施例提供了一种医疗数据存储的分区变更装置的结构框图,如图4所示,该装置400可以包括:新增医疗数据获取模块401、数据分区变更模块402以及索引信息更新模块403,其中:
新增医疗数据获取模块401用于获取当前时刻的至少一个新增医疗数据;
数据分区变更模块402用于对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;
索引信息更新模块403用于基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
本申请提供的方案,通过查询预设索引数据库中是否存在新增医疗数据对应的历史索引信息,并在存在历史索引信息时,比较新增医疗数据的分区键值与历史索引信息的分区键值来确定新增医疗数据是否需要进行分区变更,并在需要进行分区变更时删除对应的历史医疗数据,并将新增医疗数据存储至分布式文件系统的新的分区中,同时更新预设索引数据库中的当前索引信息,高效的实现了分区变更操作,保证了分布式文件系统中存储的医疗数据的准确性。
在本申请的一种可选实施例中,该装置还包括索引信息回复模块,用于:
若分布式文件系统在当前时刻发生数据回滚,则从预设索引数据库中,获取从数据回滚到的时刻至当前时刻的至少一个当前索引信息,并获取数据回滚到的时刻的至少一个历史索引信息;
对于每一当前索引信息,若至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
在本申请的一种可选实施例中,预设索引数据库为Hbase数据库,索引信息恢复模块具体用于:
获取Hbase数据库在当前时刻的版本,并获取Hbase数据库相对于当前时刻的版本的上一个版本;
确定上一个版本的Hbase数据库中的至少一个索引信息为至少一个历史索引信息。
在本申请的一种可选实施例中,索引信息恢复模块进一步用于:
对于每一当前索引信息,若至少一个历史索引数据中不存在与该当前索引信息主键值相同的历史索引信息,则从预设索引数据库中删除该当前索引信息。
在本申请的一种可选实施例中,新增医疗数据获取模块具体用于:
获取当前时刻的至少一个初始新增医疗数据;
对于主键值相同的各初始新增医疗数据,保留产生时刻最新的初始新增医疗数据,并删除其他初始新增医疗数据,得到至少一个新增医疗数据。
在本申请的一种可选实施例中,初始新增医疗数据为未经去重处理的新增医疗数据。
在本申请的一种可选实施例中,数据分区变更模块具体用于:
基于历史索引信息获取历史医疗数据,并基于历史医疗数据构建对应的删除数据,删除数据的主键值和分区键值与历史医疗数据相同,且删除数据的其他字段的值为空;
基于新增医疗数据的指定字段的值确定第一目标文件的标识信息,基于新增医疗数据的分区键值确定目标分区的分区路径;
基于历史索引信息中的文件的标识信息和分区路径,将删除数据写入历史医疗数据所在的文件,并基于第一目标文件的标识信息和第一目标分区的分区路径,将新增医疗数据写入第一目标文件后存储至第一目标分区。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
对于每一新增医疗数据,若在预设索引数据库中未查询到与该新增医疗数据的主键值相同的历史索引信息,则将该新增医疗数据写入第二目标文件后存储至分布式文件系统的第二目标分区,并基于该新增医疗数据的分区键值、第二目标文件的标识信息以及第二目标分区的分区路径,获取该新增医疗数据的第二当前索引信息,并将第二当前索引信息存储至预设索引数据库。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
基于新增医疗数据的指定字段的值确定第二目标文件的标识信息,基于新增医疗数据的分区键值确定第二目标分区的分区路径;
基于第二目标文件的标识信息和第二目标分区的分区路径,将新增医疗数据写入第二目标文件后存储至第二目标分区。
在本申请的一种可选实施例中,数据分区变更模块进一步用于:
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值相同,则利用该新增医疗数据替换历史医疗数据。
下面参考图5,其示出了适于用来实现本申请实施例的电子设备(例如执行图1所示方法的终端设备或服务器)500的结构示意图。本申请实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)、可穿戴设备等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
电子设备包括:存储器以及处理器,存储器用于存储执行上述各个方法实施例所述方法的程序;处理器被配置为执行存储器中存储的程序。其中,这里的处理器可以称为下文所述的处理装置501,存储器可以包括下文中的只读存储器(ROM)502、随机访问存储器(RAM)503以及存储装置508中的至少一项,具体如下所示:
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本申请实施例的方法中限定的上述功能。
需要说明的是,本申请上述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:
获取当前时刻的至少一个新增医疗数据;对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定,例如,数据分区变更模块还可以被描述为“变更数据分区的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的计算机可读介质被电子设备执行时实现的具体方法,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现如下情况:
获取当前时刻的至少一个新增医疗数据;对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与历史索引信息中的分区键值不相同,则从分布式文件系统中删除历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至分布式文件系统的第一目标分区;基于该新增医疗数据的分区键值、第一目标文件的标识信息以及第一目标分区的分区路径,更新该新增医疗数据在预设索引数据库中的历史索引信息得到第一当前索引信息。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种医疗数据存储的分区变更方法,其特征在于,包括:
获取当前时刻的至少一个新增医疗数据;
对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与所述历史索引信息中的分区键值不相同,则从分布式文件系统中删除所述历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至所述分布式文件系统的第一目标分区;
基于该新增医疗数据的分区键值、所述第一目标文件的标识信息以及所述第一目标分区的分区路径,更新该新增医疗数据在所述预设索引数据库中的所述历史索引信息得到第一当前索引信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述分布式文件系统在所述当前时刻发生数据回滚,则从所述预设索引数据库中,获取从数据回滚到的时刻至所述当前时刻的至少一个当前索引信息,并获取所述数据回滚到的时刻之前的至少一个历史索引信息;
对于每一当前索引信息,若所述至少一个历史索引信息中存在与该当前索引信息主键值相同的历史索引信息,则从所述预设索引数据库中删除该当前索引信息,并恢复与该当前索引信息的主键值相同的历史索引信息。
3.根据权利要求2所述的方法,其特征在于,所述预设索引数据库为Hbase数据库,所述获取所述数据回滚到的时刻的至少一个历史索引数据,包括:
获取所述Hbase数据库在所述当前时刻的版本,并获取所述Hbase数据库相对于所述当前时刻的版本的上一个版本;
确定所述上一个版本的所述Hbase数据库中的至少一个索引信息为所述至少一个历史索引信息。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对于每一当前索引信息,若所述至少一个历史索引数据中不存在与该当前索引信息主键值相同的历史索引信息,则从所述预设索引数据库中删除该当前索引信息。
5.根据权利要求1所述的方法,其特征在于,所述获取当前时刻的至少一个新增医疗数据,包括:
获取所述当前时刻的至少一个初始新增医疗数据;
对于主键值相同的各初始新增医疗数据,保留产生时刻最新的初始新增医疗数据,并删除其他初始新增医疗数据,得到所述至少一个新增医疗数据。
6.根据权利要求5所述的方法,其特征在于,所述初始新增医疗数据为未经去重处理的新增医疗数据。
7.根据权利要求1所述的方法,其特征在于,所述从分布式文件系统中删除所述历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至所述分布式文件系统的第一目标分区,包括:
基于所述历史索引信息获取所述历史医疗数据,并基于所述历史医疗数据构建对应的删除数据,所述删除数据的主键值和分区键值与所述历史医疗数据相同,且所述删除数据的其他字段的值为空;
基于所述新增医疗数据的指定字段的值确定所述第一目标文件的标识信息,基于所述新增医疗数据的分区键值确定所述第一目标分区的分区路径;
基于所述历史索引信息中的文件的标识信息和分区路径,将所述删除数据写入所述历史医疗数据所在的文件,并基于所述第一目标文件的标识信息和所述第一目标分区的分区路径,将所述新增医疗数据写入所述第一目标文件后存储至所述第一目标分区。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对于每一新增医疗数据,若在所述预设索引数据库中未查询到与该新增医疗数据的主键值相同的历史索引信息,则将该新增医疗数据写入第二目标文件后存储至所述分布式文件系统的第二目标分区,并基于该新增医疗数据的分区键值、所述第二目标文件的标识信息以及所述第二目标分区的分区路径,获取该新增医疗数据的第二当前索引信息,并将所述第二当前索引信息存储至所述预设索引数据库。
9.根据权利要求8所述的方法,其特征在于,所述将该新增医疗数据写入第二目标文件后存储至所述分布式文件系统的第二目标分区,包括:
基于所述新增医疗数据的指定字段的值确定所述第二目标文件的标识信息,基于所述新增医疗数据的分区键值确定所述第二目标分区的分区路径;
基于所述第二目标文件的标识信息和所述第二目标分区的分区路径,将所述新增医疗数据写入所述第二目标文件后存储至所述第二目标分区。
10.一种医疗数据存储的分区变更装置,其特征在于,包括:
新增医疗数据获取模块,用于获取当前时刻的至少一个新增医疗数据;
数据分区变更模块,用于对于每一新增医疗数据,若在预设索引数据库中查询到与该新增医疗数据的主键值相同的历史索引信息,且该新增医疗数据的分区键值与所述历史索引信息中的分区键值不相同,则从分布式文件系统中删除所述历史索引信息对应的历史医疗数据,并将该新增医疗数据写入第一目标文件后存储至所述分布式文件系统的第一目标分区;
索引信息更新模块,用于基于该新增医疗数据的分区键值、所述第一目标文件的标识信息以及所述第一目标分区的分区路径,更新该新增医疗数据在所述预设索引数据库中的所述历史索引信息得到第一当前索引信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224593.6A CN113963763B (zh) | 2021-10-20 | 2021-10-20 | 医疗数据存储的分区变更方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224593.6A CN113963763B (zh) | 2021-10-20 | 2021-10-20 | 医疗数据存储的分区变更方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113963763A true CN113963763A (zh) | 2022-01-21 |
CN113963763B CN113963763B (zh) | 2022-11-11 |
Family
ID=79465241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111224593.6A Active CN113963763B (zh) | 2021-10-20 | 2021-10-20 | 医疗数据存储的分区变更方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113963763B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185866A (zh) * | 2022-02-16 | 2022-03-15 | 安翰科技(武汉)股份有限公司 | 数据本地存储控制方法及医疗数据存储系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200034365A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Updating a table using incremental and batch updates |
US20200192865A1 (en) * | 2018-12-13 | 2020-06-18 | Verizon Patent And Licensing Inc. | Method and system for historical call lookup in distributed file systems |
CN111367984A (zh) * | 2020-03-11 | 2020-07-03 | 中国工商银行股份有限公司 | 高时效的数据加载入数据湖的方法及系统 |
CN111767268A (zh) * | 2020-06-23 | 2020-10-13 | 平安普惠企业管理有限公司 | 数据库表分区方法、装置、电子设备及存储介质 |
CN113297201A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引数据同步方法、系统及装置 |
CN113297164A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库系统、数据查询方法及装置 |
-
2021
- 2021-10-20 CN CN202111224593.6A patent/CN113963763B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200034365A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Updating a table using incremental and batch updates |
US20200192865A1 (en) * | 2018-12-13 | 2020-06-18 | Verizon Patent And Licensing Inc. | Method and system for historical call lookup in distributed file systems |
CN111367984A (zh) * | 2020-03-11 | 2020-07-03 | 中国工商银行股份有限公司 | 高时效的数据加载入数据湖的方法及系统 |
CN113297164A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库系统、数据查询方法及装置 |
CN111767268A (zh) * | 2020-06-23 | 2020-10-13 | 平安普惠企业管理有限公司 | 数据库表分区方法、装置、电子设备及存储介质 |
CN113297201A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 索引数据同步方法、系统及装置 |
Non-Patent Citations (3)
Title |
---|
APACHEHUDI: "Apache Hudi Savepoint实现分析", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1812243?FROM=ARTICLE.DETAIL.1812257》 * |
APACHEHUDI: "Apache Hudi索引实现分析(三)之HBaseIndex", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1812257》 * |
阿里云实时计算FLINK: "顺丰科技 Hudi on Flink 实时数仓实践", 《HTTPS://DEVELOPER.ALIYUN.COM/ARTICLE/792579?UTM_CONTENT=M_1000300118》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185866A (zh) * | 2022-02-16 | 2022-03-15 | 安翰科技(武汉)股份有限公司 | 数据本地存储控制方法及医疗数据存储系统 |
CN114185866B (zh) * | 2022-02-16 | 2022-05-03 | 安翰科技(武汉)股份有限公司 | 数据本地存储控制方法及医疗数据存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113963763B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111858518B (zh) | 一种引用文档的更新方法、装置、电子设备及存储介质 | |
US20130218837A1 (en) | Cloud data synchronization with local data | |
CN107330024B (zh) | 标签系统数据的存储方法和装置 | |
CN112115153A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111241137B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111782235A (zh) | 一种数据升级、查询方法和装置 | |
CN113963763B (zh) | 医疗数据存储的分区变更方法以及装置 | |
CN112162987A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN117931829B (zh) | 数据库更新方法、装置、电子设备及存储介质 | |
CN111857720A (zh) | 用户界面状态信息的生成方法、装置、电子设备及介质 | |
CN112016284A (zh) | 电子表格的处理方法及设备 | |
CN117407407B (zh) | 多异构数据源数据集更新方法、装置、设备和计算机介质 | |
CN113918659A (zh) | 数据操作方法、装置、存储介质及电子设备 | |
CN110674082B (zh) | 移除在线文档的方法、装置、电子设备及计算机可读介质 | |
CN111581930A (zh) | 在线表格数据处理方法、装置、电子设备和可读介质 | |
CN111597403A (zh) | 一种构建图索引的方法、装置、电子设备及存储介质 | |
CN116010345A (zh) | 一种实现流批一体数据湖的表服务方案的方法、装置及设备 | |
CN113064704B (zh) | 任务处理方法、装置、电子设备和计算机可读介质 | |
CN113742321B (zh) | 一种数据更新的方法和装置 | |
US9465820B2 (en) | Method and system for unified technological stack management for relational databases | |
CN113645309A (zh) | 多客户端数据差异化二次缓存及同步的处理方法及系统 | |
CN113761075A (zh) | 切换数据库的方法、装置、设备和计算机可读介质 | |
CN113760600A (zh) | 一种数据库备份方法、数据库还原方法和相关装置 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
CN114968936B (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 |