当前位置: 首页 > 专利查询>浙江大学专利>正文

一种非结构化数据多存储系统中同步数据的方法技术方案

技术编号:11729953 阅读:285 留言:0更新日期:2015-07-15 02:34
本发明专利技术公开了一种非结构化数据多存储系统中同步数据的方法,特别适用于以HBase为主数据库的非结构化数据多存储系统中数据同步问题。本方法引入了两种捕获HBase内原数据表数据变更事件的捕获器,首先通过捕获器捕获主数据库内数据变更事件,然后将捕获到的数据变更事件进行序列化,并将序列化后的字节流数据连入DataBus开源工作框架,最终使非结构化数据多存储系统内的数据得到同步。本发明专利技术有效克服了传统非结构化数据多存储系统中数据同步方法的缺点,搭建了高可用、可扩展的数据同步组件,具有良好的应用价值。

【技术实现步骤摘要】

本专利技术涉及一种非结构化数据多存储系统中同步数据的方法,尤其涉及非结构化数据多存储系统内以捕获主数据库HBase的数据变更事件完成存储组件之间数据同步的方法。
技术介绍
多存储系统是建立在数据仓库中以多个不同类型的存储组件共同对外提供服务的综合数据管理系统。整个系统共用一个服务数据集,其中数据除在主存储数据库中储存外,还会根据应用的服务需要以不同的格式冗余存储在其它存储组件之中。相比单一的传统关系型数据库或者NoSQL数据库,非结构化数据多存储系统不仅在存储能力上具有强容错、高可用和可扩展等特性,并且其可以利用不同类型的存储组件展示一个数据集的多种服务视图来提供更丰富的数据服务。在非结构化数据多存储系统内,主数据库与其它数据存储组件分布在不同的网络节点中,并以网络链路相连。需要同步的数据以字节流的形式在数据链路中传输。由于非结构化数据海量异构的自然属性,它们之间的数据同步过程必须符合如下几个条件:高效性,数据同步组件以较高的吞吐量完成数据的传输;时效性,数据必须以一个较小的延时本文档来自技高网...
一种非结构化数据多存储系统中同步数据的方法

【技术保护点】
一种非结构化数据多存储系统中同步数据的方法,其特征在于,包括以下步骤:(1)定义HBase数据变更事件统一模型,所述的HBase数据变更事件统一模型如下:Event=(TableName,TimeStamp,RowKey,ColumnFamily,Column,Value,Type),其中TableName表示数据变更发生的数据表表名;TimeStamp表示数据变更发生时的时间;RowKey表示发生数据变更数据行的行键值,由一个Byte序列构成;ColumnFamily和Column表示变更发生的数据单元的列族名和列名,由一个Byte序列构成;Type为变更的类型,用一个字节表示;Value表...

【技术特征摘要】
1.一种非结构化数据多存储系统中同步数据的方法,其特征在于,包括以下步骤:
(1)定义HBase数据变更事件统一模型,所述的HBase数据变更事件统一模型如下:
Event=(TableName,TimeStamp,RowKey,ColumnFamily,Column,Value,Type),
其中TableName表示数据变更发生的数据表表名;TimeStamp表示数据变更发生时的时间;RowKey表示发生数据变更数据行的行键值,由一个Byte序列构成;ColumnFamily和Column表示变更发生的数据单元的列族名和列名,由一个Byte序列构成;Type为变更的类型,用一个字节表示;Value表示数据变更的值,由Byte序列表示更新的值;
(2)对于原数据表中数据低于整个集群数据量20%的情况,创建第一类数据变更捕获器;对于需要捕获删除事件或者原数据表中数据变化频率高于2.5s每次的应用场景,创建第二类数据变更捕获器;两类数据变更捕获器的创建具体如下:
(2.1)创建第一类数据变更捕获器,该步骤包括以下子步骤:
(2.1.1)创建索引表:索引表表名为原数据表表名加上后缀“_scn”,索引表仅包含一个列族“index”,以不同的列表示不同的索引信息;索引数据具体的编排形式如下:
(TimeStamp,index:(ColunmnFamily_R,ColumnFamily_C),(RowKey,Column))
每行索引数据以数据变更发生的时间作为其行键值TimeStamp;索引表中每条索引信息记录两列数据(ColunmnFamily_R,ColumnFamily_C),后缀为“_R”的列其值为该次变更事件所在数据单元的原数据表行键值RowKey;后缀为“_C”的列,保存该条数据在原数据表的列列名Column;原数据表中数据变更发生的列族名隐含地保存在索引表各行的列族名前缀ColunmnFamily之中;
(2.1.2)利用Coprocessor运行框架在数据写入HBase时同步地将相关索引数据记录在索引表中;在为构建索引数据构建的jar包中,在Coprocessor.BaseRegionObserver基类的一个新的派生类中重载PostPut方法,具体包括以下子步骤:
(2.1.2.1)从写入操作的Put实例中提取数据插入位置的行键值与原数据表表名,并以原数据表表名推断其对应的索引表表名;
(2.1.2.2)从Coprocessor框架提供的上下文中获取辅助环境变量,可以利用该变量获得对于任意数据表的连接;
(2.1.2.3)查看put实例中的所有的写入数据,遍历由put.familyMap.keySet()方法返回的所有Key-Values键值对信息;
(2.1.2.4)提取遍历到的每一个Key-Values键值对中的列族、列与时间戳信息,并将这些信息组织成一个以时间戳为行键值并以索引表格式组织的索引表put操作实例,将这些索引表put操作实例放入List列表putList待用;
(2.1.2.5)查看当前缓存的索引表连接是否指向本次操作的索引表,若否利用辅助环境变量获得该索引表的连接;
(2.1.2.6)利用索引表连接,在索引表中通过scnTable.put(putList)写入该次操作对应的索引信息;
(2.1.3)捕获器进程周期性地通过索引表中的数据捕获原数据表中特定时间区间内的数据变更事件,该时间区间由上一次捕获完成时间与当前捕获时间共同决定,具体包括以下子步骤:
(2.1.3.1)依据数据变更捕获配置,获取本次数据抓取的原数据表表名,从其表名中推断其对应索引表表名;
(2.1.3.2)新建HBase数据表扫描实例Scan,设定该Scan的起始行键值为本次数据变更捕获对应的时间区间起点,终止行键值设置为0x7FFFFFFF或者当前时间戳值;
(2.1.3.3)通过索引表表名获取索引表连接,并应用步骤2.1.3.2建立的Scan实例(htable.getScanner(Scan)),取得操作结果(由ResultScanner实例表示);
(2.1.3.4)迭代2.1.3.3操作结果中的每一行数据,检查其中所有列列名及其值,若其列列名后缀为R,记录该列值为行键值RowKey,若该列列名后缀为C,记录该列值为列名Column,最后从列族名中提取原表列族名ColumnFamily;
(2.1.3.5)...

【专利技术属性】
技术研发人员:鲁伟明蒋静远魏宝刚庄越挺
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1