CN102129458A - 关系型数据库的存储方法及装置 - Google Patents

关系型数据库的存储方法及装置 Download PDF

Info

Publication number
CN102129458A
CN102129458A CN 201110056705 CN201110056705A CN102129458A CN 102129458 A CN102129458 A CN 102129458A CN 201110056705 CN201110056705 CN 201110056705 CN 201110056705 A CN201110056705 A CN 201110056705A CN 102129458 A CN102129458 A CN 102129458A
Authority
CN
China
Prior art keywords
record
major key
table section
section
minimum
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
CN 201110056705
Other languages
English (en)
Other versions
CN102129458B (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.)
Beijing Han Yun Era Data Technology Co Ltd
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN 201110056705 priority Critical patent/CN102129458B/zh
Publication of CN102129458A publication Critical patent/CN102129458A/zh
Application granted granted Critical
Publication of CN102129458B publication Critical patent/CN102129458B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种关系型数据库的存储方法及装置,包括:建立控制表,用以存储表段的信息,包括表段的标识和表段所存储记录的最小及最大主键值;当有新的记录***表时,将新的记录***该表表段的内存表,并在该表段的信息改变时,在控制表中进行相应更新;当有表段的内存表中所有记录所占用内存达到预定义的上限时,将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表。采用本发明可以实现关系型数据库自动分段并按列存储,并节省存储时的开销,且本发明的关系型数据库的存储结构适合于作为关系型数据库的存储基础。

Description

关系型数据库的存储方法及装置
技术领域
本发明涉及数据库技术领域,尤其涉及关系型数据库的存储方法及装置。
背景技术
现有技术提供了多种实现数据库存储的方法。
例如,现有技术一提供一种行存储数据库的方法,如Oracle(Oracle Database Concepts)等方法。该方法按照先入先存储的规则对关系型数据库的记录按行进行存储,并对主键建立B+树等类型的唯一性索引。但是,现有技术一存在如下不足:首先主键索引占有一定的存储空间,增加了***开销,尽管某些现有的数据库采取了按列分区的机制来提高某些查询性能,但这又提高了检查主键是否唯一的开销,因为,***不得不检查所有分区中主键的唯一性,分区越多,检查的开销越大;其次由于按行存储,所有的列存储在一起,不能按需读取列,读取部分列不得不先读取全部列然后过滤掉不需要的列,这样就增加了硬盘IO,降低了性能。
现有技术二提供一种实现基于列存储的关系型数据库的方法及装置(申请号/专利号:200810187227)。但是,尽管现有技术二解决了行存储数据库不能按需读取列的问题,但是仍存在如下缺陷:***记录时,按列分开存储,并且每个列的值按排序存储,增加了存储时的开销;由于将列分开存储,需要连接数据把列连在一起来重构原始的记录,维护连接数据还增加了***的负担。
现有技术三提供一种MonetDB列存储数据库(P.A.Boncz.:“Monet:A Next-Generation DBMS Kernel For Query-Intensive Applications”)。现有技术三的MonetDB虽然也是按列存储的数据库***,它也有列数据库的按需读取列的优点,但是,仍存在如下缺陷:存储每个列时需要存储记录的ROWID,***需要通过ROWID来连接列值从而重建记录,且ROWID通常是长整形或者更长的类型,这样增加了***的开销。
现有技术四提供一种Google BigTable(Fay Chang等:Bigtable:A Distributed Storage System for Structured Data)。尽管Google BigTable是按RowKey排序及分段来存储记录,但是,它引入了列族(即Column Family)的概念,即一条记录由一个或多个列族组成,存储时按列族存储,每个列族对应一个数据文件(即Google SSTable文件),这样,一个表段(Tablet)就会对应一个或多个数据文件(SSTable文件),而且,它在列族中存储的值都是Key/Value形式,不适合用于存储关系型数据。事实上,BigTable是一个多维的分布式的映射表的存储***,这种存储结构不适合作为关系型数据库的存储基础。
发明内容
本发明实施例提供一种关系型数据库的存储方法,用以实现关系型数据库的自动分段并按列存储,并节省存储时的开销,且存储结构适合于作为关系型数据库的存储基础,该方法包括:
建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
当有新的记录***表时:
若表中没有记录,则新建该表的表段,将新的记录***该表段的内存表,将该表段的标识存储至控制表,将新的记录的主键值作为该表段所存储记录的最小及最大主键值存储至控制表;
若表中已有记录,则根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段,将新的记录***该表段的内存表,***时按主键值排序;若***改变了该表段所存储记录的最小或最大主键值,则在控制表中进行相应更新;
当有表段的内存表中所有记录所占用内存达到预定义的上限时:
将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并。
本发明实施例还提供一种关系型数据库的存储装置,用以实现关系型数据库的自动分段并按列存储,并节省存储时的开销,且存储结构适合于作为关系型数据库的存储基础,该装置包括:
控制表建立模块,用于建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
表段建立模块,用于当有新的记录***表时:若表中没有记录,则新建该表的表段;第一记录***模块,用于将新的记录***该新建的表段的内存表;第一控制表更新模块,用于将该新建的表段的标识存储至控制表,将新的记录的主键值作为该新建的表段所存储记录的最小及最大主键值存储至控制表;
表段查找模块,用于当有新的记录***表时:若表中已有记录,则根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段;第二记录***模块,用于将新的记录***该查找的表段的内存表,***时按主键值排序;第二控制表更新模块,用于若***改变了该查找的表段所存储记录的最小或最大主键值,则在控制表中进行相应更新;
记录转存处理模块,用于当有表段的内存表中所有记录所占用内存达到预定义的上限时:将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并。
本发明实施例与现有技术一相比,无需对主键建立索引,可节省存储时的开销;且本发明实施例按列存储,可解决行存储数据库不能按需读取列的问题;
本发明实施例将表分段并按主键值对记录进行排序,与现有技术二相比可降低存储时的开销;且不同于现有技术二需要连接数据将分开存储的列连在一起重构原始记录,本发明实施例无需连接数据来重构记录,不会增加维护连接数据的负担;
同样的,不同于现有技术三需要ROWID连接列值从而重建记录,本发明实施例无需存储记录的ROWID来重建记录,不会增加存储时的负担;
与现有技术四相比,本发明实施例中的表段只对应一个数据文件,而且存储的是关系型数据库的记录,并不是Key/Value形式的数据,存储时本发明实施例是按记录的列存储,没有列族的概念,完全适合作为关系型数据库的存储基础。
本发明实施例可以提高关系型数据库的查询性能,且基于主键排序及分段来实现关系型数据库的存储,可以作为实现关系型数据库的并行计算的基本存储方式,将分段存储的表数据均衡分配到并行数据库的节点中,再利用Map/Reduce算法实施并行运算。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中关系型数据库的存储方法的流程图;
图2为本发明实施例中控制表的结构示意图;
图3为本发明实施例中***记录到一个空表中的示意图;
图4为本发明实施例中***记录到非空表中情形一的示意图;
图5为本发明实施例中***记录到非空表中情形二的示意图;
图6为本发明实施例中***记录导致表段的内存表中记录所占用的内存达到上限的示意图;
图7为本发明实施例中表示表段数据文件的格式示意图;
图8为本发明实施例中表示表段***的示意图;
图9为本发明实施例中一个投影查询的示意图;
图10为本发明实施例中一个条件查询的示意图;
图11为本发明实施例中一个并行数据库分配表段数据的示意图;
图12为本发明实施例中关系型数据库的存储装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
如图1所示,本发明实施例中关系型数据库的存储方法流程可以包括:
先执行步骤101:建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
当有新的记录***表时:
若表中没有记录,则执行步骤102:新建该表的表段,将新的记录***该表段的内存表;接着执行步骤103:将该表段的标识存储至控制表,将新的记录的主键值作为该表段所存储记录的最小及最大主键值存储至控制表;
若表中已有记录,则执行步骤104:根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段,将新的记录***该表段的内存表,***时按主键值排序;若***改变了该表段所存储记录的最小或最大主键值,则还需执行步骤105:在控制表中进行相应更新;
当有表段的内存表中所有记录所占用内存达到预定义的上限时:
执行步骤106:将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,存储记录时按列存储,且保持按主键值排序;接着执行步骤107:清空该表段的内存表;其中在执行步骤106时,若硬盘上没有该表段数据文件,则还包括:新建该表段数据文件(步骤106a);若硬盘上已有该表段数据文件,则还包括:在存储时将内存表中的记录与该表段数据文件中已有的记录合并(步骤106b)。
下面对图1所示流程作如下详细说明:
本发明实施例中,关系型数据库中的表被分成段称之为表段,每个表段中的记录数有一个上限。表段由内存表和表段数据文件组成。内存表是表段中常驻内存的数据结构,用以存储新***的记录,并按记录的主键值排序,所存储的记录占用的内存不能超过预定义的上限,否则需要将记录存储到表段数据文件中,然后清空内存表。表段数据文件用以存储表段的记录,按列存储,并且按记录的主键值排序。控制表用以管理表段,存储每个表段的信息,包括表段的标识和表段所存储记录的最小及最大主键值。控制表所存储的表段信息可以按表段所存储的最小主键值排序。
具体实施时,首先建立控制表,用以存储表段的信息,包括表段的标识(ID)和表段所存储记录的最小及最大主键值。
例如,图2为本发明实施例中控制表的结构示意图。如图2所示,控制表中包括表段的标识(TABLET_ID),表段所存储记录的最小主键值(MIN_PK)及最大主键值(MAX_PK)。在没有记录***表时,控制表为空。
具体实施时,当有新的记录***表时,分成两种情况:
一是表中没有记录,此时控制表为空,需要新建该表的表段,将新的记录***该表段的内存表中,将该表段的信息存储到控制表中,具体包括将该表段的标识存储至控制表,将新的记录的主键值作为该表段所存储记录的最小及最大主键值存储至控制表。由于表段中只有一条记录,表段所存储记录的最小和最大主键值为***记录的主键值。
例如,图3为本发明实施例中***记录到一个空表中的示意图。如图3所示,本例中表的结构为(ID,NAME),***的记录为(1001,中国),表段的内存表中***了记录(1001,中国),控制表中***了新的表段信息:(1,1001,1001),即表段的ID为1,表段所存储记录的最小主键值为1001,而存储的最大主键值也为1001。
二是表中已有记录,此时控制表不为空,需要根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段,然后,在查找到的表段的内存表中***新的记录,***时按主键值排序。如果***的记录改变了该表段所存储记录的最小或最大主键值,则需要更新控制表中对应表段的信息。其中,在查找新的记录应***的表段时,可以根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,采用二分法进行查找。
之所以用二分法查找的原因是由于在实际应用中会有成百上千乃至上万个表段,为了提高性能,用二分法查找,由于控制表中存储的表段信息是按最小主键值排序,查找***的目标表段可根据***记录的主键值以及所有表段的最小主键值用二分法查找定位:
当有新的记录***表时,若新的记录的主键值介于两个表段的最小主键值之间,则将前一个表段作为新的记录应***的表段;若新的记录的主键值在第一个表段的最小主键值之前,则将第一个表段作为新的记录应***的表段;若新的记录的主键值在最后一个表段的最小主键值之后,则将最后一个表段作为新的记录应***的表段。
例如,图4为本发明实施例中***记录到非空表中控制表无变化的示意图。如图4所示,控制表中有两个表段:(1,1001,1005)和(2,1010,1011),其中表段1中有记录:(1001,中国),(1005,韩国),表段2中有记录:(1010,美国),(1011,加拿大)。***记录(1003,日本),控制表中所有表段所存储记录的最小主键值从小到大为:1001,1010,二分法查找的结果是表段1(由于表段1和2的最小主键值从小到大为1001、1010,这样当存储主键值为1003的记录时,由于1003大于1001而小于1010,所以应***表段1),所以在表段1中***记录(1003,日本),表段1的内存表中***了(1003,日本),按照主键值次序,依次为:(1001,中国),(1003,日本),(1005,韩国),由于记录被***在表段的中间,表段所存储记录的最小和最大主键值没有发生变化,因此无需改变控制表中该表段的信息。
又如,图5为本发明实施例中***记录到非空表中引起控制表变化的示意图。如图5所示,控制表中有两个表段:(1,1001,1005)和(2,1010,1011),其中表段1中有记录:(1001,中国),(1005,韩国),表段2中有记录:(1010,美国),(1011,加拿大)。***记录(1006,印度),控制表中所有表段所存储记录的最小主键值为:1001,1010,二分法查找的结果是表段1(由于表段1和2的最小主键值从小到大为1001、1010,这样当存储主键值为1006的记录时,由于1006大于1001而小于1010,所以应***表段1),所以在表段1中***记录(1006,印度),表段1的内存表中***了(1006,印度),按照主键值次序,依次为:(1001,中国),(1005,韩国),(1006,印度)。由于记录被***到表段的最后,表段所存储记录的最大主键值发生了变化,更新控制表中的第一个表段的最大主键值为1006:(1,1001,1006)。
具体实施时,当有表段的内存表中所有记录所占用内存达到预定义的上限时:
将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,然后将内存表清空以减少内存的使用,该操作可称之为紧缩内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,表明以前做过紧缩内存表的操作,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并,仍按列存储,并保持按主键值排序。
例如,图6为本发明实施例中***记录导致表段的内存表中记录所占用的内存达到上限的示意图。如图6所示,表段的内存表中有记录(1001,中国),(1003,日本),(1005,韩国),表段的表段数据文件中存储有记录(1002,越南),(1006,印度)。***记录(1004,马来西亚)导致内存表所占内存达到预定义的上限,例如:假设ID是整数类型,NAME是字符类型,整数所占内存是4个字节,每个中文字符占2个字节,那么,***(1004,马来西亚)到内存表后内存表中的记录为:(1001,中国),(1003,日本),(1004,马来西亚),(1005,韩国),内存表所占的内存应为:(4+2×2)+(4+2×2)+(4+2×4)+(4+2×2)=36,假设预定义的内存上限为32,那么内存表所占的内存达到上限。将内存表中的记录和表段数据文件中已有记录合并存储,保持主键值的排序,(1001,1002,1003,1004,1005,1006),对应的名称列值为:(中国,越南,日本,马来西亚,韩国,印度),表段的内存表被清空。
具体实施时,表段数据文件中所存储的数据可以包括:
记录对应的列值数据和元数据;列值数据是记录的组成部分,比如有ID列值数据和NAME列值数据,所有的列值数据组合在一起构成记录。存储时,ID列值数据和NAME列值数据分开存储。
其中:
每个列的列值数据个数相等;由于记录的个数决定列值数据个数,所以它们必然相等。比如:有记录(1001,中国),(1002,美国),记录数为2,按列存储:ID:1001,1002;NAME:中国,美国;每个列的列值数据个数为2,都等于记录的个数2;
每个列的列值数据按固定的列值数据个数划分为数据块,形成列值数据块;
元数据存储于元数据块中;元数据记录每个列值数据块在表段数据文件中的位置、表段数据文件中的记录个数和元数据块在表段数据文件中的位置。记录个数=每个列值数据的个数,而不是所有的列值数据个数,比如:有记录:(1001,中国),(1002,美国),按列存储时,ID:1001,1002;NAME:中国,美国;记录数为2,每个列值数据的个数也为2,所有的列值数据个数加起来为4。
具体实施时,表段数据文件中列值数据和元数据的存储次序可以是:
第一个列的列值数据、第二个列的列值数据直至最后一个列的列值数据、以及元数据。
元数据记录的列值数据块在表段数据文件中的位置可以在按列存储列值数据时获得,元数据块在表段数据文件中的位置是紧接最后一个列的最后一个列值数据块。由于元数据通常很小,可以在内存中缓存一份拷贝以加快访问速度。
例如,图7为本发明实施例中表段数据文件的格式示意图。如图7所示,存储记录为:(1001,中国),(1002,越南),(1003,日本),(1004,马来西亚),(1005,韩国)和(1006,印度)。划分列值数据成列值数据块的列值数据个数为2,第一个列的列值数据块共有三个,分别为:(1001,1002),(1003,1004),(1005,1006),第二个列的列值数据块共有三个,分别为:(中国,越南),(日本,马来西亚),(韩国,印度),元数据块为:(0,8,16,32,48,68,6,84),其中,0为列值数据块(1001,1002)在表段数据文件中的位置,8为列值数据块(1003,1004)在表段数据文件中的位置,16为列值数据块(1005,1006)在表段数据文件中的位置,32为列值数据块(中国,越南)在表段数据文件中的位置,48为列值数据块(日本,马来西亚)在表段数据文件中的位置,68为列值数据块(韩国,印度)在表段数据文件中的位置,6为记录个数,84为元数据块在表段数据文件中的位置。
具体实施时,当有表段所存储的所有记录数目达到预定义的上限时:将部分记录保留在该表段中,并新建表段,将其余记录存储至新建的表段;例如,将前一半记录保留在该表段中,并新建表段,将后一半记录存储至新建的表段。由于该表段的最大主键值发生变化,在控制表中更新该表段的最大主键值;在控制表中新增新建表段的标识及所存储记录的最小及最大主键值,***时按表段最小主键值排序。
例如,图8为本发明实施例中表段***的示意图。如图8所示,表段中存储记录为:(1001,中国),(1002,越南),(1003,日本),(1004,马来西亚),(1005,韩国)和(1006,印度),***记录(1007,中国香港)导致表段达到表段的最大记录数7,对表段进行***,变成两个表段:表段1(1,1001,1004)和表段2(2,1005,1007),其中表段1存储的记录为:(1001,中国),(1002,越南),(1003,日本),(1004,马来西亚),而表段2存储的记录为:(1005,韩国),(1006,印度),(1007,中国香港),控制表中表段1的最大主键值从1006改为1004,并新增加表段2的信息:表段标识为2,最小主键值为1005,最大主键值为1007。
下面简单介绍按本发明实施例方法存储的关系型数据库的一些基本的数据库查询操作。
一、投影查询
投影查询是指查询表中记录的某些列,由于本发明实施例是按列存储记录,这样就可以按需读取列,而不同于行存储的数据库那样需要读取所有列的数据,这样就大大减少了硬盘输入输出,从而提高了关系型数据库的查询性能。
例如,图9为本发明实施例中一个投影查询的示意图。如图9所示,投影查询语句是:“SELECT NAME FROM COUNTRY”,由于本发明实施例按列存储记录数据,可以只读入列NAME的数据,输出结果,而列ID的值数据没有被读取,从而提高了查询性能。
二、条件查询
条件查询是指查询语句有查询条件,由于本发明实施例是按列存储记录,可以根据查询条件读取相关的列的记录,一旦记录的列值通过了这些查询条件,所有其他需要输出的列值就被读取,输出到最终的结果当中,这样比行数据库减少了IO。
例如,图10为本发明实施例中一个条件查询的示意图。如图10所示,条件查询的语句是:“SELECT ID FROM COUNTRY WHERE NAME=‘韩国’”,查询时可首先利扫描列NAME的值数据查到第五个记录满足条件,这样读取第五个记录的列ID的值,由于本发明实施例中每个列值数据块中存取有固定数目的列值数据,如图10中每个列值数据块存取的列值数据个数为2,这样可以计算得到符合条件的ID值在第三个数据块中,然后,可以利用元数据中存储的列值数据块的位置数据快速定位列ID第三个数据块,从而读取符合条件的ID值,即1005。
三、并行处理
由于本发明实施例中的表被分成表段,这样,如果在一个集群及云计算的环境中,由于有多个服务器的存在,可以将表段均匀分配给每一个服务器,查询表中的记录时,集群中的服务器就可以同时展开运算,各自处理自己硬盘中的记录数据,达到并行处理的目的,这就能大大提高数据库的性能。
例如,图11为本发明实施例中一个集群数据库并行处理的示意图。如图11所示,集群数据库由两个服务器组成,表由两个表段组成,分别存储在两个服务器中,每个服务器提供有关表段的记录查询服务。
本发明实施例中还提供了一种关系型数据库的存储装置,如下面的实施例所述。由于该装置解决问题的原理与关系型数据库的存储方法相似,因此该装置的实施可以参见关系型数据库的存储方法的实施,重复之处不再赘述。
如图12所示,本发明实施例中关系型数据库的存储装置可以包括:
控制表建立模块1201,用于建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
表段建立模块1202,用于当有新的记录***表时:若表中没有记录,则新建该表的表段;第一记录***模块1203,用于将新的记录***该新建的表段的内存表;第一控制表更新模块1204,用于将该新建的表段的标识存储至控制表,将新的记录的主键值作为该新建的表段所存储记录的最小及最大主键值存储至控制表;
表段查找模块1205,用于当有新的记录***表时:若表中已有记录,则根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段;第二记录***模块1206,用于将新的记录***该查找的表段的内存表,***时按主键值排序;第二控制表更新模块1207,用于若***改变了该查找的表段所存储记录的最小或最大主键值,则在控制表中进行相应更新;
记录转存处理模块1208,用于当有表段的内存表中所有记录所占用内存达到预定义的上限时:将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并。
一个实施例中,表段查找模块1205具体可以用于:根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,采用二分法查找新的记录应***的表段:
若新的记录的主键值介于两个表段的最小主键值之间,则将前一个表段作为新的记录应***的表段;
若新的记录的主键值在第一个表段的最小主键值之前,则将第一个表段作为新的记录应***的表段;
若新的记录的主键值在最后一个表段的最小主键值之后,则将最后一个表段作为新的记录应***的表段。
一个实施例中,表段数据文件中所存储的数据包括记录对应的列值数据和元数据;其中:
每个列的列值数据个数相等;每个列的列值数据按固定的列值数据个数划分为数据块,形成列值数据块;
元数据存储于元数据块中;元数据记录每个列值数据块在表段数据文件中的位置、表段数据文件中的记录个数和元数据块在表段数据文件中的位置。
一个实施例中,表段数据文件中列值数据和元数据的存储次序为:
第一个列的列值数据、第二个列的列值数据直至最后一个列的列值数据、以及元数据。
一个实施例中,元数据缓存于内存中。
一个实施例中,图12所示的关系型数据库的存储装置还可以包括:
表段拆分模块,用于当有表段所存储的所有记录数目达到预定义的上限时:将部分记录保留在该表段中,并新建表段,将其余记录存储至新建的表段;
第三控制更新模块,用于若该表段所存储记录的最小或最大主键值发生改变,则在控制表中进行相应更新;在控制表中新增新建表段的标识及所存储记录的最小及最大主键值,***时按表段最小主键值排序。
一个实施例中,表段拆分模块具体可以用于:将前一半记录保留在该表段中,并新建表段,将后一半记录存储至新建的表段。
本发明实施例与现有技术一相比,无需对主键建立索引,可节省***开销;且本发明实施例按列存储,可解决行存储数据库不能按需读取列的问题;
本发明实施例将表分段并按主键值对记录进行排序,与现有技术二相比可降低存储时的开销;且不同于现有技术二需要连接数据将分开存储的列连在一起重构原始记录,本发明实施例无需连接数据来重构记录,不会增加维护连接数据的***负担;
同样的,不同于现有技术三需要ROWID连接列值从而重建记录,本发明实施例无需存储记录的ROWID来重建记录,不会增加***负担;
与现有技术四相比,本发明实施例中的表段只对应一个数据文件,而且存储的是关系型数据库的记录,并不是Key/Value形式的数据,存储时本发明实施例是按记录的列存储,没有列族的概念,完全适合作为关系型数据库的存储基础。
本发明实施例可以提高数据库的查询性能,且基于主键排序及分段来实现关系型数据库的存储,可以作为实现关系型数据库的并行计算的基本存储方式,将分段存储的表数据均衡分配到并行数据库的节点中,再利用Map/Reduce算法实施并行运算。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种关系型数据库的存储方法,其特征在于,包括:
建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
当有新的记录***表时:
若表中没有记录,则新建该表的表段,将新的记录***该表段的内存表,将该表段的标识存储至控制表,将新的记录的主键值作为该表段所存储记录的最小及最大主键值存储至控制表;
若表中已有记录,则根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段,将新的记录***该表段的内存表,***时按主键值排序;若***改变了该表段所存储记录的最小或最大主键值,则在控制表中进行相应更新;
当有表段的内存表中所有记录所占用内存达到预定义的上限时:
将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并。
2.如权利要求1所述的方法,其特征在于,所述根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,确定新的记录应***的表段,包括:
根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,采用二分法查找新的记录应***的表段:
若新的记录的主键值介于两个表段的最小主键值之间,则将前一个表段作为新的记录应***的表段;
若新的记录的主键值在第一个表段的最小主键值之前,则将第一个表段作为新的记录应***的表段;
若新的记录的主键值在最后一个表段的最小主键值之后,则将最后一个表段作为新的记录应***的表段。
3.如权利要求1所述的方法,其特征在于,表段数据文件中所存储的数据包括记录对应的列值数据和元数据;其中:
每个列的列值数据个数相等;每个列的列值数据按固定的列值数据个数划分为数据块,形成列值数据块;
元数据存储于元数据块中;元数据记录每个列值数据块在表段数据文件中的位置、表段数据文件中的记录个数和元数据块在表段数据文件中的位置。
4.如权利要求3所述的方法,其特征在于,表段数据文件中列值数据和元数据的存储次序为:
第一个列的列值数据、第二个列的列值数据直至最后一个列的列值数据、以及元数据。
5.如权利要求3所述的方法,其特征在于,元数据缓存于内存中。
6.如权利要求1所述的方法,其特征在于,还包括:
当有表段所存储的所有记录数目达到预定义的上限时:
将部分记录保留在该表段中,并新建表段,将其余记录存储至新建的表段;
若该表段所存储记录的最小或最大主键值发生改变,则在控制表中进行相应更新;
在控制表中新增新建表段的标识及所存储记录的最小及最大主键值,***时按最小主键值排序。
7.如权利要求6所述的方法,其特征在于,所述将部分记录保留在该表段中,并新建表段,将其余记录存储至新建的表段,包括:
将前一半记录保留在该表段中,并新建表段,将后一半记录存储至新建的表段。
8.一种关系型数据库的存储装置,其特征在于,包括:
控制表建立模块,用于建立控制表,用以存储表段的标识和表段所存储记录的最小及最大主键值,并按表段最小主键值排序;
表段建立模块,用于当有新的记录***表时:若表中没有记录,则新建该表的表段;第一记录***模块,用于将新的记录***该新建的表段的内存表;第一控制表更新模块,用于将该新建的表段的标识存储至控制表,将新的记录的主键值作为该新建的表段所存储记录的最小及最大主键值存储至控制表;
表段查找模块,用于当有新的记录***表时:若表中已有记录,则根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,查找新的记录应***的表段;第二记录***模块,用于将新的记录***该查找的表段的内存表,***时按主键值排序;第二控制表更新模块,用于若***改变了该查找的表段所存储记录的最小或最大主键值,则在控制表中进行相应更新;
记录转存处理模块,用于当有表段的内存表中所有记录所占用内存达到预定义的上限时:将该表段内存表中所有记录存储至硬盘上该表段对应的一个表段数据文件,并清空该表段的内存表;存储记录时按列存储,且保持按主键值排序;若硬盘上没有该表段数据文件,则新建该表段数据文件;若硬盘上已有该表段数据文件,则在存储时将内存表中的记录与该表段数据文件中已有的记录合并。
9.如权利要求8所述的装置,其特征在于,所述表段查找模块具体用于:根据新的记录的主键值及控制表中所有表段所存储记录的最小主键值,采用二分法查找新的记录应***的表段:
若新的记录的主键值介于两个表段的最小主键值之间,则将前一个表段作为新的记录应***的表段;
若新的记录的主键值在第一个表段的最小主键值之前,则将第一个表段作为新的记录应***的表段;
若新的记录的主键值在最后一个表段的最小主键值之后,则将最后一个表段作为新的记录应***的表段。
10.如权利要求8所述的装置,其特征在于,表段数据文件中所存储的数据包括记录对应的列值数据和元数据;其中:
每个列的列值数据个数相等;每个列的列值数据按固定的列值数据个数划分为数据块,形成列值数据块;
元数据存储于元数据块中;元数据记录每个列值数据块在表段数据文件中的位置、表段数据文件中的记录个数和元数据块在表段数据文件中的位置。
11.如权利要求10所述的装置,其特征在于,表段数据文件中列值数据和元数据的存储次序为:
第一个列的列值数据、第二个列的列值数据直至最后一个列的列值数据、以及元数据。
12.如权利要求10所述的装置,其特征在于,元数据缓存于内存中。
13.如权利要求8所述的装置,其特征在于,还包括:
表段拆分模块,用于当有表段所存储的所有记录数目达到预定义的上限时:将部分记录保留在该表段中,并新建表段,将其余记录存储至新建的表段;
第三控制更新模块,用于若该表段所存储记录的最小或最大主键值发生改变,则在控制表中进行相应更新;在控制表中新增新建表段的标识及所存储记录的最小及最大主键值,***时按最小主键值排序。
14.如权利要求13所述的装置,其特征在于,所述表段拆分模块具体用于:将前一半记录保留在该表段中,并新建表段,将后一半记录存储至新建的表段。
CN 201110056705 2011-03-09 2011-03-09 关系型数据库的存储方法及装置 Active CN102129458B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110056705 CN102129458B (zh) 2011-03-09 2011-03-09 关系型数据库的存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110056705 CN102129458B (zh) 2011-03-09 2011-03-09 关系型数据库的存储方法及装置

Publications (2)

Publication Number Publication Date
CN102129458A true CN102129458A (zh) 2011-07-20
CN102129458B CN102129458B (zh) 2012-12-12

Family

ID=44267540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110056705 Active CN102129458B (zh) 2011-03-09 2011-03-09 关系型数据库的存储方法及装置

Country Status (1)

Country Link
CN (1) CN102129458B (zh)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102291268A (zh) * 2011-09-23 2011-12-21 杜跃进 一种安全域名服务器及基于此的恶意域名监控***和方法
CN102682108A (zh) * 2012-05-08 2012-09-19 同方光盘股份有限公司 一种行列混合的数据库存储方法
CN102768672A (zh) * 2012-06-12 2012-11-07 上海方正数字出版技术有限公司 一种磁盘空间管理方法和装置
CN103218365A (zh) * 2012-01-20 2013-07-24 阿里巴巴集团控股有限公司 一种SSTable文件数据处理方法及其***
CN103246498A (zh) * 2013-05-13 2013-08-14 浪潮集团山东通用软件有限公司 一种支持关系数据并行处理的内存存储结构及实现方法
CN103870483A (zh) * 2012-12-13 2014-06-18 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN103914462A (zh) * 2012-12-31 2014-07-09 ***通信集团公司 一种数据存储和查询方法以及装置
CN104252486A (zh) * 2013-06-28 2014-12-31 阿里巴巴集团控股有限公司 一种数据处理的方法及装置
CN104268272A (zh) * 2014-10-14 2015-01-07 青岛海尔软件有限公司 一种数据唯一性检查方法及装置
CN104657513A (zh) * 2015-03-20 2015-05-27 烟台威尔数据***有限公司 嵌入式***中档案操作与快速检索方法
CN104715039A (zh) * 2015-03-23 2015-06-17 星环信息科技(上海)有限公司 基于硬盘和内存的列式存储和查询方法及设备
CN104750773A (zh) * 2013-12-31 2015-07-01 国际商业机器公司 基于重构与更新比较的索引维护
CN105302889A (zh) * 2015-10-16 2016-02-03 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN103812877B (zh) * 2014-03-12 2016-10-12 西安电子科技大学 基于Bigtable分布式存储***的数据压缩方法
CN106570129A (zh) * 2016-10-27 2017-04-19 南京邮电大学 一种对实时数据进行快速分析的存储***及其存储方法
CN108629196A (zh) * 2017-03-21 2018-10-09 北京京东尚科信息技术有限公司 数据存储和查询的方法、装置、电子设备和可读存储介质
CN108875077A (zh) * 2018-07-10 2018-11-23 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质
CN108959587A (zh) * 2018-07-10 2018-12-07 上海达梦数据库有限公司 基于列存储的数据更新方法、装置、服务器及存储介质
CN108984719A (zh) * 2018-07-10 2018-12-11 上海达梦数据库有限公司 基于列存储的数据删除方法、装置、服务器及存储介质
CN108984720A (zh) * 2018-07-10 2018-12-11 上海达梦数据库有限公司 基于列存储的数据查询方法、装置、服务器及存储介质
CN109033271A (zh) * 2018-07-10 2018-12-18 上海达梦数据库有限公司 基于列存储的数据***方法、装置、服务器及存储介质
CN109388636A (zh) * 2017-08-11 2019-02-26 ***通信集团重庆有限公司 业务数据***数据库方法、装置、计算机设备及存储介质
CN109522269A (zh) * 2018-09-30 2019-03-26 中国农业大学烟台研究院 一种文件管理方法
CN109710619A (zh) * 2018-12-29 2019-05-03 ***股份有限公司 一种数据库扩容方法、装置和可读介质
CN110019191A (zh) * 2017-09-21 2019-07-16 阿里巴巴集团控股有限公司 数据库信息处理方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424258B (zh) * 2013-08-28 2020-06-16 腾讯科技(深圳)有限公司 多维数据查询的方法、查询服务器、列存储服务器及***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751406A (zh) * 2008-12-18 2010-06-23 赵伟 一种实现基于列存储的关系型数据库的方法及装置
US20100332457A1 (en) * 2009-06-27 2010-12-30 Goetz Graefe Database segment searching

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751406A (zh) * 2008-12-18 2010-06-23 赵伟 一种实现基于列存储的关系型数据库的方法及装置
US20100332457A1 (en) * 2009-06-27 2010-12-30 Goetz Graefe Database segment searching

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《计算机研究与发展》 20101231 曾春 等 HUABASE:基于列存储的关系型数据库*** , *
《计算机研究与发展》 20110131 甘亮 等 一种构建StreamCube的超大维表连接算法 , *

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102291268A (zh) * 2011-09-23 2011-12-21 杜跃进 一种安全域名服务器及基于此的恶意域名监控***和方法
CN103218365A (zh) * 2012-01-20 2013-07-24 阿里巴巴集团控股有限公司 一种SSTable文件数据处理方法及其***
CN102682108B (zh) * 2012-05-08 2015-02-18 同方知网数字出版技术股份有限公司 一种行列混合的数据库存储方法
CN102682108A (zh) * 2012-05-08 2012-09-19 同方光盘股份有限公司 一种行列混合的数据库存储方法
CN102768672A (zh) * 2012-06-12 2012-11-07 上海方正数字出版技术有限公司 一种磁盘空间管理方法和装置
CN102768672B (zh) * 2012-06-12 2016-02-17 北大方正集团有限公司 一种磁盘空间管理方法和装置
CN103870483A (zh) * 2012-12-13 2014-06-18 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN103870483B (zh) * 2012-12-13 2018-04-20 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN103914462A (zh) * 2012-12-31 2014-07-09 ***通信集团公司 一种数据存储和查询方法以及装置
CN103914462B (zh) * 2012-12-31 2017-09-05 ***通信集团公司 一种数据存储和查询方法以及装置
CN103246498A (zh) * 2013-05-13 2013-08-14 浪潮集团山东通用软件有限公司 一种支持关系数据并行处理的内存存储结构及实现方法
CN104252486A (zh) * 2013-06-28 2014-12-31 阿里巴巴集团控股有限公司 一种数据处理的方法及装置
CN104252486B (zh) * 2013-06-28 2017-09-12 阿里巴巴集团控股有限公司 一种数据处理的方法及装置
US10579608B2 (en) 2013-12-31 2020-03-03 International Business Machines Corporation Index maintenance based on a comparison of rebuild vs. update
CN104750773A (zh) * 2013-12-31 2015-07-01 国际商业机器公司 基于重构与更新比较的索引维护
CN104750773B (zh) * 2013-12-31 2018-11-27 国际商业机器公司 索引维护的方法和***
US11226948B2 (en) 2013-12-31 2022-01-18 International Business Machines Corporation Index maintenance based on a comparison of rebuild vs. update
US9996568B2 (en) 2013-12-31 2018-06-12 International Business Machines Corporation Index maintenance based on a comparison of rebuild vs. update
CN103812877B (zh) * 2014-03-12 2016-10-12 西安电子科技大学 基于Bigtable分布式存储***的数据压缩方法
CN104268272A (zh) * 2014-10-14 2015-01-07 青岛海尔软件有限公司 一种数据唯一性检查方法及装置
CN104657513A (zh) * 2015-03-20 2015-05-27 烟台威尔数据***有限公司 嵌入式***中档案操作与快速检索方法
CN104657513B (zh) * 2015-03-20 2018-02-09 山东威尔数据股份有限公司 嵌入式***中档案操作与快速检索方法
CN104715039B (zh) * 2015-03-23 2018-10-19 星环信息科技(上海)有限公司 基于硬盘和内存的列式存储和查询方法及设备
CN104715039A (zh) * 2015-03-23 2015-06-17 星环信息科技(上海)有限公司 基于硬盘和内存的列式存储和查询方法及设备
CN105302889B (zh) * 2015-10-16 2019-06-04 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN105302889A (zh) * 2015-10-16 2016-02-03 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN106570129A (zh) * 2016-10-27 2017-04-19 南京邮电大学 一种对实时数据进行快速分析的存储***及其存储方法
CN108629196A (zh) * 2017-03-21 2018-10-09 北京京东尚科信息技术有限公司 数据存储和查询的方法、装置、电子设备和可读存储介质
CN108629196B (zh) * 2017-03-21 2021-04-30 北京京东尚科信息技术有限公司 数据存储和查询的方法、装置、电子设备和可读存储介质
CN109388636A (zh) * 2017-08-11 2019-02-26 ***通信集团重庆有限公司 业务数据***数据库方法、装置、计算机设备及存储介质
CN110019191A (zh) * 2017-09-21 2019-07-16 阿里巴巴集团控股有限公司 数据库信息处理方法及装置
CN109033271B (zh) * 2018-07-10 2021-03-02 上海达梦数据库有限公司 基于列存储的数据***方法、装置、服务器及存储介质
CN109033271A (zh) * 2018-07-10 2018-12-18 上海达梦数据库有限公司 基于列存储的数据***方法、装置、服务器及存储介质
CN108984720A (zh) * 2018-07-10 2018-12-11 上海达梦数据库有限公司 基于列存储的数据查询方法、装置、服务器及存储介质
CN108984719A (zh) * 2018-07-10 2018-12-11 上海达梦数据库有限公司 基于列存储的数据删除方法、装置、服务器及存储介质
CN108959587B (zh) * 2018-07-10 2021-03-02 上海达梦数据库有限公司 基于列存储的数据更新方法、装置、服务器及存储介质
CN108959587A (zh) * 2018-07-10 2018-12-07 上海达梦数据库有限公司 基于列存储的数据更新方法、装置、服务器及存储介质
CN108984720B (zh) * 2018-07-10 2021-06-22 上海达梦数据库有限公司 基于列存储的数据查询方法、装置、服务器及存储介质
CN108875077A (zh) * 2018-07-10 2018-11-23 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质
CN109522269A (zh) * 2018-09-30 2019-03-26 中国农业大学烟台研究院 一种文件管理方法
CN109522269B (zh) * 2018-09-30 2023-04-21 中国农业大学烟台研究院 一种文件管理方法
CN109710619A (zh) * 2018-12-29 2019-05-03 ***股份有限公司 一种数据库扩容方法、装置和可读介质
CN109710619B (zh) * 2018-12-29 2023-09-29 ***股份有限公司 一种数据库扩容方法、装置和可读介质

Also Published As

Publication number Publication date
CN102129458B (zh) 2012-12-12

Similar Documents

Publication Publication Date Title
CN102129458B (zh) 关系型数据库的存储方法及装置
CN101751406B (zh) 一种实现基于列存储的关系型数据库的方法及装置
US11169978B2 (en) Distributed pipeline optimization for data preparation
CA2723731C (en) Managing storage of individually accessible data units
Larson et al. Enhancements to SQL server column stores
US8359316B2 (en) Database table look-up
US9047330B2 (en) Index compression in databases
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
US20120303633A1 (en) Systems and methods for querying column oriented databases
TW201530328A (zh) 爲半結構化資料構建NoSQL資料庫索引的方法及裝置
US10255234B2 (en) Method for storing data elements in a database
CN103914483B (zh) 文件存储方法、装置及文件读取方法、装置
US20150058352A1 (en) Thin database indexing
US10963440B2 (en) Fast incremental column store data loading
US11288287B2 (en) Methods and apparatus to partition a database
EP3362916A1 (en) Signature-based cache optimization for data preparation
CN105677915A (zh) 一种基于引擎的分布式业务数据存取方法
CN102521304A (zh) 基于哈希的聚簇表存储方法
CN101833511A (zh) 数据管理方法、装置和***
AU2018345147B2 (en) Database processing device, group map file production method, and recording medium
CN104408128A (zh) 一种基于b+树异步更新索引的读优化方法
CN104462080A (zh) 针对检索结果进行分组统计的索引结构创建方法和***
US8073823B2 (en) Database management program
US20150058351A1 (en) Queries for thin database indexing
US20240220470A1 (en) Data storage device and storage control method based on log-structured merge tree

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BEIJING HANYUN TIMES TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: HU JINSONG

Effective date: 20120221

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 247000 CHIZHOU, ANHUI PROVINCE TO: 100142 HAIDIAN, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20120221

Address after: 100142, 608, Fu Cheng Road, Beijing, Beijing, Haidian District, room 58, Haidian District

Applicant after: Beijing Cloudwave Times Technology Co., Ltd.

Address before: 247000 Anhui city of Chizhou province Cuiwei court E District 12 building 201 room

Applicant before: Hu Jinsong

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100142 room 58, Fu Cheng Road, 608, Beijing, Haidian District

Patentee after: Beijing Han Yun era Data Technology Co. Ltd.

Address before: 100142 room 58, Fu Cheng Road, 608, Beijing, Haidian District

Patentee before: Beijing Cloudwave Times Technology Co., Ltd.