CN106777258A - 一种医疗大数据存储中Hbase行键的编码及压缩方法 - Google Patents

一种医疗大数据存储中Hbase行键的编码及压缩方法 Download PDF

Info

Publication number
CN106777258A
CN106777258A CN201611232111.0A CN201611232111A CN106777258A CN 106777258 A CN106777258 A CN 106777258A CN 201611232111 A CN201611232111 A CN 201611232111A CN 106777258 A CN106777258 A CN 106777258A
Authority
CN
China
Prior art keywords
coding
code
character
compressed
hbase
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
Application number
CN201611232111.0A
Other languages
English (en)
Other versions
CN106777258B (zh
Inventor
于海龙
李建元
温晓岳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yinjiang Technology Co.,Ltd.
Original Assignee
Enjoyor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Enjoyor Co Ltd filed Critical Enjoyor Co Ltd
Priority to CN201611232111.0A priority Critical patent/CN106777258B/zh
Publication of CN106777258A publication Critical patent/CN106777258A/zh
Application granted granted Critical
Publication of CN106777258B publication Critical patent/CN106777258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Medical Treatment And Welfare Office Work (AREA)

Abstract

一种医疗大数据存储中Hbase行键的编码及压缩方法,包括:第一,对查询条件的编码压缩,根据用到的查询条件,判断查询条件用到的值域是否固定,分别进行编码,直至所有的查询条件编码完成,将所有输出的压缩码拼接成新的字符,作为业务数据的行键将业务数据存放到Hbase表中;第二、查询过程,根据用到的查询条件,判断查询条件用到的值域是否固定,分别进行编码,将所有查询条件转换后到Hbase中查询业务数据。本发明有效控制行键长度、适应数据量的大幅增大,满足一定的基于多条件查询。

Description

一种医疗大数据存储中Hbase行键的编码及压缩方法
技术领域
本发明属于医疗数据存储领域,尤其涉及一种医疗大数据存储中Hbase行键的编码及压缩方法。
背景技术
随着云存储、云计算的技术飞跃发展,面向医疗大数据存储的技术研究越来越热,在将医院的历史数据进行整合并集中存储到Hbase过程中,我们必须面对的首要问题是如何将医院数据的唯一标识即主键,使用一定的编码规则生成符合Hbase行键规范要求的唯一标识,原因是Hbase的行键Rowkey的长度不能太长,如果太长,如100个字节,那么区区1000万条数据的行键就要消耗将近占1G的内存空间,同时Hbase只有通过行键进行查询,才能高效率的返回结果,鉴于医疗行业的复杂性,只有将Hbase的行键设计成满足多条件查询才能满足实际的场景需求,加上各家医院的业务数据的唯一标识规范不一致,有些是纯数值型的序列,有些是字母、数字的混合编码,还有些干脆是全局唯一标识符(GUID)。这些都增加了Hbase行键编码设计的难度。
为了提高Hbase的查询效率,绕开Hbase行键设计上的障碍,大数据技术专家们想到了很多的技术方案,申请号为201410336964.3的《一种海量数据查询方法》采用SolrCloud和HBase相结合的方法,将HBase非行键值rowkey查询字段与rowkey的索引映射关系维护到SolrCloud中,通过在SolrCloud中查询到查询字段对应的rowkey来实现高效的查询,这样行键的设置就没有了诸多的障碍,该技术方案的实现依赖于SolrCloud。
申请号为201310667847.0的《一种基于HBase表的条件查询优化方法》采用Region预分配、RowKey设计及MapReduce来提高性能,在实现过程中,通过设定的查询条件以及预分配的Region来确定RowKey,这样通过明确的StartKey和EndKey就能实现快速查找,该方案适合通过job进行批量导入数据的应用场景。
申请号为201310403001.6的《一种数据存储方法及装置》这个技术方案中的行键使用前缀+后缀的方式,前缀使用算法MD5计算出所述满足预设条件的属性字段的摘要值,后缀长度固定为9个字节,是由一个“=”和8字节表示的long整数组成,这样行键的长度就不能进行有效的控制,对内存的有效利用不是很好。
申请号为201210147725.4的《基于Hbase数据库的倒排索引混合压缩及解压方法》该技术方案对Hbase数据库倒排索引数据表中的键部分采用键既字典压缩法进行压缩,即对行键通过字典查找法进行压缩,除此以外还对数据值部分进行压缩。方案提出的针对Hbase数据库下特定的倒排索引表的混合压缩方法具有很高的即时性,可以满足搜索引擎对于即时响应的要求。但是,由于Hbase数据库在源码中只给出了Lzo算法和Gzip算法的选项,因此为了在Hbase中能够使用该方法,必须对Hbase源码修改,同时需要给出本方法的Java调用接口。
申请号为201610177721.9的《HBase二级索引的设计方法及查询方法》根据一数据源文件的数据量对HBase中的一数据表进行预分区,得到特定数量的区域,然后每个所述区域划分为主数据区和关联于所述主数据区的索引区,在索引区中的行键设为区域起始行键|索引列|索引键|索引值的形式。主数据区域的行键通过随机产生的Hash前缀(作为索引区域行键的前缀)来建立主数据区域和索引区域的关联关系,这种方案生成的行键长度也不能有效的控制,数据量增大的时候,会很快消耗掉内存空间。
发明内容
为了克服已有医疗数据存储方式的行键长度不能有效的控制、内存空间无法适应数据量的大幅增大的不足,本发明提供了一种有效控制行键长度、适应数据量的大幅增大的医疗大数据存储中Hbase行键的编码及压缩方法。
本发明解决其技术问题所采用的技术方案是:
一种医疗大数据存储中Hbase行键的编码及压缩方法,所述方法包括:
第一,对查询条件的编码压缩,过程如下:
步骤1.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤1.2,否则执行步骤1.3和1.4;
步骤1.2、公共字典表中查找对应的编码是否存在,如果存在则返回对应的ID压缩码,否则将字典类别发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入公共字典,返回ID压缩码;
步骤1.3、将值域拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,如果存在则返回该前缀的ID压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入域表中,返回前缀ID压缩码;
步骤1.4、根据后缀和业务编码到码表中检索对应的记录,如果存在则返回压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入码表中,返回后缀ID压缩码;
步骤1.5、重复执行步骤1.1至步骤1.4,直至所有的查询条件编码完成,将所有输出的压缩码拼接成新的字符,作为业务数据的行键将业务数据存放到Hbase表中。
进一步,所述方法还包括:第二、查询过程,如下:
步骤2.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤2.2,否则执行步骤2.3和步骤2.4;
步骤2.2、根据字典类别和查询条件到公共字典表中查找对应的记录,返回压缩码;
步骤2.3、将值阈拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,返回前缀ID压缩码;
步骤2.4、根据拆分后的后缀和业务编码到码表中查找对应的记录,返回后缀ID压缩码;
步骤2.5、根据步骤2.2、步骤2.3、步骤2.4返回的压缩码到Hbase中查询业务数据,如果是多条件查询,重复步骤2.1至步骤2.4,将所有查询条件转换后到Hbase中查询业务数据。
再进一步,所述步骤1.1和2.1中,判断值域是否固定,判断的依据是(1)、其值是否可枚举;(2)、该信息编码跨系统、跨机构是否统一;
对于固定值域,使用公共字典对其编码,编码从1开始依次递增;不同类别的信息各自编码;
对于不固定的值域使用域码表对其进行编码,编码也是从1开始依次递增,不同域的字典各自编码。
所述步骤1.3和1.4中,将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码中,将前缀编码和业务编码作为行键放到域表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID生成前缀ID压缩码;
同样,将后缀编码和业务编码作为行键放到码表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID生成后缀ID压缩码;最终,将原始编码转换的结果为:前缀ID压缩码+后缀ID压缩码。
所述步骤1.2、1.3和1.4中,将ID生成服务返回的ID编码生成ID压缩码中,使用长整型对行键中的信息进行编码,编码字符选择ASCII码中的可打印字符,并将数值型字串转换为字符型字串进行压缩。
所述ASCII码中的可打印字符,筛选结果为90个字符,如表1所示:
# $ & ( ) * + , -
. / 0 1 2 3 4 5 6 7
8 9 : < > @ |A
B C D E F G H I J K
L M N O P Q R S T U
V W |X Y Z [ ] ^ _ `
a b c d e f g h i j
k l m n o p q r s t
u v w x y z { | }
表1。
对数值型的编码ID压缩的过程为:首先将附表1里面的字符依照顺序依次填充到一个长度为90的字符数组array1中;然后对编码ID分别取90的模k和整除90的结果n,到字符数组array1中找k处的字符,数组是从0开始编号的,数组位置0存放的是码表第1个字符,数组位置m存放的是码表第m+1个字符,再对n分别取90的模k和整除90的结果,将整除90的结果赋值给n,取字符数组array1的k处字符,如此重复操作,直至n小于90,最后取数组array1的位置n处的字符,依次将取到的所有字符整合成字符串,即完成编码ID的压缩。
本发明的有益效果主要表现在:实现对任意长度的信息进行编码、压缩,压缩后的行键长度不受原始信息的编码长度影响;除了使用现有的数据库系统作为ID生成服务,方案的实施几乎不依赖任何第三方产品的支持;支持少量的多条件查询,同时也支持Hbase的前匹配查询,查询性能足以满足日常的查询要求。
附图说明
图1是医疗大数据存储中Hbase行键的编码及压缩方法的流程图。
图2是对子串的编码流程图(编码ID为长整型的数字)。
图3是使用90个字符对子串编码压缩的流程图(%表示取模运算,/标识整除运算)。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图3,一种医疗大数据存储中Hbase行键的编码及压缩方法,所述方法包括:
第一,对查询条件的编码压缩,过程如下:
步骤1.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤1.2,否则执行步骤1.3和1.4;
步骤1.2、公共字典表中查找对应的编码是否存在,如果存在则返回对应的ID压缩码,否则将字典类别发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入公共字典,返回ID压缩码;
步骤1.3、将值域拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,如果存在则返回该前缀的ID压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入域表中,返回前缀ID压缩码;
步骤1.4、根据后缀和业务编码到码表中检索对应的记录,如果存在则返回压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入码表中,返回后缀ID压缩码;
步骤1.5、重复执行步骤1.1至步骤1.4,直至所有的查询条件编码完成,将所有输出的压缩码拼接成新的字符,作为业务数据的行键将业务数据存放到Hbase表中。
进一步,所述方法还包括:第二、查询过程,如下:
步骤2.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤2.2,否则执行步骤2.3和步骤2.4;
步骤2.2、根据字典类别和查询条件到公共字典表中查找对应的记录,返回压缩码;
步骤2.3、将值阈拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,返回前缀ID压缩码;
步骤2.4、根据拆分后的后缀和业务编码到码表中查找对应的记录,返回后缀ID压缩码;
步骤2.5、根据步骤2.2、步骤2.3、步骤2.4返回的压缩码到Hbase中查询业务数据,如果是多条件查询,重复步骤2.1至步骤2.4,将所有查询条件转换后到Hbase中查询业务数据。
本发明中,对于满足多条件查询的Hbase行键编码,编码在保证唯一的基础上需要整合各查询的条件,如需根据医院查询,就要将医院编码整合到行键中,如需根据时间范围查询,就要将时间整合到行键中,如果有n个常用查询条件,行键就应当包含n个字符串,即s1s2...sn。当然由于行键长度的限制,不能满足随意的查询条件组合,必须事先明确查询用到的那些条件,并仔细筛选,对于过多的查询条件,可以考虑使用二级索引的方法。
为了限制行键的增长,技术方案的关键在于如何对整合的信息进行编码、压缩,对此本技术方案使用字典对行键中的信息进行编码,并通过一定的压缩算法进行编码压缩。
我们注意到64位的长整型可以表示最大值为9,223,372,036,854,775,807。使用长整型可以满足目前绝大部分业务场景的存储需求,本方案中使用长整型对行键中的信息进行编码,但如果设计的行键需要满足多条件的查询,长整型的数值不能直接用于Hbase的行键,还需要经过压缩处理,本方案使用将数值型字串转换为字符型字串的方法进行压缩。方案选择ASCII码中的可打印字符,并进行一定的筛选,去除编程语言中用到的单引号、双引号、反斜杠,此外还要保留惊叹号作为固定行键长度场景下的填充字符,最后筛选的结果一共有90个字符,如表1所示:
# $ & ( ) * + , -
. / 0 1 2 3 4 5 6 7
8 9 : < > @ |A
B C D E F G H I J K
L M N O P Q R S T U
V W |X Y Z [ ] ^ _ `
a b c d e f g h i j
k l m n o p q r s t
u v w x y z { | }
表1
判断该子串的值域是否固定,判断的依据是1、其值是否可枚举,比如患者的血型代码,它的值域是固定的;2、该信息编码跨系统、跨机构是否统一,比如患者的身份证、手机号码,我们也将其当作固定值域来对待。对于固定值域,我们使用公共字典对其编码,编码从1开始依次递增;不同类别的信息各自编码,编码使用独立的编码服务,即ID生成服务。注意此处还有一个标准的对照、转换过程,对于不同的代码,但表示的意义相同,字典复用相同的编码(对照转换的过程不在本方案的描述范围之内)。公共字典在Hbase中的结构如表2所示:
表2
对于不固定的值域我们使用域码表对其进行编码,编码也是从1开始依次递增,不同域的字典各自编码。由于不同的医疗系统的厂商编码规则不同,需要根据具体情况做相应的处理,处理起来比较复杂,总体来说归纳为3种类型,1是直接使用序列,2是使用混合编码如日期+序列、具有一定意义的代码+序列,这种情况比较多见,3使用全局唯一标识符(GUID),GUID不适合放在Hbase的行键中,因为无论怎么压缩都会占很大的存储空间,而且实际操作中也没有通过输入GUID来查询数据的情况,遇到使用GUID作为编码的情况一般是尝试使用其它字段即候选键替换,如果找不到候选键,需要医疗业务厂商配合添加一个候选键如自增的序列,GUID编码不在本方案考虑范围之内。域码表分为两个部分,域表和码表。
在Hbase中的域表的结构如下表3所示:
表3
码表的结构如表4所示:
表4
使用编码、压缩后的业务数据行键结构如表5所示:
表5
不管医疗管理系统的内部编码是序列还是混合的编码形式,只要编码排序后可拆分为前缀+后缀的形式,并且前缀的变化相对固定,后缀的变化有一定的规律,均可使用本方技术方案进行压缩,对于连续编码的数值型前缀或后缀,直接对其进行压缩的效果与使用ID生成服务生成编码ID后再对编码ID进行压缩的效果相同,考虑到通用性,本方案统一使用ID生成服务生成编码前缀的编码ID和后缀的编码ID。
方法是,将前缀编码和业务编码作为行键放到域表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID运用图3的流程生成前缀ID压缩码。
参照图3,对数值型的编码ID压缩的流程为:首先将表1里面的字符依照顺序依次填充到一个长度为90的字符数组array1中;然后对编码ID分别取90的模k和整除90的结果n,到字符数组array1中找k处的字符,数组是从0开始编号的,数组位置0存放的是码表第1个字符,数组位置m存放的是码表第m+1个字符,再对n分别取90的模k和整除90的结果,将整除90的结果赋值给n,取字符数组array1的k处字符,如此重复操作,直至n小于90,最后取数组array1的位置n处的字符,依次将取到的所有字符整合成字符串,即完成编码ID的压缩。
同样,将后缀编码和业务编码作为行键放到码表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID运用图3的流程生成后缀ID压缩码。
最终,将原始编码转换的结果为:前缀ID压缩码+后缀ID压缩码。
假设压缩后前缀ID的压缩码为4个字符长度,后缀偏移压缩码为4个字符长度,那么8个字符的行键可以表示90×90×90×90×90×90×90×90-1=4304672099999999个不同的数据。对于公共字典的压缩码,如身份证,使用5个字符表示全国所有的身份证号码或手机号码绰绰有余,再如全国的行政区划编码,原始编码使用6个数字字符表示,而使用公共字典的压缩码只要2个字符表示即可。所以正常应用的情况下,本设计方案可以满足3至4个查询条件组合,足以满足日常的查询需求。
关于ID生成服务,ID生成服务根据不同的字典类别和业务类别各自维护一套自增的序列,ID生成服务只要根据字典类别或业务类别各自简单的自增即可。可以用现有的数据库系统如redis实现或自行实现ID生成服务,如何自行实现ID生成服务不在本发明文档的描述范围之内。
对固定值域编码、压缩案例:假设需要通过患者身份证(每次就诊患者都必须提供身份证)、就诊日期,检查患者的就诊记录。
首先,明确查询条件组合是否能唯一识别一条诊疗记录,实际情况下,同一患者同一天在同一家医院可以到两个以上的科室进行就诊,但不会在同一个科室就诊两次(两次就诊视为同一个就诊行为)。为了简化起见此处不考虑跨医院的情况,那么可以唯一确定单次就诊记录的查询条件可以确定为:患者身份证号、就诊日期、就诊科室。
其次,判断患者身份证号、就诊日期、就诊科室的值域是否固定,很明显,患者身份证号、就诊日期、就诊科室的值域都是是固定的,本案例中使用基于公共字典的编码压缩方法。
最后定制身份证、日期(年月日)、科室类别压缩码的宽度,中国最大的两个城市上海和北京的总人口都在2千万左右,理论上说身份证压缩码的宽度只要4个字符宽度就足够国内任何一个地区使用了(90*90*90*90-1=65609999),但为了保守起见,我们使用5个字符的宽度表示身份证压缩码;对于日期(年月日)的压缩码,使用4个字符的宽度;对于门诊科室,使用2个字符的宽度。
编码、压缩的步骤如下:
步骤一、根据字典类别到公共字典表中查找是否存在对应的身份证编号、日期或科室代码(以下统一称为原始编码),如果存在则返回对应的压缩码,否则执行步骤二至步骤四;
步骤二、将原始编码和对应的字典类别发到ID生成服务,请求新的ID
步骤三、ID生成服务根据字典类别生成新的ID(ID的类型为正整数)。
步骤四、将ID生成服务返回的ID通过图3的流程进行压缩,将压缩码、原始编码、字典类别一同存入公共字典中,返回压缩码;
步骤五、对返回的压缩码使用惊叹号(!)进行填充使达到定制的字符宽度,为了避免Hbase的热点问题、作为构成行键的第一个压缩码需要进行反转,然后再将惊叹号(!)填充到该压缩码的后面,返回定制宽度的压缩码。
步骤六、重复执行步骤一至步骤五,直至身份证编号、日期、科室代码均编码、压缩完成。
步骤七、将压缩码组合后作为行键将诊疗数据存入Hbase中。
对非固定值域编码、压缩案例:假设需要将LIS系统的数据存入Hbase中,并能通过检验编号进行查询,该LIS系统将检验项目组合成一个个“检验套餐”,每个检验套餐使用3个字符标识,如血常规的标识符为“XCG”。医生根据需要可以在这些套餐上增减检验项目,增减的检验项目体现在检验明细上,套餐的名称和代码还是不变。该系统检验编号由8位的日期(4位年+2位月+2位日)+套餐标识符+流水号构成,每个套餐分别使用各自的流水号(4位);每天凌晨0点,套餐的流水号重置为0。
首先,明确查询条件是否能唯一识别一条检验记录,很明显检验编号可以唯一识别检验记录。
其次,检验编号的值域是否固定,由于检验编号是由检验系统内部产生的,不能作为固定值域的数据来对待。
最后,将检验编号拆分为前缀+后缀的形式,并制定前缀和后缀压缩码的宽度,这里将检验编号拆分以日期为前缀,套餐代码和流水号为后缀的形式,对于前缀,它使用的是日期的格式,压缩码的宽度设定为4个字符,由于套餐的总数是有限的(常见的检验套餐也就几十个而已),检验编号的流水号为4位,这样使用3个字符就够了,保守起见使用4个字符的宽度表示后缀。
编码、压缩的步骤如下:
步骤一、将检验编号才分为前缀+后缀的形式,到域表中查询是否存在该前缀和检验业务编码,如果存在则返回该前缀的压缩码,否则执行步骤二至步骤三。
步骤二、向ID生成服务发送检验业务编码,请求新的前缀ID,将ID生成服务返回的ID通过图3的流程进行压缩;将压缩码、前缀、检验系统编号一同存入域表中,返回前缀的压缩码;
步骤三、使用后缀和检验业务编码到码表中检索后缀是否存在,如果不存在,则使用检验业务编码向ID生成服务申请新的编码ID,并对ID生成服务返回的编码ID进行压缩,将压缩码、后缀、检验系统编码一同存入码表中,返回后缀压缩码。
步骤四、对返回的压缩码使用惊叹号(!)进行填充使达到定制的字符宽度。为了避免Hbase的热点问题、对前缀压缩码进行反转,然后再将惊叹号(!)填充到该压缩码的后面,返回定制宽度的前缀压缩码。
步骤五、将步骤四返回的前缀压缩码+后缀压缩码作为行键,将检验记录及其检验明细整合后一同存入Hbase中。
对序列进行编码、压缩案例:假设门诊收费系统的收费数据使用序列进行唯一标识,需要将门诊收费系统的收费数据存入Hbase中,查询要求能够通过序列号进行收费信息的查询。
首先,明确查询条件是否能唯一识别一条检验记录,如上所述收费编号可以唯一识别收费记录。
其次,收费序编号的值域是否固定,由于收费编号是通过序列产生的,不能作为固定值域的数据来对待。
最后,将收费编号拆分为前缀+后缀的形式,并制定前缀和后缀压缩码的宽度,针对序列的拆分,有很多的拆分方案,本案例中拆分的依据是医院收费系统每天生成的收费记录数据量,假设该医院每天产生的收费记录为数万条,那么将收费编号的后5位拆开,作为编码的后缀,剩余的部分作为前缀,对于长度小于等于5位的收费编号,使用0作为前缀,即0+收费编号的形式。这样的话域表中每天会生成一条新的记录,如果前缀的压缩码使用3个字符的宽度,足够使用1997年(90*90*90/365),所以前缀的宽度定为3个字符宽度,对于后缀,使用3个字符的宽度足以表示所有的后缀,所以后缀的宽度也为3个字符宽度。
步骤一、将收费编号拆分为前缀+后缀的形式,确保后缀的数字字符不会超过5个,对于长度小于等于5位的收费编号,使用0+收费编号的形式,到域表中查询是否存在该前缀和收费业务编码,如果存在则返回该前缀的压缩码,否则执行步骤二至步骤三。
步骤二、向ID生成服务发送收费业务编码,请求新的前缀ID,将ID生成服务返回的ID通过图3的流程进行压缩;将压缩码、前缀、收费业务编码一同存入域表中,返回前缀的压缩码;
步骤三、使用后缀和收费业务编码到码表中检索后缀是否存在,如果不存在,则使用收费业务编码向ID生成服务申请新的编码ID,并对ID生成服务返回的编码ID进行压缩,将压缩码、后缀、收费业务编码一同存入码表中,返回后缀压缩码。
步骤四、对返回的压缩码使用惊叹号(!)进行填充使达到定制的字符宽度。为了避免Hbase的热点问题、对前缀压缩码进行反转,然后再将惊叹号(!)填充到该压缩码的后面,返回定制宽度的前缀压缩码。
步骤五、将步骤四返回的前缀压缩码+后缀压缩码作为行键,将收费记录及其收费明细整合后一同存入Hbase中。

Claims (7)

1.一种医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述方法包括:
第一,对查询条件的编码压缩,过程如下:
步骤1.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤1.2,否则执行步骤1.3和1.4;
步骤1.2、公共字典表中查找对应的编码是否存在,如果存在则返回对应的ID压缩码,否则将字典类别发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入公共字典,返回ID压缩码;
步骤1.3、将值域拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,如果存在则返回该前缀的ID压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入域表中,返回前缀ID压缩码;
步骤1.4、根据后缀和业务编码到码表中检索对应的记录,如果存在则返回压缩码,否则将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码,存入码表中,返回后缀ID压缩码;
步骤1.5、重复执行步骤1.1至步骤1.4,直至所有的查询条件编码完成,将所有输出的压缩码拼接成新的字符,作为业务数据的行键将业务数据存放到Hbase表中。
2.如权利要求1所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述方法还包括:第二、查询过程,如下:
步骤2.1、根据用到的查询条件,判断查询条件用到的值域是否固定,如果是固定值域,执行步骤2.2,否则执行步骤2.3和步骤2.4;
步骤2.2、根据字典类别和查询条件到公共字典表中查找对应的记录,返回压缩码;
步骤2.3、将值域拆分为前缀+后缀的形式,根据拆分后的前缀和业务编码到域表中查找对应的记录,返回前缀ID压缩码;
步骤2.4、根据拆分后的后缀和业务编码到码表中查找对应的记录,返回后缀ID压缩码;
步骤2.5、根据步骤2.2、步骤2.3、步骤2.4返回的压缩码到Hbase中查询业务数据,如果是多条件查询,重复步骤2.1至步骤2.4,将所有查询条件转换后到Hbase中查询业务数据。
3.如权利要求1或2所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述步骤1.1和2.1中,判断值域是否固定,判断的依据是(1)、其值是否可枚举;(2)、该信息编码跨系统、跨机构是否统一;
对于固定值域,使用公共字典对其编码,编码从1开始依次递增;不同类别的信息各自编码;
对于不固定的值域使用域码表对其进行编码,编码也是从1开始依次递增,不同域的字典各自编码。
4.如权利要求1所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述步骤1.3和1.4中,将业务编码发给ID生成服务,将ID生成服务返回的ID编码生成ID压缩码中,将前缀编码和业务编码作为行键放到域表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID生成前缀ID压缩码;
同样,将后缀编码和业务编码作为行键放到码表中,使用ID生成服务根据业务编码生成编码序列——编码ID,再对编码ID生成后缀ID压缩码;
最终,将原始编码转换的结果为:前缀ID压缩码+后缀ID压缩码。
5.如权利要求1或2所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述步骤1.2、1.3和1.4中,将ID生成服务返回的ID编码生成ID压缩码中,使用长整型对行键中的信息进行编码,编码字符选择ASCII码中的可打印字符,并将数值型字串转换为字符型字串进行压缩。
6.如权利要求5所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:所述ASCII码中的可打印字符,筛选结果为90个字符,如表1所示:
# $ & ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : < > @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | }
表1。
7.如权利要求6所述的医疗大数据存储中Hbase行键的编码及压缩方法,其特征在于:对数值型的编码ID压缩的过程为:首先将表1里面的字符依照顺序依次填充到一个长度为90的字符数组array1中;然后对编码ID分别取90的模k和整除90的结果n,到字符数组array1中找k处的字符,数组是从0开始编号的,数组位置0存放的是码表第1个字符,数组位置m存放的是码表第m+1个字符,再对n分别取90的模k和整除90的结果,将整除90的结果赋值给n,取字符数组array1的k处字符,如此重复操作,直至n小于90,最后取数组array1的位置n处的字符,依次将取到的所有字符整合成字符串,即完成编码ID的压缩。
CN201611232111.0A 2016-12-28 2016-12-28 一种医疗大数据存储中Hbase行键的编码及压缩方法 Active CN106777258B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611232111.0A CN106777258B (zh) 2016-12-28 2016-12-28 一种医疗大数据存储中Hbase行键的编码及压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611232111.0A CN106777258B (zh) 2016-12-28 2016-12-28 一种医疗大数据存储中Hbase行键的编码及压缩方法

Publications (2)

Publication Number Publication Date
CN106777258A true CN106777258A (zh) 2017-05-31
CN106777258B CN106777258B (zh) 2020-01-03

Family

ID=58922515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611232111.0A Active CN106777258B (zh) 2016-12-28 2016-12-28 一种医疗大数据存储中Hbase行键的编码及压缩方法

Country Status (1)

Country Link
CN (1) CN106777258B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391769A (zh) * 2017-09-12 2017-11-24 北京优网助帮信息技术有限公司 一种索引查询方法及装置
CN107679158A (zh) * 2017-09-28 2018-02-09 泰康保险集团股份有限公司 数据管理方法、装置、计算机可读介质和电子设备
CN110457059A (zh) * 2019-06-28 2019-11-15 苏宁云计算有限公司 一种基于redis的序列号生成方法及装置
CN112329393A (zh) * 2020-11-05 2021-02-05 广东科徕尼智能科技有限公司 一种短码id的生成方法、设备、存储介质
CN112765131A (zh) * 2021-01-22 2021-05-07 重庆邮电大学 一种异构医疗健康数据存储和检索方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708187A (zh) * 2012-05-14 2012-10-03 成都信息工程学院 基于Hbase数据库的倒排索引混合压缩及解压方法
CN103488704A (zh) * 2013-09-06 2014-01-01 乐视致新电子科技(天津)有限公司 一种数据存储方法及装置
CN104915450A (zh) * 2015-07-01 2015-09-16 武汉大学 一种基于HBase的大数据存储与检索方法及系统
CN105574021A (zh) * 2014-10-14 2016-05-11 北京神州泰岳软件股份有限公司 一种数据库的数据压缩方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708187A (zh) * 2012-05-14 2012-10-03 成都信息工程学院 基于Hbase数据库的倒排索引混合压缩及解压方法
CN103488704A (zh) * 2013-09-06 2014-01-01 乐视致新电子科技(天津)有限公司 一种数据存储方法及装置
CN105574021A (zh) * 2014-10-14 2016-05-11 北京神州泰岳软件股份有限公司 一种数据库的数据压缩方法和装置
CN104915450A (zh) * 2015-07-01 2015-09-16 武汉大学 一种基于HBase的大数据存储与检索方法及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391769A (zh) * 2017-09-12 2017-11-24 北京优网助帮信息技术有限公司 一种索引查询方法及装置
CN107391769B (zh) * 2017-09-12 2020-10-09 北京优网助帮信息技术有限公司 一种索引查询方法及装置
CN107679158A (zh) * 2017-09-28 2018-02-09 泰康保险集团股份有限公司 数据管理方法、装置、计算机可读介质和电子设备
CN110457059A (zh) * 2019-06-28 2019-11-15 苏宁云计算有限公司 一种基于redis的序列号生成方法及装置
CN112329393A (zh) * 2020-11-05 2021-02-05 广东科徕尼智能科技有限公司 一种短码id的生成方法、设备、存储介质
CN112765131A (zh) * 2021-01-22 2021-05-07 重庆邮电大学 一种异构医疗健康数据存储和检索方法及系统
CN112765131B (zh) * 2021-01-22 2023-03-24 重庆邮电大学 一种异构医疗健康数据存储和检索方法及系统

Also Published As

Publication number Publication date
CN106777258B (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
CN106777258A (zh) 一种医疗大数据存储中Hbase行键的编码及压缩方法
US10423626B2 (en) Systems and methods for data conversion and comparison
US10430433B2 (en) Systems and methods for data conversion and comparison
US20170109398A1 (en) Systems and methods for data conversion and comparison
US20020073138A1 (en) De-identification and linkage of data records
US20130191523A1 (en) Real-time analytics for large data sets
CN102867064B (zh) 关联字段查询装置和关联字段查询方法
CN104680076A (zh) 用于使受保护健康信息匿名化和聚集的系统
CN106649676A (zh) 一种基于hdfs存储文件的去重方法及装置
EP1240574A4 (en) ANONYMES CONNECT A MULTITUDE OF DATA PACKAGES
CN102170455A (zh) 用于在本地装置和远程装置间更新对象的方法和系统
CN106933859B (zh) 一种医疗数据的迁移方法和装置
CN101673289A (zh) 分布式文件存储构架的构建方法和装置
US20200212932A1 (en) Reducing storage of blockchain metadata via dictionary-style compression
CN110059129A (zh) 数据存储方法、装置及电子设备
US20230267116A1 (en) Translation of tenant identifiers
US11755778B2 (en) Horizontally-scalable data de-identification
CN106528896A (zh) 一种数据库优化方法和装置
CN110109874A (zh) 一种基于区块链的无中心分布式文件检索方法
WO2018070932A1 (en) System and method for querying an encrypted database for documents satisfying an expressive keyword access structure
Ahmad et al. Coeus: A system for oblivious document ranking and retrieval
Ergüzen et al. An efficient middle layer platform for medical imaging archives
CN106845787A (zh) 一种数据自动交换方法及装置
CN114415971B (zh) 数据处理方法以及装置
US20080133562A1 (en) Coding compressible variable length database fields

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 310012 1st floor, building 1, 223 Yile Road, Hangzhou City, Zhejiang Province

Patentee after: Yinjiang Technology Co.,Ltd.

Address before: 310012 1st floor, building 1, 223 Yile Road, Hangzhou City, Zhejiang Province

Patentee before: ENJOYOR Co.,Ltd.