CN105740405B - 存储数据的方法和装置 - Google Patents
存储数据的方法和装置 Download PDFInfo
- Publication number
- CN105740405B CN105740405B CN201610061190.7A CN201610061190A CN105740405B CN 105740405 B CN105740405 B CN 105740405B CN 201610061190 A CN201610061190 A CN 201610061190A CN 105740405 B CN105740405 B CN 105740405B
- Authority
- CN
- China
- Prior art keywords
- index
- field
- row identifier
- value
- 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
Images
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
- 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
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明公开了一种存储数据的方法和装置。该方法包括:获取数据对象的主索引,其中,该主索引的行标识包括至少一个字段;根据该主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中第一个字段不同;根据该二级索引的行标识生成该数据对象的二级索引;根据该主索引和该二级索引存储该数据对象。本发明实施例的存储数据的方法和装置,能够节省存储空间。
Description
技术领域
本发明涉及信息技术领域,并且更具体地,涉及存储数据的方法和装置。
背景技术
分布式数据库是指将物理上分散的多个数据存储单元连接起来组成一个逻辑上的统一数据库。在分布式数据库中,一张用户数据表有一个主索引数据,基于主索引数据的行键(RowKey)进行查询,可以很快查到期望的用户数据。如果基于任意的一个列的条件进行查询,需要引入二级索引,从而使得分布式数据库支持更多维度的灵活查询能力。
在现有技术中,对于二级索引的RowKey的设计比较类似,大多是基于查询列的主索引和该查询列创建对应的二级索引。这样存在的问题是,如果查询列在主索引的RowKey和二级索引的RowKey中同时出现时,该列会被重复存储,造成数据冗余。
发明内容
本发明实施例提供了一种存储数据的方法和装置,能够节省存储空间。
第一方面,提供了一种存储数据的方法,包括:获取数据对象的主索引,其中,该主索引的行标识包括至少一个字段;
根据该主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中第一个字段不同;
根据该二级索引的行标识生成该数据对象的二级索引;
根据该主索引和该二级索引存储该数据对象。
本发明实施例的存储数据的方法,通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,可以避免重复存储索引字段,从而降低了数据冗余,节省了存储空间。
结合第一方面,在第一种可能的实现方式,该至少一个字段中的每个字段为该数据对象的列属性、随机数、常量或对该数据对象的列数据的处理。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在该主索引的行标识的该至少一个字段中不包括该索引字段时,该二级索引的行标识包括该索引字段和该主索引的行标识的该至少一个字段中的所有字段。
这里,主索引的行标识中不包括该索引字段时,该二级索引的行标识包括该索引字段和该主索引的行标识中的所有字段。
结合上述方面任一中可能的实现方式,在第三种可能的实现方式中,该方法还包括:
接收数据查询请求,该数据查询请求指示根据该索引字段的值查询该数据对象中的数据;
根据该索引字段的值查询该数据对象的二级索引,确定该数据对象中的该数据对应的二级索引的行标识的值;
根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值;
根据该主索引的行标识的值获取该数据对象中的该数据。
结合第一方面的第三种可能的实现方式中,该根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值包括:
在该主索引的行标识的该至少一个字段中包括该索引字段时,重组该二级索引的行标识的值,得到该主索引的行标识的值;或者,
在该主索引的行标识的该至少一个字段中不包括该索引字段时,在该二级索引的行标识的值中去除该索引字段的值,得到该主索引的行标识的值。
第二方面,提供了一种存储数据的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。
第三方面,提供了一种存储数据的装置,该装置包括:接收器、发送器、存储器、处理器和总线系统。其中,该接收器、该发送器、该存储器和该处理器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第五方面,提供了一种数据库系统,该数据库系统包括第二方面或第三方面的存储数据的装置和数据库。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的分布式数据库系统的一个示意图。
图2是根据本发明实施例的存储数据的方法的示意性流程图。
图3是根据本发明另一实施例的存储数据的方法的示意性流程图。
图4是根据本发明实施例的存储数据的装置的示意性框图。
图5是根据本发明另一实施例的存储数据的装置的示意性框图。
图6是根据本发明实施例的存储数据的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的技术方案可以应用于数据库系统,例如分布式数据库系统。图1是分布式数据库系统的一个示意图。如图1所示,数据以分布式方式存储在多个节点上;执行引擎(也称为存储引擎)根据客户端的请求进行数据存储和查询。
在本发明实施例中,数据对象为数据表(也可简称为“表”)或具有数据表格式的一类数据。例如,该类数据可以是通话记录数据或者上网记录数据,等等。为了描述方便,下列实施例将以数据表为例进行说明。
图2示出了根据本发明实施例的存储数据的方法200的示意性流程图。图2的方法由存储数据的装置执行,该存储数据的装置可以为数据库系统,也可以为数据库系统中的执行引擎。如图2所示,该方法200包括:
S210,获取数据对象的主索引,其中,该主索引的行标识包括至少一个字段;
S220,根据该主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中第一个字段不同;
S230,根据该二级索引的行标识生成该数据对象的二级索引;
S240,根据该主索引和该二级索引存储该数据对象。
具体而言,存储数据的装置通过获取数据对象的主索引,该主索引的行标识(如RowKey)包括至少一个字段,然后根据主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中的第一个字段不同,从而根据该二级索引的行标识生成对应的二级索引,最后根据该主索引和二级索引存储该数据对象。
在本发明实施例中,主索引的行标识和二级索引的行标识均是基于段(Section)定义或划分的行标识,一个Section对应一个字段。基于Section的行标识定义,可以在行标识中增加常量、随机数以及对字段值进行函数处理的效果,从而灵活满足应用层的使用。
例如,主索引的行标识包括Section1+Section2+Section3,索引字段为Section2,则需要针对索引字段Section2创建二级索引的行标识,二级索引的标识需要保存Section2和主索引的行标识,由于Section2在主索引的行标识中已经存在,为了避免重复存储,按照本发明的技术方案,该二级索引的行标识只需要包括Section2+Section1+Section3即可。因此,根据本发明的基于Section的定义方法,能够避免重复存储索引字段,从而达到降低数据冗余的目的。
可选地,在本发明实施例中,在该主索引的行标识的该至少一个字段中不包括该索引字段时,该二级索引的行标识包括该索引字段和该主索引的行标识的该至少一个字段中的所有字段。
又例如,主索引的行标识包括Section1+Section2+Section3,索引字段为Section4,则需要针对索引字段Section4创建二级索引的行标识,二级索引的标识需要保存Section4和主索引的行标识,即该二级索引的行标识包括Section4+Section1+Section2+Section3。
也就是说,在主索引的Rowkey字段与二级索引的Rowkey字段没有重复字段时,也可以采用本发明的基于Section定义的行标识确定该数据对象的二级索引的行标识。
在本发明实施例中,数据对象的主索引可以通过存储数据的装置写入或者直接获取。例如,对于数据库中已经存在的数据对象,则可以直接获取该数据对象的主索引;对于还没有写入数据库的数据对象,可以基于Section定义该数据对象的主索引的行标识获取主索引。
因此,本发明实施例的存储数据的方法,通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,可以避免重复存储索引字段,从而降低了数据冗余,节省了存储空间。
应理解,在本发明实施例中,行标识为每一行数据的标识。行标识可以表述为RowKey,也可以表述为Key,本发明对此并不限定。为了描述方便,下述实施例以RowKey为例进行说明。
可选地,在本发明实施例中,该至少一个字段中的每个字段为该数据对象的列属性、随机数、常量或对该数据对象的列数据的处理。
具体而言,主索引的RowKey和二级索引的RowKey都是由Section组成,每个Section通常是一个用户数据列,即该数据对象中的数据对应的列属性,也可以是一个常量或一个随机数(或枚举值),也可以是对于某个用户数据列的某个函数处理(比如,substring)。并且,这里对每个Section的长度并不作限定。
可选地,如图3所示,作为一个实施例,该方法200还可以包括:
S250,接收数据查询请求,该数据查询请求指示根据该索引字段的值查询该数据对象中的数据;
S260,根据该索引字段的值查询该数据对象的二级索引,确定该数据对象中的该数据对应的二级索引的行标识的值;
S270,根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值;
S280,根据该主索引的行标识的值获取该数据对象中的该数据。
具体而言,存储数据的装置接收客户端的数据查询请求,该数据查询请求指示根据该索引字段的值查询该数据对象中的数据,然后根据索引字段的值查询该数据对象的二级索引,并确定出该数据对象中该数据对应的二级索引的行标识的值,继而根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值,最后,通过该主索引的行标识的值获取该数据对象中的该数据,从而完成通过生成的索引表查询数据的过程。
可选地,在S270中,该根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值包括:
在该主索引的行标识的该至少一个字段中包括该索引字段时,重组该二级索引的行标识的值,得到该主索引的行标识的值;或者,
在该主索引的行标识的该至少一个字段中不包括该索引字段时,在该二级索引的行标识的值中去除该索引字段的值,得到该主索引的行标识的值。
这里,根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值可以包括以下情况:
对于主索引的行标识的字段中包括该索引字段时,通过重组该二级索引的行标识的值,从而得到该主索引的行标识的值;或者
对于主索引的行标识的字段中不包括该索引字段时,主索引的行标识的值即为在该二级索引的行标识的值去除该索引字段的值。
也就是说,对于查询阶段,主索引的行标识的字段不论是否包含索引字段,主索引的行标识的值也能根据本发明的方法确定,从而完成查询的过程。
因此,本发明实施例的存储数据的方法,通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,可以避免重复存储索引字段,从而降低了数据冗余,节省了存储空间。
下面结合具体的例子对本发明实施例进行详细描述。应注意,其中的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
例如,假设一个用户表(或数据对象),如表1所示,该用户表包含5个字段:ID,Name,Address,Phone,Date。该用户表的查询场景主要由四种:通过ID查询,或通过Name查询,或通过ID+Name查询,或通过ID+Name+Date查询。其中,通过ID查询、通过ID+Name查询或通过ID+Name+Date查询这三种场景下,能够通过ID直接查表获取索引字段对应的值。而在通过Name查询的场景中,不能直接进行获取索引字段的值。对于Name查询,需要创建主索引和二级索引。下面将采用本发明的基于Section的方法对Name字段查询主索引的RowKey和二级索引的RowKey进行设计。
表1
ID | Name | Date | Address | Phone |
A0000001 | 张 | 20150623 | 广东深圳 | 18600001111 |
A0000002 | 李 | 20150623 | 广东深圳 | 18600001112 |
A0000003 | 郭 | 20150624 | 四川 | 18600011111 |
A0000004 | 毕 | 20150624 | 山东 | 18600011112 |
A0000005 | 吴 | 20150624 | 珠海 | 18600011113 |
... | ... | ... | ... | ... |
A0000111 | 钟 | 20150624 | 广东 | 18600055555 |
主索引的RowKey由三个Sections(Section1,Section2,Section3)组成,其中,Section1为ID,Section2为Name,Section3为truncate(Date,8),truncate为截取Date前8位值的函数,即基于Section对应的主索引的RowKey的结构为(ID,Name,truncate(Date,8))。
由于Name字段(列属性)的Section已经在主索引中出现,则Name字段的二级索引的RowKey的结构为(Name,ID,truncate(Date,8)),其中二级索引的RowKey中的ID和truncate(Date,8)即为主索引的RowKey的原Section,这里,Name对应的Section只需要保存一份,从而避免了重复存储。然后,根据该二级索引的RowKey生成对应的二级索引,并根据上述主索引和上述二级索引存储用户数据。
可选地,对于已经存在的用户数据,可以将其主索引读取出来,然后按照上述Section定义的方法重新组成二级索引的RowKey,写入二级索引表。例如,假设读取到的数据有两条,如表2所示,主索引数据和主索引列是读取到的,表3中的二级索引的RowKey是根据读取的主索引的RowKey新生成的,然后根据该二级索引的RowKey生成对应的二级索引,并根据主索引和二级索引存储用户数据。
表2
表3
可选地,在根据上述主索引和上述二级索引存储用户数据之后,可以通过上述主索引和上述二级索引对用户数据进行查询。
例如,当接收到的数据查询请求的查询语句为:select*from UserInfo wherename=‘李’;该查询语句指示根据Name字段的值查询“李”数据。则对应的查询过程如下:
首先,根据Name字段的值“李”查询该用户数据中的二级索引,定位到“李”这一行数据,从而确定出该用户数据中的数据对应的二级索引的RowKey的值为表3中的“李+A00000002+20150623”;
其次,根据该二级索引的RowKey的值“李+A00000002+20150623”信息,确定出主索引的RowKey的值为表2中的“A00000002+李+20150623”;
最后,通过该主索引的RowKey的值定位到对应的行数据,获取所有数据,并返回给客户端。
又例如,结合上述表1,在通过Phone查询的场景中,主索引为ID+Name+Date,即在主索引的行标识的字段中不包括索引字段Phone时,也可以应用本发明的技术方案。
具体而言,首先,基于本发明的Section方法创建以Phone为索引字段的二级索引,则Phone查询场景对应的二级索引的RowKey的Sections包括:(Phone,ID,Name,truncate(Date,8)),其中,主索引的RowKey的结构仍为(ID,Name,truncate(Date,8))。这里,主索引的RowKey中的字段和二级索引的RowKey中的字段没有重复字段,因此在二级索引的RowKey中保存全部的主索引的RowKey的三个Section。其次,根据该二级索引的RowKey获取二级索引,从而进行后续的查询或者存储操作。换言之,在二级索引的RowKey的值中去除索引字段Phone的值,可得到主索引的RowKey的值。所以,本发明的基于Section的二级索引的RowKey的设计方案仍然可以发挥对字段进行函数处理的作用。
可选地,在通过Phone查询的场景中,存储数据和查询数据的流程与通过Name查询的场景中的处理流程是类似的,为了简洁,在此不作赘述。
在本发明实施例中,基于Section定义二级索引的方法不仅可以用于主索引和二级索引包含相同索引字段的情况,也可以用于不包含相同字段的情况,方便用户查询,提供了更丰富的查询场景,从而能够提高查询数据的效率。
因此,本发明实施例的存储数据的方法,通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,可以避免重复存储索引字段,从而降低了数据冗余,节省了存储空间。
应理解,本发明实施例的truncate函数也可以是别的处理函数,本发明对此不作限制。
上文详细描述了根据本发明实施例的存储数据的方法,下面将描述根据本发明实施例的存储数据的装置。
图4示出了根据本发明实施例的存储数据的装置400的示意性框图。如图4所示,该装置400包括:
获取模块410,用于获取数据对象的主索引,其中,该主索引的行标识包括至少一个字段;
确定模块420,用于根据该主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中第一个字段不同;
生成模块430,用于根据该确定模块420确定的该二级索引的行标识生成该数据对象的二级索引;
存储模块440,用于根据该主索引和该生成模块430生成的该二级索引存储该数据对象。
在本发明实施例中,可选地,该至少一个字段中的每个字段为该数据对象的列属性、随机数、常量或对该数据对象的列数据的处理。
在本发明实施例中,可选地,在该主索引的行标识的该至少一个字段中不包括该索引字段时,该二级索引的行标识包括该索引字段和该主索引的行标识的该至少一个字段中的所有字段。
在本发明实施例中,可选地,如图5所示,该装置400还可以包括:
接收模块450,用于接收数据查询请求,该数据查询请求指示根据该索引字段的值查询该数据对象中的数据;
查询模块460,用于根据该索引字段的值查询该数据对象的二级索引,确定该数据对象中的该数据对应的二级索引的行标识的值;
该确定模块420还用于根据该查询模块460确定的该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值;
该获取模块410还用于根据该主索引的行标识的值获取该数据对象中的该数据。
可选地,该确定模块420还具体用于:
在该主索引的行标识的该至少一个字段中包括该索引字段时,重组该二级索引的行标识的值,得到该主索引的行标识的值;或者,
在该主索引的行标识的该至少一个字段中不包括该索引字段时,在该二级索引的行标识的值中去除该索引字段的值,得到该主索引的行标识的值。
根据本发明实施例的存储数据的装置400可对应于根据本发明实施例的的方法的执行主体,并且存储数据的装置400中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的存储数据的装置,通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,从而降低了数据冗余,节省了存储空间。
图6示出了本发明另一个实施例提供的存储数据的装置的结构,包括至少一个处理器602(例如CPU),至少一个网络接口605或者其他通信接口,存储器606,和至少一个通信总线603,用于实现这些装置之间的连接通信。处理器602用于执行存储器606中存储的可执行模块,例如计算机程序。存储器606可能包含高速随机存取存储器(RAM:Random AccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口605(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器606存储了程序6061,程序6061可以被处理器602执行,这个程序包括:
获取数据对象的主索引,其中,该主索引的行标识包括至少一个字段;
根据该主索引的行标识确定该数据对象的二级索引的行标识,其中,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,该索引字段与该主索引的行标识的至少一个字段中第一个字段不同;
根据该二级索引的行标识生成该数据对象的二级索引;
根据该主索引和该二级索引存储该数据对象。
可选地,该至少一个字段中的每个字段为该数据对象的列属性、随机数、常量或对该数据对象的列数据的处理。
可选地,在该主索引的行标识的该至少一个字段中不包括该索引字段时,该二级索引的行标识包括该索引字段和该主索引的行标识的该至少一个字段中的所有字段。
可选地,还包括:
接收数据查询请求,该数据查询请求指示根据该索引字段的值查询该数据对象中的数据;
根据该索引字段的值查询该数据对象的二级索引,确定该数据对象中的该数据对应的二级索引的行标识的值;
根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值;
根据该主索引的行标识的值获取该数据对象中的该数据。
可选地,该根据该二级索引的行标识的值确定该数据对象的该数据对应的主索引的行标识的值包括:
在该主索引的行标识的该至少一个字段中包括该索引字段时,重组该二级索引的行标识的值,得到该主索引的行标识的值;或者,
在该主索引的行标识的该至少一个字段中不包括该索引字段时,在该二级索引的行标识的值中去除该索引字段的值,得到该主索引的行标识的值。
从本发明实施例提供的以上技术方案可以看出,本发明实施例通过根据主索引的行标识确定数据对象的二级索引的行标识,该二级索引的行标识包括索引字段和该主索引的行标识的至少一个字段中除该索引字段外的字段,可以避免重复存储索引字段,从而降低了数据冗余,节省了存储空间。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种存储数据的方法,其特征在于,包括:
获取数据对象的主索引,其中,所述主索引的行标识包括至少一个字段;
根据所述主索引的行标识确定所述数据对象的二级索引的行标识,其中,所述二级索引的行标识包括索引字段和所述主索引的行标识的至少一个字段中除所述索引字段外的字段,所述索引字段与所述主索引的行标识的至少一个字段中第一个字段不同,包括:
当在所述主索引的行标识的所述至少一个字段中包括所述索引字段时,重组所述主索引的行标识的值,得到所述二级索引的行标识的值;或者,
当在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,在所述主索引的行标识的值中去除所述索引字段的值,得到所述二级索引的行标识的值;
根据所述二级索引的行标识生成所述数据对象的二级索引;
根据所述主索引和所述二级索引存储所述数据对象。
2.根据权利要求1所述的方法,其特征在于,所述至少一个字段中的每个字段为所述数据对象的列属性、随机数、常量或对所述数据对象的列数据的处理。
3.根据权利要求1或2所述的方法,其特征在于,在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,所述二级索引的行标识包括所述索引字段和所述主索引的行标识的所述至少一个字段中的所有字段。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收数据查询请求,所述数据查询请求指示根据所述索引字段的值查询所述数据对象中的数据;
根据所述索引字段的值查询所述数据对象的二级索引,确定所述数据对象中的所述数据对应的二级索引的行标识的值;
根据所述二级索引的行标识的值确定所述数据对象的所述数据对应的主索引的行标识的值;
根据所述主索引的行标识的值获取所述数据对象中的所述数据。
5.根据权利要求4所述的方法,其特征在于,所述根据所述二级索引的行标识的值确定所述数据对象的所述数据对应的主索引的行标识的值包括:
在所述主索引的行标识的所述至少一个字段中包括所述索引字段时,重组所述二级索引的行标识的值,得到所述主索引的行标识的值;或者,
在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,在所述二级索引的行标识的值中去除所述索引字段的值,得到所述主索引的行标识的值。
6.一种存储数据的装置,其特征在于,包括:
获取模块,用于获取数据对象的主索引,其中,所述主索引的行标识包括至少一个字段;
确定模块,用于根据所述主索引的行标识确定所述数据对象的二级索引的行标识,其中,所述二级索引的行标识包括索引字段和所述主索引的行标识的至少一个字段中除所述索引字段外的字段,所述索引字段与所述主索引的行标识的至少一个字段中第一个字段不同,包括:
当在所述主索引的行标识的所述至少一个字段中包括所述索引字段时,重组所述主索引的行标识的值,得到所述二级索引的行标识的值;或者,
当在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,在所述主索引的行标识的值中去除所述索引字段的值,得到所述二级索引的行标识的值;
生成模块,用于根据所述确定模块确定的所述二级索引的行标识生成所述数据对象的二级索引;
存储模块,用于根据所述主索引和所述生成模块生成的所述二级索引存储所述数据对象。
7.根据权利要求6所述的装置,其特征在于,所述至少一个字段中的每个字段为所述数据对象的列属性、随机数、常量或对所述数据对象的列数据的处理。
8.根据权利要求6或7所述的装置,其特征在于,在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,所述二级索引的行标识包括所述索引字段和所述主索引的行标识的所述至少一个字段中的所有字段。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收数据查询请求,所述数据查询请求指示根据所述索引字段的值查询所述数据对象中的数据;
查询模块,用于根据所述索引字段的值查询所述数据对象的二级索引,确定所述数据对象中的所述数据对应的二级索引的行标识的值;
所述确定模块还用于根据所述二级索引的行标识的值确定所述数据对象的所述数据对应的主索引的行标识的值;
所述获取模块还用于根据所述确定模块确定的所述主索引的行标识的值获取所述数据对象中的所述数据。
10.根据权利要求9所述的装置,其特征在于,所述确定模块还具体用于:
在所述主索引的行标识的所述至少一个字段中包括所述索引字段时,重组所述二级索引的行标识的值,得到所述主索引的行标识的值;或者,
在所述主索引的行标识的所述至少一个字段中不包括所述索引字段时,在所述二级索引的行标识的值中去除所述索引字段的值,得到所述主索引的行标识的值。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610061190.7A CN105740405B (zh) | 2016-01-29 | 2016-01-29 | 存储数据的方法和装置 |
PCT/CN2016/095691 WO2017128701A1 (zh) | 2016-01-29 | 2016-08-17 | 存储数据的方法和装置 |
EP16887578.9A EP3370167A4 (en) | 2016-01-29 | 2016-08-17 | Method and apparatus for storing data |
US15/991,845 US11030178B2 (en) | 2016-01-29 | 2018-05-29 | Data storage method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610061190.7A CN105740405B (zh) | 2016-01-29 | 2016-01-29 | 存储数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105740405A CN105740405A (zh) | 2016-07-06 |
CN105740405B true CN105740405B (zh) | 2020-06-26 |
Family
ID=56247859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610061190.7A Active CN105740405B (zh) | 2016-01-29 | 2016-01-29 | 存储数据的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11030178B2 (zh) |
EP (1) | EP3370167A4 (zh) |
CN (1) | CN105740405B (zh) |
WO (1) | WO2017128701A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740405B (zh) | 2016-01-29 | 2020-06-26 | 华为技术有限公司 | 存储数据的方法和装置 |
CN109086456B (zh) * | 2018-08-31 | 2020-11-03 | 中国联合网络通信集团有限公司 | 数据索引方法及装置 |
CN109918472A (zh) * | 2019-02-27 | 2019-06-21 | 北京百度网讯科技有限公司 | 存储和查询数据的方法、装置、设备和介质 |
CN110297832B (zh) * | 2019-07-01 | 2021-12-24 | 联想(北京)有限公司 | 一种时序数据存储方法及装置、时序数据查询方法及装置 |
CN112765131B (zh) * | 2021-01-22 | 2023-03-24 | 重庆邮电大学 | 一种异构医疗健康数据存储和检索方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005022401A1 (en) * | 2003-08-29 | 2005-03-10 | Vortaloptics, Inc. | Method, device and software for querying and presenting search results |
CN102609452A (zh) * | 2012-01-11 | 2012-07-25 | 上海西本网络科技有限公司 | 数据的存储方法及装置 |
CN103020204A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对分布式顺序表进行多维区间查询的方法及其系统 |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757900A (en) * | 1995-06-02 | 1998-05-26 | Bell Communications Research, Inc. | System and method for single access database retrievals |
US6546394B1 (en) * | 1999-12-28 | 2003-04-08 | Oracle International Corporation | Database system having logical row identifiers |
US20030039362A1 (en) * | 2001-08-24 | 2003-02-27 | Andrea Califano | Methods for indexing and storing genetic data |
US7263536B1 (en) * | 2002-09-23 | 2007-08-28 | Ncr Corp. | System and method for updating an index in a database |
US7225197B2 (en) * | 2002-10-31 | 2007-05-29 | Elecdecom, Inc. | Data entry, cross reference database and search systems and methods thereof |
CN100392651C (zh) * | 2005-02-25 | 2008-06-04 | 中兴通讯股份有限公司 | 一种实时内存数据库通用约束的实现方法 |
CN101790257A (zh) * | 2009-01-22 | 2010-07-28 | 大唐移动通信设备有限公司 | 一种存储数据的方法和网管系统 |
US8719225B1 (en) * | 2012-01-17 | 2014-05-06 | Amazon Technologies, Inc. | System and method for log conflict detection and resolution in a data store |
CN108170726A (zh) * | 2015-10-21 | 2018-06-15 | 华为技术有限公司 | 数据查询方法和装置 |
CN105740405B (zh) * | 2016-01-29 | 2020-06-26 | 华为技术有限公司 | 存储数据的方法和装置 |
-
2016
- 2016-01-29 CN CN201610061190.7A patent/CN105740405B/zh active Active
- 2016-08-17 EP EP16887578.9A patent/EP3370167A4/en not_active Ceased
- 2016-08-17 WO PCT/CN2016/095691 patent/WO2017128701A1/zh active Application Filing
-
2018
- 2018-05-29 US US15/991,845 patent/US11030178B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005022401A1 (en) * | 2003-08-29 | 2005-03-10 | Vortaloptics, Inc. | Method, device and software for querying and presenting search results |
CN102609452A (zh) * | 2012-01-11 | 2012-07-25 | 上海西本网络科技有限公司 | 数据的存储方法及装置 |
CN103020204A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对分布式顺序表进行多维区间查询的方法及其系统 |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105740405A (zh) | 2016-07-06 |
US20180276262A1 (en) | 2018-09-27 |
EP3370167A1 (en) | 2018-09-05 |
WO2017128701A1 (zh) | 2017-08-03 |
EP3370167A4 (en) | 2018-10-31 |
US11030178B2 (en) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740405B (zh) | 存储数据的方法和装置 | |
US20180107725A1 (en) | Data Storage Method and Apparatus, and Data Read Method and Apparatus | |
US20170170968A1 (en) | Method and apparatus for generating two-dimensional matrix, and method and apparatus for querying key value element | |
CN107515878B (zh) | 一种数据索引的管理方法及装置 | |
CN108846753B (zh) | 用于处理数据的方法和装置 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
US8838550B1 (en) | Readable text-based compression of resource identifiers | |
CN110427386B (zh) | 数据处理方法、装置及计算机存储介质 | |
CN112800287B (zh) | 基于图数据库的全文索引方法和系统 | |
CN112527433A (zh) | 页面弹窗控制方法、装置、计算机设备和存储介质 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
CN115023697A (zh) | 数据查询方法、装置及服务器 | |
CN111737564A (zh) | 一种信息查询方法、装置、设备及介质 | |
CN109753424B (zh) | Ab测试的方法和装置 | |
CN111625600B (zh) | 数据存储的处理方法、系统、计算机设备及存储介质 | |
CN107451154B (zh) | 一种数据表的处理方法、装置及系统 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
CN113342813B (zh) | 键值数据处理方法、装置、计算机设备及可读存储介质 | |
CN113486025B (zh) | 数据存储方法、数据查询方法及装置 | |
CN106156169B (zh) | 离散数据的处理方法和装置 | |
CN114595215A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110515979B (zh) | 数据查询方法、装置、设备和存储介质 | |
CN113761300A (zh) | 基于位图计算的报文采样方法、装置、设备和介质 | |
CN112699149A (zh) | 目标数据获取方法、装置和存储介质及电子装置 | |
CN110609766A (zh) | 一种基于Redis协议的KV数据存储方法及装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220214 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |