CN103838830B - 一种HBase数据库的数据管理方法及系统 - Google Patents
一种HBase数据库的数据管理方法及系统 Download PDFInfo
- Publication number
- CN103838830B CN103838830B CN201410055361.6A CN201410055361A CN103838830B CN 103838830 B CN103838830 B CN 103838830B CN 201410055361 A CN201410055361 A CN 201410055361A CN 103838830 B CN103838830 B CN 103838830B
- Authority
- CN
- China
- Prior art keywords
- hbase
- big field
- index
- container file
- 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
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/2228—Indexing 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种HBase数据库的数据管理方法及系统,管理方法包括:响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;向保存在HDFS文件系统中的容器文件写入所述大字段数据块;将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;在HBase中保存所述待存储HBase记录。本发明可以很好地发挥HBase及HDFS的优势,而回避HBase对大字段处理的不足,以及HDFS在存储小文件时资源消耗过大的不足,较好地满足了业务的需要,在实际应用中取得了良好的效果。
Description
技术领域
本发明涉及数据库相关技术领域,特别是一种HBase数据库的数据管理方法及系统。
背景技术
随着业务量的激增,IT运营系统需要处理的数据量与访问量也随之猛增,传统的以Oracle为代表的数据库解决方案因其效率低下、扩展性差等问题,已经远远不能满足用户的存储与查询需求,而逐渐让位于以HBase为代表的新一代分布式数据库。
HBase–Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase对大小在千字节级的记录可以很好的支持,但受其实现原理的限制,对业务中常见的记录与资料文件(如表格、文档、图片扫描件等,即是本发明所描述的大字段,典型大小从几百千字节到几十兆字节)联合存储,则不能很好的支持,会造成冗余磁盘文件读写、并发度不高、查询低效等问题。由于从业务角度来看,是以记录为主,文件内容是记录的一个组成部分,问题的实质是HBase记录中的某个或某些字段超出常规大小,故将其统称为HBase大字段存储问题。而针对此问题的传统解决方案有:大字段单独存储到磁盘、大字段单独存储到HDFS(HadoopDistributed File System,简称HDFS,是一个分布式文件系统)都有各自的缺陷,而不能较好地从整体上解决上述问题。以下分别阐述每种方案的缺陷:
1.将文件内容作为业务记录中的一个字段,直接记录在HBase中。
这种方案会导致严重的HBase性能问题。
HBase服务端收到写入请求后,向表中写入数据时是先向内存中的缓存写入,一段时间后受触发才将数据写入HDFS(持久化)。因此HBase有重做日志,以实现在数据从写入缓存到写入HDFS之间服务器故障而导致内存中数据丢失的情况下,仍能从重做日志中恢复此部分数据。
重做日志的大小是有限的,当重做日志装满,就需要回收一部分重做日志,即把这部分重做日志中仍在内存的表数据写入HDFS实现持久化,这会导致这部分重做日志所涉及到的每个有未持久化数据的表的底层数据存储都增加一个文件,若文件超过一定数量,则会影响读写效率,而需要合并。通常情况下记录较小,重做日志装满需要较长时间,回收重做日志的频率较低,因回收重做日志而导致的文件合并操作是罕有的。然而在大字段的情况下,重做日志会很快装满,导致无关表的底层数据存储增加大量的小文件,并造成频繁的文件合并操作,极大影响HBase的性能。因此这种方案是不可行的。
2.文件单独存储在共享存储磁盘中,HBase业务记录中的一个字段记录文件的路径。
本方案的主要问题包括:用户操作复杂化且无事务保证、数据安全性低、系统可用性降低。
1)用户操作复杂化且无事务保证。
在本方案中用户需要分别负责对HBase和共享存储的写入,增加了复杂度,而且这两步操作对用户来说是分离的,没有事务的原子性保证,也就是说如果用户在第一步操作完成后,第二步操作提交前,系统或网络发生故障,用户操作中断,系统就会处于不一致状态。
2)数据安全性降级
HBase和HDFS的数据存储原则是分布式冗余,在标准配置下能保证集群中任意两台服务器发生故障时数据不丢失。而共享存储通常没有这样的强安全性保证,又或者为了实现这样的安全性需要付出很高的硬件成本。
3)系统可用性降低
系统的主要组件是HBase,而HBase的数据存储是HDFS。本方案引入共享存储,若共享存储不能正常工作,整个系统也就无法运行,即是在系统中增加了一个可能出故障的组件,导致整个系统的可用性降低。
3.文件单独存储在HDFS中,HBase业务记录中的一个字段记录文件的路径。
本方案的主要问题包括:用户操作复杂化且无事务保证(与上一方案相同)、HDFS不适于存储小文件。
HDFS的实现是为大文件存储和处理优化,使用一个较大的内存数据结构保存每个文件的状态,如果存储的文件数过多,就会导致内存占用过大,而增加集群压力,降低集群性能。
发明内容
基于此,有必要针对现有技术在HBase数据库中,对大字段数据无法很好地存储和读取的技术问题,提供一种HBase数据库的数据管理方法及系统。
一种HBase数据库的数据管理方法,包括:
响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
在HBase中保存所述待存储HBase记录。
一种HBase数据库的数据管理系统,包括:
数据写入请求响应模块,用于响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
大字段数据块生成模块,用于将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
大字段数据块写入模块,用于向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
待存储HBase记录替换模块,用于将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
待存储HBase记录保存模块,用于在HBase中保存所述待存储HBase记录。
本发明为了解决HBase数据库不能很好地处理包含大字段的大量记录的问题,通过结合HBase和HDFS两者的优点,把HBase记录与影响HBase性能的大字段在物理存储层面分离,把大字段的内容保存在HDFS的容器文件中,在HBase中实际保存的数据是大字段的索引而非大字段本身。从而可以很好地发挥HBase对记录处理的高响应时间、高吞吐量、高并发度的优势,而回避HBase对大字段处理的不足。每个容器文件中可存储多个大字段内容(应用中可达到亿级),实现索引机制,可通过索引迅速定位一个大字段在容器文件中的具体位置并读取。由于整个替换工作是在数据写入HBase数据库的过程中执行,因此是一个完整的原子操作,保证了用户写数据操作的易用性、原子性和数据一致性。另外,将多个大字段打包存储在系统的必备组件HDFS的容器文件中,以发挥HDFS存储大文件的高容量、高可靠性、高传输率、高并发度的优势,而回避HDFS在存储小文件时资源消耗过大的不足。本发明较好地满足了业务的需要,在实际应用中取得了良好的效果。
附图说明
图1为本发明一种HBase数据库的数据管理方法的工作流程图;
图2为本发明一个例子的大字段的数据存储结构图;
图3为本发明一个例子的结构示意图;
图4为本发明一种HBase数据库的数据管理系统的结构模块图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1所示为本发明一种HBase数据库的数据管理方法的工作流程图,包括:
步骤S101,响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
步骤S102,将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
步骤S103,向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
步骤S104,将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
步骤S105,在HBase中保存所述待存储HBase记录。
当用户请求向HBase数据库写入数据时,系统首先执行步骤S101,然后,在步骤S102将大字段的内容从HBase记录中提取出来作为大字段数据块,步骤S103则将大字段数据块写入HDFS中的容器文件,步骤S104则生成用于记录该大字段数据块在HDFS文件系统中的位置的索引,并替换到HBase记录中,在步骤S105将替换后的HBase记录写入HBase数据库。这样在HBase中实际保存的数据就成了大字段的索引而非大字段本身,从而减小HBase的负担,提高HBase性能。同时,在HDFS中保存的是包括多个大字段数据块的容器文件,因此,HDFS也无需处理小文件,从而在整体上克服了现有技术在HBase数据库中,对大字段数据无法很好地管理的技术问题,提高HBase性能。
其中向HBase数据库写入是通过HBase的Coprocessor机制实现的。Coprocessor机制是HBase制定的用于扩展其功能的组件开发规范,本例子根据该规范,开发出了一个符合规范的Coprocessor,可以嵌到HBase系统中,实现本文档所描述功能的,下文中如无特殊说明,则Coprocessor一词专指上述实现本例子所描述功能的Coprocessor。
如图2所示为一个例子的大字段的数据存储结构图,在HBase数据库21中的HBase表211中的一条HBase记录中包括多个字段2111、2112、……、211n,而其中内容的大小超过预设字段阈值的字段作为大字段,如大字段211i,将大字段211i的内容提取并放到HDFS文件系统22的其中一个容器文件221中,在大字段数据块2211、大字段数据块2212、……的最后加入,成为大字段数据块221i。
大字段在记录中的分离是在HBase服务端完成,对用户是透明的。
在其中一个实施例中,所述索引包括所述容器文件的文件名,以及所述大字段数据块在所述容器文件中的偏移量。
通过容器文件的文件名则可以定位到对应的容器文件,然后根据偏移量(从容器文件开始算起的字节数)以及长度。通过这些信息可以唯一定位到一个大字段数据块,从而为以后的读取提供便利。
在其中一个实施例中,所述提取所述大字段的内容生成大字段数据块,具体包括:
新建一个包括起始标志的大字段数据块;
获取所述大字段所在的待存储HBase记录的至少一个属性,并在所述大字段数据块保存;
提取所述大字段的内容,并在所述大字段数据块保存;
获取所述大字段数据块在容器文件中的序号,并在所述大字段数据块保存;
获取所述大字段数据块的大小,并在所述大字段数据块保存;
生成对所述大字段数据块的校验码,并在所述大字段数据块保存。容器文件是以表-列族-RegionServer为维度进行组织,一个表中的一个列族在每台RegionServer上对应一个容器文件组,即是说由该RegionServer执行的向一个表的一个列族中插入包含大字段的记录的所有请求,其大字段数据会写入到同一个HDFS容器文件组中。一个容器文件组中包含多个容器文件,这多个容器文件是随着大字段的写入和单文件长度的增长,由容器文件切分策略控制分割而逐渐增加的。每个容器文件组中的文件是顺序生成的,同一时刻只有最新的文件可以写入,该文件即是当前文件。当RegionSever重新启动时,会建立新的容器文件。
目前容器文件切分策略有两种:根据文件大小,即是在当前文件大小超过指定值时创建一个新文件;或是根据文件产生时长,即是一个文件从创建算起,超过指定时长后创建一个新文件。这两种策略也可以结合起来同时应用。
一个容器文件中可容纳多个大字段,每个大字段的内容及其辅助信5息组织成一段连续的字节流,以连续追加写入的方式写入容器文件。每个大字段的内容写入容器文件的字节流称为一个大字段数据块,在本发明一个例子中,大字段数据块分为三个区域:头部、主体和尾部。每个区域的具体信息如下表所述:
在其中一个实施例中,还包括:
响应数据读取请求,从HBase数据库中获取所请求的待读取HBase记录;
如果所述待读取HBase记录的字段中包含有所述索引,则所述索引作为待读取索引,根据所述待读取索引从所述HDFS文件系统中获取对应的大字段数据块作为待读取大字段数据块;
在所述待读取HBase记录中,将从所述待读取大字段数据块中提取的大字段的内容替换对应的所述待读取索引;
返回所述待读取HBase记录。
本实施例用于读取记录,在读取记录时,同样利用Coprocessor机制,先从HBase加载包含索引的记录,根据索引到容器文件中读取相应的大字段内容,替换掉索引,重组出用户当初提交的记录,返回给用户。大字段在记录中的分离与重组是在HBase服务端完成,对用户是透明的。
当用户删除包含大字段的记录时,由于HDFS中的容器文件不能再次打开写入,因此只是删除HBase表中的记录(包含索引)。这不需要特殊处理,可以直接由HBase系统完成。记录对应的大字段数据仍然留在HDFS的容器文件中,但不被任何索引所引用,从而处于无效状态,即对用户不可见。这对系统的正常插入和读取的功能和性能无影响,只是随着删除记录的增加,容器文件中会积累越来越多的无效大字段数据,占用存储空间。
为此,系统定期进行紧缩操作以解决无效的大字段占用存储空间的问题。
在其中一个实施例中,还包括:
获取所述HBase数据库中的所有HBase记录中的索引作为待紧缩索引;
从所述HDFS文件系统中的容器文件中选择待紧缩容器文件;
将包括有所述待紧缩索引对应的大字段数据块的待紧缩容器文件作为原容器文件,对所述原容器文件执行紧缩操作;
所述紧缩操作包括:
将原容器文件中所述待紧缩索引对应的大字段数据块迁移到新建立的容器文件中,并获取每个所述待紧缩索引对应的大字段数据块在新建立的容器文件中的索引作为紧缩后索引;
将所述待紧缩索引替换为对应的紧缩后索引;
删除所述原容器文件。
在其中一个实施例中,所述从所述HDFS文件系统中的容器文件中选择待紧缩容器文件,具体包括:
将所述待紧缩索引根据容器文件分组,统计出每个容器文件的所包括与所述待紧缩索引对应的大字段数据块的数量,作为每个容器文件的有效大字段数据块数量;
获取每个容器文件中所包括的大字段数据块的数量,作为每个容器文件的总大字段数;
将有效大字段数据块数量占总大字段数的比例小于预设比例阈值的容器文件作为待紧缩容器文件。
本实施例,仅将超过比例阈值的容器文件作为待紧缩容器文件,从而仅对超过比例阈值的容器文件执行紧缩操作,避免频繁的紧缩操作影响系统性能。
如图3所示为本发明一个例子的结构示意图。
本例子可以归纳为写入、读取、删除与紧缩四个方面。
维护包括对已删除记录对应的大字段的清理,是通过独立运行的程序实现的。
下面分别从写入、读取、删除与紧缩四个方面,对本方案的实现过程进行详细说明。
1)写入
用户通过调用HBase客户端31的函数库,向HBase数据库32提交插入包含大字段的记录的请求。该记录经HBase数据库32内部通信,交由HBase数据库32的集群中某一台RegionServer(HBase中的一个具体服务器)负责具体的插入工作。在该RegionServer上安装了Coprocessor321,它在RegionServer从接收到插入记录的请求到实际插入记录之间的阶段被HBase数据库32的系统调用,对大字段进行如下操作:首先做剥离处理,即将大字段的数据从记录中移出。然后按上述大字段数据块的结构生成一个大字段数据块,填充进正确的信息,并写入HDFS文件系统33对应的容器文件组中的当前容器文件的末尾,并获取该大字段数据块在容器文件中的位置的索引。最后,将该大字段的索引放入记录中原本包含大字段的位置,并将记录交由HBase数据库32实际插入到HBase存储表322中。这样,实际存储在HBase存储表322中的数据就由大字段变成了大字段的索引,数据量得到极大的减小,而大字段存储到HDFS上的容器文件中,容量、可靠性和访问速度都有保证,结合两个系统各自的优点,从而达到较好的业务效果。
2)读取
用户通过调用HBase客户端31的函数库,向HBase数据库32提交读取先前插入的包含大字段记录的请求。该记录经HBase数据库32内部通信,交由HBase数据库32的集群中某一台RegionServer负责具体的读取工作。在该RegionServer上安装了Coprocessor321,它在RegionServer从实际读取记录到向用户返回记录之间的阶段被HBase数据库32的系统调用,对大字段进行如下操作:首先从读取的记录中获取之前写入的大字段在容器文件中的索引,根据该索引从容器文件中读取出大字段数据块,并从中提取出之前用户提交的大字段;然后用大字段替换掉记录中的索引,还原出用户当初提交的记录,最后将记录交由HBase系统发送给客户端31。
3)删除
当用户删除包含大字段的记录时,由于HDFS文件系统33中的容器文件不能再次打开写入,因此只是删除HBase存储表322中的记录(包含索引)。这不需要特殊处理,可以直接由HBase数据库32的系统完成。记录对应的大字段数据仍然留在HDFS文件系统33的容器文件中,但不被任何索引所引用,从而处于无效状态,即对用户不可见。这对系统的正常插入和读取的功能和性能无影响,只是随着删除记录的增加,容器文件中会积累越来越多的无效大字段数据,占用存储空间。
4)紧缩
系统定期进行紧缩操作以解决无效的大字段占用存储空间的问题:
a)扫描HBase存储表322中的索引,将所有有效的索引提取出来,并按容器文件分组,统计出每个容器文件的有效大字段数据块数量;
b)从每个容器文件的最后一个大字段数据块的尾部取得该数据块的序号,加1即得到该容器文件中总的大字段数据块数量,这个总数包含了有效和无效的大字段数据块。结合有效大字段数据块数量得到无效大字段的比例。
c)对于无效大字段的比例超过一定阈值的容器文件,将其中有效的大字段数据块迁移到另一个新建立的容器文件中,取得每个大字段在新的容器文件中的索引。
d)更新HBase表中记录的被迁移的索引的值为新的容器文件中的索引,删除旧的容器文件。
经过紧缩操作,容器文件中无效的记录被清除,其占用的存储空间得到了释放。
本发明通过以上的写入、读取、删除、紧缩四项功能相结合,实现了完整的大字段存储功能。
如图4所示为本发明一种HBase数据库的数据管理系统的结构模块图,包括:
数据写入请求响应模块401,用于响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
大字段数据块生成模块402,用于将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
大字段数据块写入模块403,用于向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
待存储HBase记录替换模块404,用于将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
待存储HBase记录保存模块405,用于在HBase中保存所述待存储HBase记录。
在其中一个实施例中,所述索引包括所述容器文件的文件名,以及所述大字段数据块在所述容器文件中的偏移量。
在其中一个实施例中,大字段数据块生成模块中,所述提取所述大字段的内容生成大字段数据块,具体包括:
新建一个包括起始标志的大字段数据块;
获取所述大字段所在的待存储HBase记录的至少一个属性,并在所述大字段数据块保存;
提取所述大字段的内容,并在所述大字段数据块保存;
获取所述大字段数据块在容器文件中的序号,并在所述大字段数据块保存;
获取所述大字段数据块的大小,并在所述大字段数据块保存;
生成对所述大字段数据块的校验码,并在所述大字段数据块保存。
在其中一个实施例中,还包括:
数据读取请求响应模块,用于响应数据读取请求,从HBase数据库中获取所请求的待读取HBase记录;
待读取大字段数据块获取模块,用于如果所述待读取HBase记录的字段中包含有所述索引,则所述索引作为待读取索引,根据所述待读取索引从所述HDFS文件系统中获取对应的大字段数据块作为待读取大字段数据块;
待读取HBase记录替换模块,用于在所述待读取HBase记录中,将从所述待读取大字段数据块中提取的大字段的内容替换对应的所述待读取索引;
待读取HBase记录返回模块,用于返回所述待读取HBase记录。
在其中一个实施例中,还包括:
待紧缩索引获取模块,用于获取所述HBase数据库中的所有HBase记录中的索引作为待紧缩索引;
待紧缩容器文件选择模块,用于从所述HDFS文件系统中的容器文件中选择待紧缩容器文件;
紧缩操作模块,用于将包括有所述待紧缩索引对应的大字段数据块的待紧缩容器文件作为原容器文件,对所述原容器文件执行紧缩操作;
所述紧缩操作包括:
将原容器文件中所述待紧缩索引对应的大字段数据块迁移到新建立的容器文件中,并获取每个所述待紧缩索引对应的大字段数据块在新建立的容器文件中的索引作为紧缩后索引;
将所述待紧缩索引替换为对应的紧缩后索引;
删除所述原容器文件。
在其中一个实施例中,所述待紧缩容器文件选择模块,具体用于:
将所述待紧缩索引根据容器文件分组,统计出每个容器文件的所包括与所述待紧缩索引对应的大字段数据块的数量,作为每个容器文件的有效大字段数据块数量;
获取每个容器文件中所包括的大字段数据块的数量,作为每个容器文件的总大字段数;
将有效大字段数据块数量占总大字段数的比例小于预设比例阈值的容器文件作为待紧缩容器文件。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种HBase数据库的数据管理方法,其特征在于,包括:
响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
在HBase中保存所述待存储HBase记录。
2.根据权利要求1所述的HBase数据库的数据管理方法,其特征在于,所述索引包括所述容器文件的文件名,以及所述大字段数据块在所述容器文件中的偏移量。
3.根据权利要求1所述的HBase数据库的数据管理方法,其特征在于,还包括:
响应数据读取请求,从HBase数据库中获取所请求的待读取HBase记录;
如果所述待读取HBase记录的字段中包含有所述索引,则所述索引作为待读取索引,根据所述待读取索引从所述HDFS文件系统中获取对应的大字段数据块作为待读取大字段数据块;
在所述待读取HBase记录中,将从所述待读取大字段数据块中提取的大字段的内容替换对应的所述待读取索引;
返回所述待读取HBase记录。
4.根据权利要求1所述的HBase数据库的数据管理方法,其特征在于,还包括:
获取所述HBase数据库中的所有HBase记录中的有效索引作为待紧缩索引;
从所述HDFS文件系统中的容器文件中选择待紧缩容器文件;
将包括有所述待紧缩索引对应的大字段数据块的待紧缩容器文件作为原容器文件,对所述原容器文件执行紧缩操作;
所述紧缩操作包括:
将原容器文件中所述待紧缩索引对应的大字段数据块迁移到新建立的容器文件中,并获取每个所述待紧缩索引对应的大字段数据块在新建立的容器文件中的索引作为紧缩后索引;
将所述待紧缩索引替换为对应的紧缩后索引;
删除所述原容器文件。
5.根据权利要求4所述的HBase数据库的数据管理方法,其特征在于,所述从所述HDFS文件系统中的容器文件中选择待紧缩容器文件,具体包括:
将所述待紧缩索引根据容器文件分组,统计出每个容器文件的所包括与所述待紧缩索引对应的大字段数据块的数量,作为每个容器文件的有效大字段数据块数量;
获取每个容器文件中所包括的大字段数据块的数量,作为每个容器文件的总大字段数;
将有效大字段数据块数量占总大字段数的比例小于预设比例阈值的容器文件作为待紧缩容器文件。
6.一种HBase数据库的数据管理系统,其特征在于,包括:
数据写入请求响应模块,用于响应数据写入请求,生成用于在HBase数据库中保存的待存储HBase记录;
大字段数据块生成模块,用于将所述待存储HBase记录中所包括的内容的大小超过预设字段阈值的字段作为大字段,提取所述大字段的内容生成大字段数据块;
大字段数据块写入模块,用于向保存在HDFS文件系统中的容器文件写入所述大字段数据块;
待存储HBase记录替换模块,用于将所述大字段数据块在所述HDFS文件系统中的位置作为索引,将所述待存储HBase记录中的大字段的内容替换为所述索引;
待存储HBase记录保存模块,用于在HBase中保存所述待存储HBase记录。
7.根据权利要求6所述的HBase数据库的数据管理系统,其特征在于,所述索引包括所述容器文件的文件名,以及所述大字段数据块在所述容器文件中的偏移量。
8.根据权利要求6所述的HBase数据库的数据管理系统,其特征在于,还包括:
数据读取请求响应模块,用于响应数据读取请求,从HBase数据库中获取所请求的待读取HBase记录;
待读取大字段数据块获取模块,用于如果所述待读取HBase记录的字段中包含有所述索引,则所述索引作为待读取索引,根据所述待读取索引从所述HDFS文件系统中获取对应的大字段数据块作为待读取大字段数据块;
待读取HBase记录替换模块,用于在所述待读取HBase记录中,将从所述待读取大字段数据块中提取的大字段的内容替换对应的所述待读取索引;
待读取HBase记录返回模块,用于返回所述待读取HBase记录。
9.根据权利要求6所述的HBase数据库的数据管理系统,其特征在于,还包括:
待紧缩索引获取模块,用于获取所述HBase数据库中的所有HBase记录中的有效索引作为待紧缩索引;
待紧缩容器文件选择模块,用于从所述HDFS文件系统中的容器文件中选择待紧缩容器文件;
紧缩操作模块,用于将包括有所述待紧缩索引对应的大字段数据块的待紧缩容器文件作为原容器文件,对所述原容器文件执行紧缩操作;
所述紧缩操作包括:
将原容器文件中所述待紧缩索引对应的大字段数据块迁移到新建立的容器文件中,并获取每个所述待紧缩索引对应的大字段数据块在新建立的容器文件中的索引作为紧缩后索引;
将所述待紧缩索引替换为对应的紧缩后索引;
删除所述原容器文件。
10.根据权利要求9所述的HBase数据库的数据管理系统,其特征在于,所述待紧缩容器文件选择模块,具体用于:
将所述待紧缩索引根据容器文件分组,统计出每个容器文件的所包括与所述待紧缩索引对应的大字段数据块的数量,作为每个容器文件的有效大字段数据块数量;
获取每个容器文件中所包括的大字段数据块的数量,作为每个容器文件的总大字段数;
将有效大字段数据块数量占总大字段数的比例小于预设比例阈值的容器文件作为待紧缩容器文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410055361.6A CN103838830B (zh) | 2014-02-18 | 2014-02-18 | 一种HBase数据库的数据管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410055361.6A CN103838830B (zh) | 2014-02-18 | 2014-02-18 | 一种HBase数据库的数据管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838830A CN103838830A (zh) | 2014-06-04 |
CN103838830B true CN103838830B (zh) | 2017-03-29 |
Family
ID=50802327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410055361.6A Active CN103838830B (zh) | 2014-02-18 | 2014-02-18 | 一种HBase数据库的数据管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103838830B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205082A (zh) | 2014-06-27 | 2015-12-30 | 国际商业机器公司 | 用于处理hdfs中的文件存储的方法和系统 |
CN104219292B (zh) * | 2014-08-21 | 2017-06-30 | 浪潮软件股份有限公司 | 一种基于HBase的互联网资源共享的方法 |
CN104881483B (zh) * | 2015-06-05 | 2018-01-09 | 南京大学 | 用于Hadoop平台数据泄露攻击的自动检测取证方法 |
CN107273368A (zh) * | 2016-04-06 | 2017-10-20 | 中兴通讯股份有限公司 | 海量数据存储管理方法、装置及数据存储系统 |
CN106326374A (zh) * | 2016-08-15 | 2017-01-11 | 北京集奥聚合科技有限公司 | 一种从HBase中增量抽取数据的方法及系统 |
CN106407355A (zh) * | 2016-09-07 | 2017-02-15 | 中国农业银行股份有限公司 | 一种数据存储方法及装置 |
CN107016039B (zh) * | 2017-01-06 | 2020-11-03 | 创新先进技术有限公司 | 数据库写入的方法和数据库系统 |
CN106843770A (zh) * | 2017-01-23 | 2017-06-13 | 北京思特奇信息技术股份有限公司 | 一种分布式文件系统中小文件数据存储、读取方法及装置 |
CN107122435B (zh) * | 2017-04-19 | 2021-02-12 | 北京奇艺世纪科技有限公司 | 非关系型数据库的控制方法及装置 |
CN108256284A (zh) * | 2018-01-02 | 2018-07-06 | 中山大学 | 一种药物虚拟筛选方法 |
CN109272602B (zh) * | 2018-08-29 | 2021-12-28 | 百度在线网络技术(北京)有限公司 | 无人车数据的录制方法、装置、设备和存储介质 |
CN109189577B (zh) * | 2018-08-31 | 2020-05-19 | 武汉达梦数据库有限公司 | 一种数据同步时防止内存溢出的方法和装置 |
CN110874388A (zh) * | 2018-08-31 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 数据存储及读取方法、数据处理装置及电子设备 |
CN110955556B (zh) * | 2018-09-27 | 2023-05-02 | 阿里云计算有限公司 | 数据库恢复方法及装置、存储介质、数据库系统 |
CN109522290B (zh) * | 2018-11-14 | 2021-10-29 | 中国刑事警察学院 | 一种HBase数据块恢复及数据记录提取方法 |
CN109582643A (zh) * | 2018-11-20 | 2019-04-05 | 中国石油大学(华东) | 一种基于HBase的实时动态数据管理系统 |
CN110413413A (zh) * | 2019-07-26 | 2019-11-05 | 北京蜜莱坞网络科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN112084190A (zh) * | 2020-08-31 | 2020-12-15 | 武汉光庭信息技术股份有限公司 | 一种基于大数据的采集数据实时存储与管理系统和方法 |
CN112699092B (zh) * | 2021-01-13 | 2023-02-03 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001048638A2 (en) * | 1999-12-29 | 2001-07-05 | Unisys Corporation | Database management system and method for databases having large objects |
WO2011100368A1 (en) * | 2010-02-09 | 2011-08-18 | Google Inc. | Method and system for providing efficient access to a tape storage system |
CN103116610A (zh) * | 2013-01-23 | 2013-05-22 | 浙江大学 | 基于HBase的矢量空间大数据存储方法 |
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
-
2014
- 2014-02-18 CN CN201410055361.6A patent/CN103838830B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001048638A2 (en) * | 1999-12-29 | 2001-07-05 | Unisys Corporation | Database management system and method for databases having large objects |
WO2011100368A1 (en) * | 2010-02-09 | 2011-08-18 | Google Inc. | Method and system for providing efficient access to a tape storage system |
CN103116610A (zh) * | 2013-01-23 | 2013-05-22 | 浙江大学 | 基于HBase的矢量空间大数据存储方法 |
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
Non-Patent Citations (1)
Title |
---|
云数据管理的新数据模型;李茂等;《中国期刊全文数据库 计算机工程与设计》;20121031;第33卷(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103838830A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103838830B (zh) | 一种HBase数据库的数据管理方法及系统 | |
US9710535B2 (en) | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories | |
US10764045B2 (en) | Encrypting object index in a distributed storage environment | |
Liao et al. | Multi-dimensional index on hadoop distributed file system | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
CN104731921B (zh) | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
JP5922716B2 (ja) | 個別にアクセス可能なデータユニットの記憶の取り扱い方法 | |
KR101932372B1 (ko) | 인 플레이스 스냅샷들 | |
US10659225B2 (en) | Encrypting existing live unencrypted data using age-based garbage collection | |
Ahn et al. | ForestDB: A fast key-value storage system for variable-length string keys | |
US20130013890A1 (en) | Database system | |
CN103530387A (zh) | 一种hdfs针对小文件的改进方法 | |
US20230046216A1 (en) | Data management system and method of controlling | |
CN106547859A (zh) | 一种多租户数据存储系统下的数据文件的存储方法及装置 | |
KR20110079655A (ko) | 분산형 저장 시스템 내의 데이터의 원자 다중 변경 | |
CN107544873A (zh) | 一种存放备份数据的备份系统和方法 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
Stender et al. | BabuDB: Fast and efficient file system metadata storage | |
US20150347477A1 (en) | Streaming File System | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
US20160357673A1 (en) | Method of maintaining data consistency | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
WO2013139379A1 (en) | Replicated data storage system and methods | |
US20220342888A1 (en) | Object tagging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |