CN106649708A - 存储数据的方法和装置 - Google Patents
存储数据的方法和装置 Download PDFInfo
- Publication number
- CN106649708A CN106649708A CN201611186259.5A CN201611186259A CN106649708A CN 106649708 A CN106649708 A CN 106649708A CN 201611186259 A CN201611186259 A CN 201611186259A CN 106649708 A CN106649708 A CN 106649708A
- Authority
- CN
- China
- Prior art keywords
- data
- data object
- line identifier
- keyvalue
- column properties
- 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.)
- Pending
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/221—Column-oriented storage; Management thereof
-
- 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
- G06F16/2264—Multidimensional index 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/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24562—Pointer or reference processing operations
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
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)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存储数据的方法和装置。该方法包括:确定待存储到KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性;确定该至少两个数据对象中的每个数据对象在KeyValue类型分布式数据库中的行标识的格式,该行标识的格式包括该相同的列属性和数据对象标识,不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后;根据每个数据对象的行标识的格式,确定每个数据对象的每条数据记录的行标识的值;在KeyValue类型分布式数据库中存储每条数据记录的行标识的值和每条数据记录,该每条数据记录的行标识的值作为该每条数据记录在KeyValue类型分布式数据库中的主索引。本发明实施例的存储数据的方法和装置,能够提高查询数据的效率。
Description
技术领域
本发明涉及信息技术领域,并且更具体地,涉及存储数据的方法和装置。
背景技术
键值(KeyValue)类型分布式数据库作为分布式列存储数据库具有高可伸缩性和鲁棒性,已经在越来越多的***中得到了广泛的使用。KeyValue类型分布式数据库的用户表通常被设计用来存放数据格式相对简单,关系简单但可能是海量的数据,例如:用来存储网页地址信息,用来存储通话记录信息,用来存储上网记录信息,等等。它能够根据数据记录的行键(RowKey)提供快速的查询,无关数据量的大小。它能够在当前的存储空间使用率达到一定阈值的时候动态的扩充物理节点。
在企业现有数据库应用中,通常关联很多个用户数据表,这些数据表的大小不一,并且表与表之间的数据可能存在内在的关联。而基于稀疏矩阵的KeyValue类型的分布式数据库适合存放大数据量表,如果原样将这些表导入到KeyValue类型分布式数据库中,则存在过多的小表,不仅难以实现跨表的关联查询,而且会增加管理上的复杂度。也就是说,当将传统应用中的数据迁移到KeyValue类型的分布式数据库中,为了完成用户表与用户表之间的关联查询,需要查询不同的表,不断进行数据定位导致效率低下。
发明内容
本发明实施例提供了一种存储数据的方法和装置,能够提高查询数据的效率。
第一方面,提供了一种存储数据的方法,包括:确定待存储到KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性;确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后;根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值;在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录,其中,该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
在第一种可能的实现方式中,该方法还包括:针对该每条数据记录的行标识的值,按照第一顺序对该每条数据记录进行排序,使该至少两个数据对象的所有数据记录形成聚簇表。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,该第一顺序为字典顺序。
结合第一方面或第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该方法还包括:接收数据请求,该数据请求指示对该至少两个数据对象中的数据记录进行查询或获取;根据该行标识的格式,构造在该KeyValue类型分布式数据库中进行查询的查询信息,其中,该查询信息包括该相同的列属性;根据该查询信息,导出该KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
结合第一方面或第一方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,包括:为该至少两个数据对象指定在该KeyValue类型分布式数据库中的行标识的第一前缀,其中,该第一前缀为常量;确定该至少两个数据对象中的第一数据对象的该行标识的格式包括该第一前缀、该相同的列属性和该第一数据对象的数据对象标识;或者,确定该至少两个数据对象中的第二数据对象的该行标识的格式包括该第一前缀、该相同的列属性、该第二数据对象的数据对象标识和该第二数据对象的列属性中能区分该第二数据对象的所有数据记录的列属性。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,该查询信息包括该第一前缀和该相同的列属性。
结合第一方面的第四或五种可能的实现方式,在第六种可能的实现方式中,该方法还包括:确定该至少两个数据对象中任一个数据对象在该KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和该相同的列属性,其中,该第二属性为该任一个数据对象的列属性中不同于该相同属性的列属性,该第二前缀为与该第一前缀不同的常量;根据该任一个数据对象的该二级索引的格式确定该任一个数据对象的二级索引;在该KeyValue类型分布式数据库中存储该任一个数据对象的二级索引。
结合第一方面或第一方面的第一至六种可能的实现方式中的任一种可能的实现方式,在第七种可能的实现方式中,该行标识的格式中的各个字段之间设置分隔符,或者,该各个字段具有固定长度。
第二方面,提供了一种存储数据的装置,包括:确定模块,用于确定待存储到键值KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性,确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后,根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值;存储模块,用于在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录,其中,该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
在第一种可能的实现方式中,该存储模块还用于,针对该每条数据记录的行标识的值,按照第一顺序对该每条数据记录进行排序,使该至少两个数据对象的所有数据记录形成聚簇表。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该第一顺序为字典顺序。
结合第二方面或第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该装置还包括:接收模块,用于接收数据请求,该数据请求指示对该至少两个数据对象中的数据记录进行查询或获取;查询模块,用于根据该行标识的格式,构造在该KeyValue类型分布式数据库中进行查询的查询信息,其中,该查询信息包括该相同的列属性,根据该查询信息,导出该KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
结合第二方面或第二方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,该确定模块具体用于,为该至少两个数据对象指定在该KeyValue类型分布式数据库中的行标识的第一前缀,其中,该第一前缀为常量,确定该至少两个数据对象中的第一数据对象的该行标识的格式包括该第一前缀、该相同的列属性和该第一数据对象的数据对象标识,或者,确定该至少两个数据对象中的第二数据对象的该行标识的格式包括该第一前缀、该相同的列属性、该第二数据对象的数据对象标识和该第二数据对象的列属性中能区分该第二数据对象的所有数据记录的列属性。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,该查询信息包括该第一前缀和该相同的列属性。
结合第二方面的第四或五种可能的实现方式,在第六种可能的实现方式中,该确定模块还用于,确定该至少两个数据对象中任一个数据对象在该KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和该相同的列属性,其中,该第二属性为该任一个数据对象的列属性中不同于该相同属性的列属性,该第二前缀为与该第一前缀不同的常量,根据该任一个数据对象的该二级索引的格式确定该任一个数据对象的二级索引;该存储模块还用于在该KeyValue类型分布式数据库中存储该任一个数据对象的二级索引。
结合第二方面或第二方面的第一至六种可能的实现方式中的任一种可能的实现方式,在第七种可能的实现方式中,该行标识的格式中的各个字段之间设置分隔符,或者,该各个字段具有固定长度。
基于上述技术方案,本发明实施例的存储数据的方法和装置,通过将相关联的数据对象采用包括相同的列属性的行标识的格式存储到KeyValue类型分布式数据库中,可以实现对多个数据对象进行关联查询,从而能够提高查询数据的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的存储数据的方法的示意性流程图。
图2是根据本发明实施例的确定行标识的格式的方法的示意性流程图。
图3是根据本发明另一实施例的存储数据的方法的示意性流程图
图4是根据本发明又一实施例的存储数据的方法的示意性流程图
图5是根据本发明实施例的存储数据的装置的示意性框图。
图6是根据本发明另一实施例的存储数据的装置的示意性框图。
图7是根据本发明实施例的存储数据的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明实施例的技术方案可以应用于KeyValue类型分布式数据库。
在本发明实施例中,数据对象为数据表(也简称为表)或者具有数据表格式的一类数据。例如,该类数据可以是通话记录数据或者上网记录数据,等等。为了描述方便,下述实施例将以数据表为例进行说明。
图1示出了根据本发明实施例的存储数据的方法100的示意性流程图。图1的方法由存储数据的装置执行。如图1所示,该方法100包括:
S110,确定待存储到KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性;
S120,确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后;
S130,根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值;
S140,在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录,其中,该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
在本发明实施例中,在多个(即至少两个)数据对象相关联时,即多个数据对象具有相同的列属性时,为了方便对多个数据对象的关联查询,存储数据的装置将多个数据对象存储到KeyValue类型分布式数据库的一个表中。存储数据的装置基于该相同的列属性确定每个数据对象在KeyValue类型分布式数据库中的行标识(如RowKey)的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后。也就是说,每个数据对象的行标识的格式都包括该相同的列属性以便于查询,另外,还包括与数据对象对应的数据对象标识以区别不同数据对象。不同数据对象的数据对象标识在行标识的格式中的位置相同且位于相同的列属性之后以使不同数据对象的行标识的格式保持相一致的结构。然后,存储数据的装置根据确定的行标识的格式确定每个数据对象中的每条数据记录的行标识的值,再在KeyValue类型分布式数据库中存储每条数据记录的行标识的值和每条数据记录,其中,每条数据记录的行标识的值作为每条数据记录在KeyValue类型分布式数据库中的主索引。由于相关联的多个数据对象采用了一致的行标识的格式,这样,在查询数据时,按照行标识的格式构造查询信息,可以实现在一个数据表中对多个数据对象进行关联查询,从而能够提高查询数据的效率。
因此,本发明实施例的存储数据的方法,通过将相关联的数据对象采用包括相同的列属性的行标识的格式存储到KeyValue类型分布式数据库中,可以实现对多个数据对象进行关联查询,从而能够提高查询数据的效率。
应理解,在本发明实施例中,行标识为每一行数据的标识。行标识可以表述为RowKey,也可以表述为Key,本发明对此并不限定。为了描述方便,下述实施例以RowKey为例进行说明。
下面结合具体的例子对本发明实施例进行详细描述。应注意,其中的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
在S110中,存储数据的装置确定待存储到KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性
多个数据对象具有相同的列属性即多个数据对象相关联。
例如,数据对象A,以记录学生信息的表1为例,其属性信息包括姓名(Name),学号(Id),性别(Sex),班级(Dept)等列(Column)属性。
表1
数据对象B,以记录学生选课信息的表2为例,其属性信息包括编号(No),学号(Id),课程(course)等列属性。
表2
表1和表2都有Id列,也就是说,表1和表2有相同的列属性Id,因此,表1和表2为相关联的数据对象。
在S120中,存储数据的装置确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式。
该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后。
具体而言,在本发明实施例中,为了提高查询数据的效率,并不将每个数据对象采用一个独立的表进行保存,而是将多个数据对象按照统一的的格式存储到一个表中,由此实现关联查询。为了实现将多个数据对象的存储到一个表中,需要预先配置行标识的格式,以预先设计RowKey的格式为例,即预先指明RowKey是由哪些组成元素,以及组成元素如何组合。在本实施例中,行标识的组成元素包含:至少两个数据对象的相同的列属性以及数据对象标识。该相同的列属性用于将该至少两个数据对象关联存储起来,该数据对象标识用于表示每行数据来源于哪个数据对象。其中,数据对象标识位于相同的列属性之后,每个数据对象的数据对象标识在行标识的格式中的位置相同。具体地,不同数据对象的数据对象标识可以为不同的常量,用来区分不同的数据对象。
在本发明实施例中,可选地,如图2所示,S120包括:
S121,为该至少两个数据对象指定在该KeyValue类型分布式数据库中的行标识的第一前缀,其中,该第一前缀为常量;
S122,确定该至少两个数据对象中的第一数据对象的该行标识的格式包括该第一前缀、该相同的列属性和该第一数据对象的数据对象标识;或者,
S123,确定该至少两个数据对象中的第二数据对象的该行标识的格式包括该第一前缀、该相同的列属性、该第二数据对象的数据对象标识和该第二数据对象的列属性中能区分该第二数据对象的所有数据记录的列属性。
具体而言,在本实施例中,行标识中包含一个相同的前缀(表示为第一前缀)。以RowKey为例,即RowKey采用如下格式:
RowKey=第一前缀+相同的列属性+数据对象标识(+其他属性)。
在本实施例中,对于不同数据对象,RowKey格式采用相同的第一前缀和相同属性,这样,在按照RowKey值的顺序存放数据记录时,不同的数据对象的数据记录能够相邻存放(称为聚簇存放)。再通过每个数据对象对应的数据对象标识区分不同的数据对象。另外,在该相同的列属性能够区分一个数据对象(表示为第一数据对象)的所有数据记录时,例如,表1中Id属性能够区分表1的所有数据记录,第一数据对象的RowKey格式不再包括其他属性;在该相同属性不能区分一个数据对象(表示为第二数据对象)的所有数据记录时,例如,表2中Id属性不能区分表2的所有数据记录,第二数据对象的RowKey格式还要包括第二数据对象的其他列属性中能区分该第二数据对象的所有数据记录的属性,例如,表2的No属性。
以表1和表2为例,它们的相同的列属性为Id。对于表1,Id能够区分表1的所有数据记录,因此,表1的RowKey格式可以为:
A(第一前缀)+Id+M(M为表1对应的数据对象标识)。
对于表2,Id不能区分表2的所有数据记录,No能区分表2的所有数据记录,因此,表2的RowKey格式可以为:
A(第一前缀)+Id+N(N为表2对应的数据对象标识)+No。
在本发明实施例中,可选地,该行标识的格式中的各个字段之间设置分隔符,或者,该各个字段具有固定长度。
也就是说,上述RowKey格式中的“+”可以为分隔符。或者,RowKey格式的各个字段可以设置固定长度,在这种情况下“+”实际并不存在。
在S130中,存储数据的装置根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值。
具体地,以RowKey为例,存储数据的装置根据确定的RowKey的格式确定每个数据对象中的每条数据记录的RowKey值。
例如,对于数据对象A中的第一条数据记录,RowKey值为A0001M;对于数据对象B中的第一条数据记录,RowKey值为A0001N1,以此类推。
在S140中,存储数据的装置在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录。
该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
在本发明实施例中,可选地,如图3所示,该方法100还包括:
S150,针对该每条数据记录的行标识的值,按照第一顺序对该每条数据记录进行排序,使该至少两个数据对象的所有数据记录形成聚簇表。
本发明实施例按行标识的值的顺序将数据记录存放到KeyValue类型分布式数据库中,使多个数据对象的数据记录形成聚簇表。这种聚簇表存放方式能够将行标识的值的范围与分区对应,即一条数据记录的行标识的值属于哪个范围,该数据记录就在哪个范围对应的分区,因而可以支持按范围查询。
该第一顺序可以是字典顺序,例如,可以按RowKey值的字典顺序将每条数据记录在KeyValue类型分布式数据库中排列。该第一顺序还可以是其他顺序,例如,大小顺序,即可以按照RowKey值的大小顺序依次存放数据记录,RowKey值小的存放在前,RowKey值大的存放在后,或者,RowKey值大的存放在前,RowKey值小的存放在后。本发明实施例对该第一顺序并不限定。为了便于描述,下述实施例将以RowKey值的字典顺序为例进行说明。
以表1和表2为例,按照RowKey值的字典顺序在KeyValue类型分布式数据库中存放得到表3。
表3
(包含斜线的列,表示本行数据无此列,在存储上不占据任何空间,下同)
采用本发明实施例的存储数据的方法,相关联的不同数据对象的数据记录可以相邻存放,形成聚簇表。例如,表3中的第1条数据记录为原表1的第1条记录,表3中的第2-4条记录为原表2的第1-3条记录,这些数据记录因为有相同的Id而在KeyValue类型分布式数据库中被相邻存放。通过相邻存放可以加快数据访问速率,进一步提高查询效率。
下面描述对按照上述存储方法得到的数据表进行查询的实施方式。
在本发明实施例中,可选地,如图4所示,该方法100还包括:
S160,接收数据请求,该数据请求指示对该至少两个数据对象中的数据记录进行查询或获取;
S170,根据该行标识的格式,构造在该KeyValue类型分布式数据库中进行查询的查询信息,其中,该查询信息包括该相同的列属性;
S180,根据该查询信息,导出该KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
具体而言,在接收到查询或获取数据记录的数据请求时,存储数据的装置根据行标识的格式,构造查询信息,该查询信息要包括相同的列属性,然后,存储数据的装置采用构造的查询信息进行查询,得到KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
可选地,在行标识的格式包括第一前缀时,该查询信息包括该第一前缀和该相同的列属性。
例如,当通过学生学号(Id=0001)来获取学生信息和学生选课信息时,可以构造查询信息:A0001,通过范围查询即可在表3中查询得到学生学号(Id=0001)的学生信息和学生选课信息。得到的查询结果如表4所示。在查询过程中,仅需要查询一张表,完成一次用户数据的定位,学生信息和学生选课信息相邻存放可以快速返回。
表4
因此,本发明实施例的存储数据的方法,通过将相关联的数据对象采用包括相同的列属性的行标识的格式存储到KeyValue类型分布式数据库中,可以将相关联的数据对象聚簇存放到一个数据表中,实现在一个数据表中进行关联查询,从而能够提高查询数据的效率。
在本发明实施例中,可选地,该方法100还包括:
确定该至少两个数据对象中任一个数据对象在该KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和该相同的列属性,其中,该第二属性为该任一个数据对象的列属性中不同于该相同属性的列属性,该第二前缀为与该第一前缀不同的常量;
根据该任一个数据对象的该二级索引的格式确定该任一个数据对象的二级索引;
在该KeyValue类型分布式数据库中存储该任一个数据对象的二级索引。具体而言,为了满足复杂查询场景,可以对数据对象构建二级索引信息。同一个数据对象的主索引与二级索引的数据存放在同一个表中,但采用不同的行标识的格式,实现在同一个表内的数据隔离。同时可以通过二级索引信息完成关联查询。二级索引的行标识的格式为第二前缀,第二属性和该相同属性。第二前缀不同于第一前缀以实现数据隔离;该第二属性为不同于该相同属性的属性,以便于根据该第二属性构造查询信息;该相同属性用于与主索引相关联。
例如,在将数据对象表1和数据对象表2存储到KeyValue类型分布式数据库中时,表1的主索引RowKey格式可以为:A+Id+M;表2的主索引RowKey格式可以为:A+Id+N+No;表1的二级索引RowKey格式可以为:B+Name+Id。这样,按照RowKey值的字典顺序在KeyValue类型分布式数据库中存放得到表5。
表5
应理解,与二级索引RowKey对应的各列中,也可以存储列信息,例如个别关键的列信息,本发明实施例对此并不限定。
当通过学生姓名(Name=张三)来获取学生信息和学生选课信息时,可以构造查询信息:B张三,通过范围查询即可在表5中查询得到完整的二级索引RowKey信息:B张三0001。解析二级索引RowKey,得到Id=0001。再构造查询信息:A0001,进行再次查询即可在表5中得到学生信息和学生选课信息。这样便于在用户只知道Name不知道Id时进行查询。
因此,本发明实施例的存储数据的方法,通过在KeyValue类型分布式数据库中存储数据对象的二级索引,可以提供给用户更丰富多样的查询场景,方便用户查询,从而能够提高查询数据的效率。
在本发明实施例中,多个数据对象的行标识的格式还可以有其他实现方式,例如,不同数据对象的行标识的格式可以采用不同的前缀,或者,不使用前缀。
例如,不使用前缀时,RowKey采用如下格式:
RowKey=相同的列属性+数据对象标识(+其他属性)。
通过相同的列属性实现不同的数据对象的数据记录能够相邻存放,再通过每个数据对象对应的数据对象标识区分不同的数据对象。另外,在该相同的列属性能够区分一个数据对象(表示为第一数据对象)的所有数据记录时,第一数据对象的RowKey格式不再包括其他属性;在该相同的列属性不能区分一个数据对象(表示为第二数据对象)的所有数据记录时,第二数据对象的RowKey格式还要包括第二数据对象的其他列属性中能区分该第二数据对象的所有数据记录的属性。
以表1和表2为例,它们的相同的列属性为Id。对于表1,Id能够区分表1的所有数据记录,因此,表1的RowKey格式可以为:
Id+M。
对于表2,Id不能区分表2的所有数据记录,No能区分表2的所有数据记录,因此,表2的RowKey格式可以为:
Id+N+No。
这样,按照RowKey值的字典顺序在KeyValue类型分布式数据库中存放得到表6。
表6
当通过学生学号(Id=0001)来获取学生信息和学生选课信息时,可以构造查询信息:0001,通过范围查询即可查询得到学生学号(Id=0001)学生信息和学生选课信息。在查询过程中,仅需要查询一张表,完成一次用户数据的定位,学生信息和学生选课信息相邻存放可以快速返回。
不同数据对象采用不同的前缀时,RowKey采用如下格式:
RowKey=数据对象对应的前缀)+相同的列属性(+其他属性)。
不同的数据对象采用不同的前缀实现不同数据对象的分区存放。另外,在该相同的列属性能够区分一个数据对象(表示为第一数据对象)的所有数据记录时,第一数据对象的RowKey格式不再包括其他属性;在该相同的列属性不能区分一个数据对象(表示为第二数据对象)的所有数据记录时,第二数据对象的RowKey格式还要包括第二数据对象的其他列属性中能区分该第二数据对象的所有数据记录的属性。
以表1和表2为例,它们的相同的列属性为Id。对于表1,Id能够区分表1的所有数据记录,因此,表1的RowKey格式可以为:
A+Id。
对于表2,Id不能区分表2的所有数据记录,No能标识表2的所有数据记录,因此,表2的RowKey格式可以为:
B+Id+No。
这样,按照RowKey值的字典顺序在KeyValue类型分布式数据库中存放得到表7。
表7
通过不同数据对象的RowKey格式采用不同的前缀,可以实现不同数据对象在KeyValue类型分布式数据库中的分区存放。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本发明实施例的存储数据的方法,通过将多个数据对象按照统一的行标识的格式存储到KeyValue类型分布式数据库中的一个数据表中,能够方便数据库的管理,提高查询数据的效率。
上文详细描述了根据本发明实施例的存储数据的方法,下面将描述根据本发明实施例的存储数据的装置。
图5示出了根据本发明实施例的存储数据的装置500的示意性框图。如图5所示,该装置500包括:
确定模块510,用于确定待存储到键值KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性,确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后,根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值;
存储模块520,用于在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录,其中,该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
在多个(即至少两个)数据对象相关联时,即多个数据对象具有相同的列属性时,为了方便对多个数据对象的关联查询,存储数据的装置500将多个数据对象存储到KeyValue类型分布式数据库的一个表中。确定模块510基于该相同的列属性确定每个数据对象在KeyValue类型分布式数据库中的行标识(如RowKey)的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后。也就是说,每个数据对象的行标识的格式都包括该相同的列属性以便于查询,另外,还包括与数据对象对应的数据对象标识以区别不同数据对象。不同数据对象的数据对象标识在行标识的格式中的位置相同且位于相同的列属性之后以使不同数据对象的行标识的格式保持相一致的结构。然后,确定模块510根据确定的行标识的格式确定每个数据对象中的每条数据记录的行标识的值。存储模块520在KeyValue类型分布式数据库中存储每条数据记录的行标识的值和每条数据记录,其中,每条数据记录的行标识的值作为每条数据记录在KeyValue类型分布式数据库中的主索引。由于相关联的多个数据对象采用了一致的行标识的格式,这样,在查询数据时,按照行标识的格式构造查询信息,可以实现在一个数据表中对多个数据对象进行关联查询,从而能够提高查询数据的效率。
因此,本发明实施例的存储数据的装置,通过将相关联的数据对象采用包括相同的列属性的对多个数据对象格式存储到KeyValue类型分布式数据库中,可以实现对多个数据对象进行关联查询,从而能够提高查询数据的效率。
在本发明实施例中,可选地,该存储模块520还用于,针对该每条数据记录的行标识的值,按照第一顺序对该每条数据记录进行排序,使该至少两个数据对象的所有数据记录形成聚簇表。
在本发明实施例中,可选地,该第一顺序为字典顺序。
在本发明实施例中,可选地,该确定模块510具体用于,为该至少两个数据对象指定在该KeyValue类型分布式数据库中的行标识的第一前缀,其中,该第一前缀为常量,确定该至少两个数据对象中的第一数据对象的该行标识的格式包括该第一前缀、该相同的列属性和该第一数据对象的数据对象标识,或者,确定该至少两个数据对象中的第二数据对象的该行标识的格式包括该第一前缀、该相同的列属性、该第二数据对象的数据对象标识和该第二数据对象的列属性中能区分该第二数据对象的所有数据记录的列属性。
在本发明实施例中,可选地,如图6所示,该装置500还包括:
接收模块530,用于接收数据请求,该数据请求指示对该至少两个数据对象中的数据记录进行查询或获取;
查询模块540,用于根据该行标识的格式,构造在该KeyValue类型分布式数据库中进行查询的查询信息,其中,该查询信息包括该相同的列属性,根据该查询信息,导出该KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
可选地,在行标识的格式包括第一前缀时,该查询信息包括该第一前缀和该相同的列属性。
在本发明实施例中,可选地,该确定模块510还用于,确定该至少两个数据对象中任一个数据对象在该KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和该相同的列属性,其中,该第二属性为该任一个数据对象的列属性中不同于该相同属性的列属性,该第二前缀为与该第一前缀不同的常量,根据该任一个数据对象的该二级索引的格式确定该任一个数据对象的二级索引;
该存储模块520还用于在该KeyValue类型分布式数据库中存储该任一个数据对象的二级索引。
本发明实施例的存储数据的装置,通过在KeyValue类型分布式数据库中存储数据对象的二级索引,可以提供给用户更丰富多样的查询场景,方便用户查询,从而能够提高查询数据的效率。
在本发明实施例中,可选地,该行标识的格式中的各个字段之间设置分隔符,或者,该各个字段具有固定长度。
根据本发明实施例的存储数据的装置500可对应于根据本发明实施例的的方法中的存储数据的装置,并且存储数据的装置500中的各个模块的上述和其它操作和/或功能分别为了实现图1至图4中的各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的存储数据的装置,通过将多个数据对象按照统一的行标识的格式存储到KeyValue类型分布式数据库中的一个数据表中,能够方便数据库的管理,提高查询数据的效率。
图7示出了本发明另一个实施例提供的存储数据的装置的结构,包括至少一个处理器702(例如CPU),至少一个网络接口705或者其他通信接口,存储器706,和至少一个通信总线703,用于实现这些装置之间的连接通信。处理器702用于执行存储器706中存储的可执行模块,例如计算机程序。存储器706可能包含高速随机存取存储器(RAM:Random AccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口705(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器706存储了程序7061,程序7061可以被处理器702执行,这个程序包括:
确定待存储到KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性;
确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,其中,该行标识的格式包括该相同的列属性和数据对象标识,该至少两个数据对象中的不同数据对象的数据对象标识在该行标识的格式中的位置相同且位于该相同的列属性之后;
根据确定的该每个数据对象的该行标识的格式,确定该每个数据对象的每条数据记录的行标识的值;
在该KeyValue类型分布式数据库中存储该每条数据记录的行标识的值和该每条数据记录,其中,该每条数据记录的行标识的值作为该每条数据记录在该KeyValue类型分布式数据库中的主索引。
可选地,还包括:
针对该每条数据记录的行标识的值,按照第一顺序对该每条数据记录进行排序,使该至少两个数据对象的所有数据记录形成聚簇表。
可选地,该第一顺序为字典顺序。
可选地,还包括:
接收数据请求,该数据请求指示对该至少两个数据对象中的数据记录进行查询或获取;
根据该行标识的格式,构造在该KeyValue类型分布式数据库中进行查询的查询信息,其中,该查询信息包括该相同的列属性;
根据该查询信息,导出该KeyValue类型分布式数据库中主索引包含该查询信息的数据记录。
可选地,确定该至少两个数据对象中的每个数据对象在该KeyValue类型分布式数据库中的行标识的格式,包括:
为该至少两个数据对象指定在该KeyValue类型分布式数据库中的行标识的第一前缀,其中,该第一前缀为常量;
确定该至少两个数据对象中的第一数据对象的该行标识的格式包括该第一前缀、该相同的列属性和该第一数据对象的数据对象标识;或者,
确定该至少两个数据对象中的第二数据对象的该行标识的格式包括该第一前缀、该相同的列属性、该第二数据对象的数据对象标识和该第二数据对象的列属性中能区分该第二数据对象的所有数据记录的列属性。
可选地,该查询信息包括该第一前缀和该相同的列属性。
可选地,还包括:
确定该至少两个数据对象中任一个数据对象在该KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和该相同的列属性,其中,该第二属性为该任一个数据对象的列属性中不同于该相同属性的列属性,该第二前缀为与该第一前缀不同的常量;
根据该任一个数据对象的该二级索引的格式确定该任一个数据对象的二级索引;
在该KeyValue类型分布式数据库中存储该任一个数据对象的二级索引。
可选地,该行标识的格式中的各个字段之间设置分隔符,或者,该各个字段具有固定长度。
从本发明实施例提供的以上技术方案可以看出,本发明实施例通过将相关联的数据对象采用包括相同的列属性的行标识的格式存储到KeyValue类型分布式数据库中,可以实现对多个数据对象进行关联查询,从而能够提高查询数据的效率。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (17)
1.一种存储数据的方法,其特征在于,包括:
确定待存储到键值KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性;
确定所述至少两个数据对象中的每个数据对象在所述KeyValue类型分布式数据库中的行标识的格式,其中,所述行标识的格式包括所述相同的列属性和数据对象标识,所述至少两个数据对象中的不同数据对象的数据对象标识在所述行标识的格式中的位置相同且位于所述相同的列属性之后;
根据确定的所述每个数据对象的所述行标识的格式,确定所述每个数据对象的每条数据记录的行标识的值;
根据所述每条数据记录的行标识的值,对所述至少两个数据对象中的数据记录进行排序,在所述KeyValue类型分布式数据库中存储所述每条数据记录的行标识的值和所述每条数据记录,其中,所述至少两个数据对象中的数据在所述KeyValue类型分布式数据库中形成聚簇表,每条数据记录的行标识的值作为所述每条数据记录在所述KeyValue类型分布式数据库中的主索引。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照第一顺序对所述至少两个数据对象中的数据记录进行排序。
3.根据权利要求2所述的方法,其特征在于,所述第一顺序为字典顺序。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
接收数据请求,所述数据请求指示对所述至少两个数据对象中的数据记录进行查询或获取;
根据所述行标识的格式,构造在所述KeyValue类型分布式数据库中进行查询的查询信息,其中,所述查询信息包括所述相同的列属性;
根据所述查询信息,导出所述KeyValue类型分布式数据库中主索引包含所述查询信息的数据记录。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述确定所述至少两个数据对象中的每个数据对象在所述KeyValue类型分布式数据库中的行标识的格式,包括:
为所述至少两个数据对象指定在所述KeyValue类型分布式数据库中的行标识的第一前缀,其中,所述第一前缀为常量;
确定所述至少两个数据对象中的第一数据对象的所述行标识的格式包括所述第一前缀、所述相同的列属性和所述第一数据对象的数据对象标识;或者,
确定所述至少两个数据对象中的第二数据对象的所述行标识的格式包括所述第一前缀、所述相同的列属性、所述第二数据对象的数据对象标识和所述第二数据对象的列属性中能区分所述第二数据对象的所有数据记录的列属性。
6.根据权利要求5所述的方法,其特征在于,所述查询信息包括所述第一前缀和所述相同的列属性。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
确定所述至少两个数据对象中任一个数据对象在所述KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和所述相同的列属性,其中,所述第二属性为所述任一个数据对象的列属性中不同于所述相同属性的列属性,所述第二前缀为与所述第一前缀不同的常量;
根据所述任一个数据对象的所述二级索引的格式确定所述任一个数据对象的二级索引;
在所述KeyValue类型分布式数据库中存储所述任一个数据对象的二级索引。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述行标识的格式中的各个字段之间设置分隔符,或者,所述各个字段具有固定长度。
9.一种存储数据的装置,其特征在于,包括:
确定模块,用于确定待存储到键值KeyValue类型分布式数据库中的至少两个数据对象的相同的列属性,确定所述至少两个数据对象中的每个数据对象在所述KeyValue类型分布式数据库中的行标识的格式,其中,所述行标识的格式包括所述相同的列属性和数据对象标识,所述至少两个数据对象中的不同数据对象的数据对象标识在所述行标识的格式中的位置相同且位于所述相同的列属性之后,根据确定的所述每个数据对象的所述行标识的格式,确定所述每个数据对象的每条数据记录的行标识的值;
存储模块,用于根据所述每条数据记录的行标识的值,对所述至少两个数据对象中的数据记录进行排序,在所述KeyValue类型分布式数据库中存储所述每条数据记录的行标识的值和所述每条数据记录,其中,所述至少两个数据对象中的数据在所述KeyValue类型分布式数据库中形成聚簇表,每条数据记录的行标识的值作为所述每条数据记录在所述KeyValue类型分布式数据库中的主索引。
10.根据权利要求9所述的装置,其特征在于,所述存储模块还用于,按照第一顺序对所述至少两个数据对象中的数据记录进行排序。
11.根据权利要求10所述的装置,其特征在于,所述第一顺序为字典顺序。
12.根据权利要求9至11中任一项所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收数据请求,所述数据请求指示对所述至少两个数据对象中的数据记录进行查询或获取;
查询模块,用于根据所述行标识的格式,构造在所述KeyValue类型分布式数据库中进行查询的查询信息,其中,所述查询信息包括所述相同的列属性,根据所述查询信息,导出所述KeyValue类型分布式数据库中主索引包含所述查询信息的数据记录。
13.根据权利要求9至12中任一项所述的装置,其特征在于,所述确定模块具体用于,为所述至少两个数据对象指定在所述KeyValue类型分布式数据库中的行标识的第一前缀,其中,所述第一前缀为常量,确定所述至少两个数据对象中的第一数据对象的所述行标识的格式包括所述第一前缀、所述相同的列属性和所述第一数据对象的数据对象标识,或者,确定所述至少两个数据对象中的第二数据对象的所述行标识的格式包括所述第一前缀、所述相同的列属性、所述第二数据对象的数据对象标识和所述第二数据对象的列属性中能区分所述第二数据对象的所有数据记录的列属性。
14.根据权利要求13所述的装置,其特征在于,所述查询信息包括所述第一前缀和所述相同的列属性。
15.根据权利要求13或14所述的装置,其特征在于,所述确定模块还用于,确定所述至少两个数据对象中任一个数据对象在所述KeyValue类型分布式数据库中的二级索引的格式为第二前缀,第二属性和所述相同的列属性,其中,所述第二属性为所述任一个数据对象的列属性中不同于所述相同属性的列属性,所述第二前缀为与所述第一前缀不同的常量,根据所述任一个数据对象的所述二级索引的格式确定所述任一个数据对象的二级索引;
所述存储模块还用于在所述KeyValue类型分布式数据库中存储所述任一个数据对象的二级索引。
16.根据权利要求9至15中任一项所述的装置,其特征在于,所述行标识的格式中的各个字段之间设置分隔符,或者,所述各个字段具有固定长度。
17.一种计算机,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算机运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述计算机执行权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611186259.5A CN106649708A (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611186259.5A CN106649708A (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
CN201380001160.1A CN103703467B (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
PCT/CN2013/082544 WO2015027425A1 (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380001160.1A Division CN103703467B (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106649708A true CN106649708A (zh) | 2017-05-10 |
Family
ID=50363919
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611186259.5A Pending CN106649708A (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
CN201380001160.1A Active CN103703467B (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380001160.1A Active CN103703467B (zh) | 2013-08-29 | 2013-08-29 | 存储数据的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9589004B2 (zh) |
EP (1) | EP3023885B1 (zh) |
JP (1) | JP6225261B2 (zh) |
KR (1) | KR101720602B1 (zh) |
CN (2) | CN106649708A (zh) |
BR (1) | BR112016004490B8 (zh) |
CA (1) | CA2921616C (zh) |
WO (1) | WO2015027425A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020024341A1 (zh) * | 2018-08-02 | 2020-02-06 | 网宿科技股份有限公司 | 一种对象存储的方法及对象存储网关 |
CN111324605A (zh) * | 2020-01-22 | 2020-06-23 | 北京东方金信科技有限公司 | 数据库中数据混合存储动态调整方法及应用 |
CN111723245A (zh) * | 2019-03-18 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 数据存储***中建立不同类型存储对象关联关系的方法 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649708A (zh) * | 2013-08-29 | 2017-05-10 | 华为技术有限公司 | 存储数据的方法和装置 |
CN105095268A (zh) * | 2014-05-12 | 2015-11-25 | 深圳市同洲电子股份有限公司 | 结构化数据的存取方法以及装置 |
CN108897761B (zh) * | 2014-05-27 | 2023-01-13 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
CN104102711B (zh) * | 2014-07-15 | 2017-12-01 | 中国联合网络通信集团有限公司 | 一种HBase数据库存储上网记录的方法和*** |
US9836507B2 (en) * | 2014-09-17 | 2017-12-05 | Futurewei Technologies, Inc. | Method and system for adaptively building a column store database from a temporal row store database based on query demands |
US10671594B2 (en) | 2014-09-17 | 2020-06-02 | Futurewei Technologies, Inc. | Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems |
CN104408150A (zh) * | 2014-12-03 | 2015-03-11 | 天津南大通用数据技术股份有限公司 | 一种适应多种数据库数据格式的数据导入导出方法及装置 |
CN106326305A (zh) * | 2015-06-30 | 2017-01-11 | 星环信息科技(上海)有限公司 | 一种数据文件的存储和查询方法及设备 |
CN105354255B (zh) * | 2015-10-21 | 2018-01-02 | 华为技术有限公司 | 数据查询方法和装置 |
CN105630934A (zh) * | 2015-12-23 | 2016-06-01 | 浪潮电子信息产业股份有限公司 | 一种数据统计方法及*** |
CN105653611B (zh) * | 2015-12-24 | 2019-08-20 | 深圳市汇朗科技有限公司 | 分表分页排序查询方法及装置 |
CN105740405B (zh) | 2016-01-29 | 2020-06-26 | 华为技术有限公司 | 存储数据的方法和装置 |
CN107463512B (zh) * | 2017-06-26 | 2020-11-13 | 上海高顿教育培训有限公司 | 分布式高速存储***的数据更新方法 |
CN107832389B (zh) * | 2017-10-31 | 2020-12-25 | 新华三大数据技术有限公司 | 数据管理方法及装置 |
CN108681563B (zh) * | 2018-04-28 | 2021-08-27 | 新疆熙菱信息技术股份有限公司 | 基于一表多用户的服务发布及访问*** |
CN110647517B (zh) * | 2018-06-11 | 2022-06-24 | 北京神州泰岳软件股份有限公司 | 一种表格数据结构的处理方法和装置 |
CN109101641B (zh) * | 2018-08-20 | 2022-09-23 | 联想(北京)有限公司 | 表格处理方法、装置、***和介质 |
CN109918472A (zh) * | 2019-02-27 | 2019-06-21 | 北京百度网讯科技有限公司 | 存储和查询数据的方法、装置、设备和介质 |
CN110297832B (zh) * | 2019-07-01 | 2021-12-24 | 联想(北京)有限公司 | 一种时序数据存储方法及装置、时序数据查询方法及装置 |
CN112465294B (zh) * | 2020-10-21 | 2023-08-22 | 郑州大学第一附属医院 | 基于审计结果的医院药品智能供货方法及装置 |
CN112835901A (zh) * | 2021-02-01 | 2021-05-25 | 长沙市到家悠享家政服务有限公司 | 文件存储方法及装置、计算机设备、计算机可读存储介质 |
CN113360776B (zh) * | 2021-07-19 | 2023-07-21 | 西南大学 | 基于跨表数据挖掘的科技资源推荐方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203712B2 (en) * | 2004-02-26 | 2007-04-10 | International Business Machines Corporation | Algorithm to find LOB value in a relational table after key columns have been modified |
CN101198953A (zh) * | 2005-05-13 | 2008-06-11 | Abb研究有限公司 | 产生实物资产的唯一表示 |
CN102193917A (zh) * | 2010-03-01 | 2011-09-21 | ***通信集团公司 | 一种数据处理和查询方法和装置 |
CN103116625A (zh) * | 2013-01-31 | 2013-05-22 | 重庆大学 | 一种基于Hadoop的海量RDF数据分布式查询处理方法 |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295256A (en) * | 1990-12-14 | 1994-03-15 | Racal-Datacom, Inc. | Automatic storage of persistent objects in a relational schema |
JPH0567159A (ja) | 1991-09-10 | 1993-03-19 | Nec Software Kansai Ltd | 表形式データ処理装置 |
JPH0736756A (ja) * | 1993-07-21 | 1995-02-07 | Hitachi Ltd | オブジェクト管理方式 |
US5878411A (en) * | 1997-06-27 | 1999-03-02 | International Business Machines Corporation | Dependent object class and subclass mapping to relational data store |
US5995973A (en) * | 1997-08-29 | 1999-11-30 | International Business Machines Corporation | Storing relationship tables identifying object relationships |
JP2001518670A (ja) * | 1997-09-26 | 2001-10-16 | オントス,インコーポレイテッド | オブジェクト指向ソフトウエアを有するリレーショナルデータベースを使用するための目的モデルマッピングおよびランタイムエンジン |
US6112207A (en) * | 1997-10-31 | 2000-08-29 | Oracle Corporation | Apparatus and method which features linearizing attributes of an information object into a string of bytes for object representation and storage in a database system |
US6385618B1 (en) * | 1997-12-22 | 2002-05-07 | Sun Microsystems, Inc. | Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool |
US6360223B1 (en) * | 1997-12-22 | 2002-03-19 | Sun Microsystems, Inc. | Rule-based approach to object-relational mapping strategies |
US6094649A (en) * | 1997-12-22 | 2000-07-25 | Partnet, Inc. | Keyword searches of structured databases |
US6374256B1 (en) * | 1997-12-22 | 2002-04-16 | Sun Microsystems, Inc. | Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application |
US6122639A (en) * | 1997-12-23 | 2000-09-19 | Cisco Technology, Inc. | Network device information collection and change detection |
US6769124B1 (en) | 1998-07-22 | 2004-07-27 | Cisco Technology, Inc. | Persistent storage of information objects |
US6341289B1 (en) * | 1999-05-06 | 2002-01-22 | International Business Machines Corporation | Object identity and partitioning for user defined extents |
US6754670B1 (en) | 1999-12-17 | 2004-06-22 | International Business Machines Corporation | Mapping relational tables to object oriented classes |
US6591275B1 (en) * | 2000-06-02 | 2003-07-08 | Sun Microsystems, Inc. | Object-relational mapping for tables without primary keys |
JP2004534981A (ja) | 2000-11-29 | 2004-11-18 | ラファイエット・ソフトウェア・インコーポレーテッド | データベース・システムでデータを編成し、問合せを処理する方法、およびそのような方法を実施するためのデータベース・システムおよびソフトウェア製品 |
EP1211610A1 (en) * | 2000-11-29 | 2002-06-05 | Lafayette Software Inc. | Methods of organising data and processing queries in a database system |
EP1217541A1 (en) * | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Method of processing queries in a database system, and database system and software product for implementing such method |
JP2005234612A (ja) | 2001-05-07 | 2005-09-02 | I-Ze Communications Inc | データベースの統合 |
US20030154197A1 (en) * | 2002-02-13 | 2003-08-14 | Permutta Technologies | Flexible relational data storage method and apparatus |
US7103588B2 (en) | 2003-05-05 | 2006-09-05 | International Business Machines Corporation | Range-clustered tables in a database management system |
JP2006065467A (ja) | 2004-08-25 | 2006-03-09 | Hitachi Ltd | データ抽出定義情報生成装置およびデータ抽出定義情報生成方法 |
US7493313B2 (en) | 2004-09-17 | 2009-02-17 | Microsoft Corporation | Durable storage of .NET data types and instances |
US7865888B1 (en) * | 2004-12-21 | 2011-01-04 | Zenprise, Inc. | Systems and methods for gathering deployment state for automated management of software application deployments |
US20080059492A1 (en) * | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US8458191B2 (en) * | 2010-03-15 | 2013-06-04 | International Business Machines Corporation | Method and system to store RDF data in a relational store |
WO2012074529A1 (en) | 2010-12-03 | 2012-06-07 | Hewlett-Packard Development Company, L.P. | Systems and methods for performing a nested join operation |
JP5727258B2 (ja) * | 2011-02-25 | 2015-06-03 | ウイングアーク1st株式会社 | 分散型データベースシステム |
CN107451225B (zh) * | 2011-12-23 | 2021-02-05 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
GB2513329A (en) * | 2013-04-23 | 2014-10-29 | Ibm | Method and system for scoring data in a database |
US10235391B2 (en) * | 2013-06-18 | 2019-03-19 | Change Healthcare Holdings, Llc | Method and apparatus for implementing dynamic database traversal |
-
2013
- 2013-08-29 CN CN201611186259.5A patent/CN106649708A/zh active Pending
- 2013-08-29 CA CA2921616A patent/CA2921616C/en active Active
- 2013-08-29 WO PCT/CN2013/082544 patent/WO2015027425A1/zh active Application Filing
- 2013-08-29 KR KR1020167005763A patent/KR101720602B1/ko active IP Right Grant
- 2013-08-29 BR BR112016004490A patent/BR112016004490B8/pt active IP Right Grant
- 2013-08-29 CN CN201380001160.1A patent/CN103703467B/zh active Active
- 2013-08-29 EP EP13892411.3A patent/EP3023885B1/en active Active
- 2013-08-29 JP JP2016537067A patent/JP6225261B2/ja active Active
-
2016
- 2016-02-26 US US15/054,519 patent/US9589004B2/en active Active
-
2017
- 2017-01-20 US US15/411,657 patent/US10331642B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203712B2 (en) * | 2004-02-26 | 2007-04-10 | International Business Machines Corporation | Algorithm to find LOB value in a relational table after key columns have been modified |
CN101198953A (zh) * | 2005-05-13 | 2008-06-11 | Abb研究有限公司 | 产生实物资产的唯一表示 |
CN102193917A (zh) * | 2010-03-01 | 2011-09-21 | ***通信集团公司 | 一种数据处理和查询方法和装置 |
CN103116625A (zh) * | 2013-01-31 | 2013-05-22 | 重庆大学 | 一种基于Hadoop的海量RDF数据分布式查询处理方法 |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020024341A1 (zh) * | 2018-08-02 | 2020-02-06 | 网宿科技股份有限公司 | 一种对象存储的方法及对象存储网关 |
US11269843B2 (en) | 2018-08-02 | 2022-03-08 | Wangsu Science & Technology Co., Ltd. | Object storage method and object storage gateway |
CN111723245A (zh) * | 2019-03-18 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 数据存储***中建立不同类型存储对象关联关系的方法 |
CN111723245B (zh) * | 2019-03-18 | 2024-04-26 | 阿里巴巴集团控股有限公司 | 数据存储***中建立不同类型存储对象关联关系的方法 |
CN111324605A (zh) * | 2020-01-22 | 2020-06-23 | 北京东方金信科技有限公司 | 数据库中数据混合存储动态调整方法及应用 |
Also Published As
Publication number | Publication date |
---|---|
JP6225261B2 (ja) | 2017-11-01 |
KR101720602B1 (ko) | 2017-03-29 |
BR112016004490B8 (pt) | 2022-08-23 |
US10331642B2 (en) | 2019-06-25 |
CA2921616A1 (en) | 2015-03-05 |
WO2015027425A1 (zh) | 2015-03-05 |
US9589004B2 (en) | 2017-03-07 |
US20160179856A1 (en) | 2016-06-23 |
KR20160040282A (ko) | 2016-04-12 |
JP2016534456A (ja) | 2016-11-04 |
CN103703467A (zh) | 2014-04-02 |
EP3023885A1 (en) | 2016-05-25 |
EP3023885B1 (en) | 2019-10-30 |
EP3023885A4 (en) | 2016-06-29 |
US20170132260A1 (en) | 2017-05-11 |
BR112016004490B1 (pt) | 2020-11-10 |
CN103703467B (zh) | 2017-02-08 |
CA2921616C (en) | 2017-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649708A (zh) | 存储数据的方法和装置 | |
Demertzis et al. | Dynamic searchable encryption with small client storage | |
Roche et al. | POPE: Partial order preserving encoding | |
CN105608203B (zh) | 一种基于Hadoop平台的物联网日志处理方法和装置 | |
CN103530327B (zh) | 一种从非关系型数据库到关系型数据库的数据迁移方法 | |
US9047333B2 (en) | Dynamic updates to a semantic database using fine-grain locking | |
CN105637520B (zh) | 数据库中为加密字段生成索引的方法和装置 | |
CN105701096A (zh) | 索引生成方法、数据查询方法、装置及*** | |
CN106933833B (zh) | 一种基于空间索引技术的位置信息快速查询方法 | |
CN101464894B (zh) | 数据查询方法和*** | |
JP2016534456A5 (zh) | ||
Morozov et al. | Distributed contour trees | |
CN105630847A (zh) | 数据存储方法、数据查询方法、装置及*** | |
WO2015062182A1 (zh) | 大规模分布异构数据的虚拟化方法 | |
CN107515882A (zh) | 数据查询方法及装置 | |
CN103324763B (zh) | 一种手机端树形数据结构的展现方法 | |
CN103856462B (zh) | 一种会话的管理方法及*** | |
CN103699648A (zh) | 用于快速检索的树形数据结构及其实现方法 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN103198153A (zh) | 一种应用于分布式文件***的元数据分簇管理方法和模块 | |
CN104572785B (zh) | 一种分布式创建索引的方法和装置 | |
CN108171071A (zh) | 一种面向云计算的多关键字可排序密文检索方法 | |
CN105117442A (zh) | 一种基于概率的大数据查询方法 | |
CN107070645A (zh) | 比较数据表的数据的方法和*** | |
CN103077208A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170510 |