CN109800336B - 基于键值对存储系统的表格实现方法、装置、设备和介质 - Google Patents
基于键值对存储系统的表格实现方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN109800336B CN109800336B CN201910093217.4A CN201910093217A CN109800336B CN 109800336 B CN109800336 B CN 109800336B CN 201910093217 A CN201910093217 A CN 201910093217A CN 109800336 B CN109800336 B CN 109800336B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- index
- value
- row
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于键值对存储系统的表格实现方法、装置、设备和介质。该方法包括:获取应用层传输的表格数据处理请求;根据所述表格数据处理请求,确定待处理行数据的键标识,其中,所述键标识为所述待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,其中,所述行数据键值对的键域用于存储所述键标识,所述行数据键值对的值域用于存储行数据的数值。采用本发明实施例的技术方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式。
Description
技术领域
本发明实施例涉及数据存储技术领域,尤其涉及一种基于键值对存储系统的表格实现方法、装置、设备和介质。
背景技术
目前的区块链系统所采用的底层数据存储技术有多种,其中比较广泛采用的一种就是键值对(Key Value,简称KV)存储系统。KV存储系统在区块链系统应用层的控制下,支持区块链系统的数据读写等访问处理。
在KV存储系统中,会使用到很多键值对分别存储区块链系统所需存储的各种数据。但是,受限于KV存储系统的数据存储结构,无法为应用层日益丰富的存储需求提供有效支持。典型的是,目前人们都比较习惯使用表格形式来管理数据,但是KV存储系统无法支持表格的管理方式。
发明内容
本发明实施例提供了一种基于键值对存储系统的表格实现方法、装置、设备和介质,从而通过KV存储系统来支持区块链中的表格的管理方式。
第一方面,本发明实施例提供了一种基于键值对存储系统的表格实现方法,该方法包括:
获取应用层传输的表格数据处理请求;
根据所述表格数据处理请求,确定待处理行数据的键标识,其中,所述键标识为所述待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;
根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,其中,所述行数据键值对的键域用于存储所述键标识,所述行数据键值对的值域用于存储行数据的数值。
第二方面,本发明实施例提供了一种基于键值对存储系统的表格实现装置,装置包括:
处理请求获取模块,用于获取应用层传输的表格数据处理请求;
键标识确定模块,用于根据所述表格数据处理请求,确定待处理行数据的键标识,其中,所述键标识为所述待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;
数据处理模块,用于根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,其中,所述行数据键值对的键域用于存储所述键标识,所述行数据键值对的值域用于存储行数据的数值。
第三方面,本发明实施例提供了一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的基于键值对存储系统的表格实现方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的基于键值对存储系统的表格实现方法。
本发明实施例提供的基于键值对存储系统的表格实现方法、装置、设备和介质,在获取到应用层传输的表格数据处理请求后,可以根表格据数据处理请求将待处理行数据中至少一列的数值确定为键标识;而后依据该键标识确定对应的行数据键值对,进而依据表格数据处理请求中指定的处理方式,对该行数据键值对中的数值进行处理。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持。
附图说明
图1为本发明实施例一提供的一种基于键值对存储系统的表格实现方法的流程图;
图2A为本发明实施例二提供的一种基于键值对存储系统的表格实现方法的流程图;
图2B为本发明实施例二提供的一种索引结构示意图;
图3为本发明实施例三提供的一种基于键值对存储系统的表格实现方法的流程图;
图4为本发明实施例四提供的一种基于键值对存储系统的表格实现方法的流程图;
图5为本发明实施例五提供的一种基于键值对存储系统的表格实现方法的流程图;
图6为本发明实施例六提供的一种基于键值对存储系统的表格实现方法的流程图;
图7为本发明实施例七提供的一种基于键值对存储系统的表格实现方法的流程图;
图8为本发明实施例八提供的一种基于键值对存储系统的表格实现装置的结构示意图;
图9为本发明实施例九提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例可适用于如何将表格数据转换为适用于键值对存储系统,以为应用层对于表格形式的数据存储需求提供支持的情况,尤其适用于在区块链的底层存储系统包括键值对存储系统基础上,如何对实现表格数据的管理的场景。
下述实施例将以区块链系统中的表格数据转换为键值对为例进行说明。其中,所谓的表格就是具备行列的一种数据结构,典型的例子就是excel表格。一个表格可包括至少一行的行数据,行数据按照表格设定的各列,又包括各列的具体数值。
该方法可由基于键值对存储系统的表格实现装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于承载计算设备中,特别是作为区块链节点的计算设备中。参见图1,该方法具体包括:
S110,获取应用层传输的表格数据处理请求。
本实施例中,应用层可以是实现任何功能的软件,需产生各种数据处理请求。优选是,应用层为实现区块链节点功能的软件,具体可以包括用于支撑区块链节点本地区块链正常运行所需部署的软件,如可以包括虚拟机以及其他与区块链相关的应用软件等;区块链应用层的软件主要功能是产生事务请求,事务请求的执行过程会产生数据处理请求。
表格数据处理请求是应用层向底层存储系统所传输的,用于请求其将表格形式的数据转换为键值对数据存储形式,并对转换后的键值对进行处理;本实施例中,底层存储系统至少包括键值对存储系统,可选的,可以包括逻辑层和键值对存储系统;逻辑层用于将应用层传输的表格数据处理请求映射为基于键值对存储系统的数据存储结构,键值对存储系统用于存储键值对,并对键值对进行处理等;逻辑层和键值对存储系统相互配合,进而实现将表格数据转换为键值对数据存储形式,并存储。
表格数据处理请求具体可以为区块链应用层在执行事务请求过程中所产生的,用于请求底层存储系统将表格数据处理请求转换为其所能够识别并处理的键值对形式。表格数据处理请求中可以至少包括待处理的行数据,以及任何控制或管理行数据的操作请求,例如行数据的读出、写入、修改、删除或查询等操作请求。
具体的,区块链节点本地需要进行表格数据处理需求时,可以通过多种方式产生表格数据处理请求。例如,可以通过区块链应用层中的可视化表格系统,如excel,产生用于操作表格的表格数据事务请求,区块链应用层在执行表格数据事务请求的过程中产生一个或多个表格数据处理请求,并向底层存储系统传输;底层存储系统获取区块链应用层的表格数据处理请求。当然,也可以通过其他手段在区块链应用层发起表格数据处理请求,本实施例对此不做限定。
S120,根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列。
本实施例中,在底层存储系统包括键值对存储系统的情况下,对于表格而言,底层存储系统可以将表格数据转化为行数据键值对进行存储。
底层存储系统可以根据应用层的配置将表格数据转化为行数据键值对进行存储。其中,表格中的每一行对应一个行数据键值对,行数据键值对包括键域和值域,行数据键值对的键域用于存储键标识;可选的,可以将表格行数据中设定列作为键标识列,将键标识列的数值作为键标识,其中设定列是由应用层根据实际需求或用户需求所指定的任意一列或多列的组合,且设定列的数值具备唯一性。行数据键值对的值域用于存储行数据的数值,可选的,行数据键值对中存储的行数据的数值可以为行数据中各列的数值,也可以为行数据中除键标识列之外各列的数值。
可选的,表格数据处理请求中可以包括表格行数据中设定列的标识,如设定列的名称,或设定列在表格中的位置,如第一列等。例如,表1为一个4行5列的表格,其中,第一行为表头行,第二行至第四行为数据行;若应用层指定的设定列为name和phone,且组合形式为(name,phone),则表1中第二行至第四行各行数据的键标识分别为(张三,1111)、(李四,2222)和(王五,3333)。对于第二行数据对应的行数据键值对可表示为表2所示的形式。
表1
id | name | phone | nickname | hobby |
1 | 张三 | 1111 | 伊丽莎白 | 篮球 |
2 | 李四 | 2222 | 尼古拉斯 | 跳绳 |
3 | 王五 | 3333 | 尼古拉斯 | 跳绳 |
表2行数据键值对
此外,对于同一表格中不同行数据的行数据键值对,在底层存储系统中可能是非连续存储的,也可能是连续存储的。
具体的,在获取应用层传输的表格数据处理请求后,可以根据表格数据处理请求确定待处理行数据的键标识。可选的,对行数据的处理方式不同即表格数据处理请求不同,确定待处理行数据键标识的方式不同。例如,若表格数据处理请求为行数据写入请求,则可以从行数据写入请求中获取设定列,而后将设定列作为键标识列,将键标识列的数值作为待处理行数据的键标识。下述实施例将详细介绍不同表格数据处理请求确定待处理行数据键标识的方式。
S130,根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
具体的,在确定待处理行数据的键标识后,可以依据键标识定位至对应行数据键值对存储位置处,而后依据表格数据处理请求指定的处理方式对该行数据键值对中的数值进行处理。例如,表格数据处理请求为行数据读出请求,则可以从该行数据键值对的值域中读出数值,作为行数据反馈至应用层。
可选的,底层存储系统根据应用层的配置将表格数据转化为行数据键值对进行存储,也可以为,底层存储系统中的逻辑层将表格转换为地址键值对,物理层用于存储行数据键值对。其中,地址键值对的结构与行数据键值对相同,地址键值对的键域存储行数据键值对的键标识,值域存储有行数据键值对在物理层的地址。
因此,在确定待处理行数据的键标识后,可以依据键标识查找地址键值对,确定对应行数据键值对的存储位置;而后依据存储位置定位至该行数据键值对的位置处,进而依据表格数据处理请求指定的处理方式对该行数据键值对中的数值进行处理。
本发明实施例提供的技术方案,在获取到应用层传输的表格数据处理请求后,可以根据表格据数据处理请求将待处理行数据中至少一列的数值确定为键标识;而后依据该键标识确定对应的行数据键值对,进而依据表格数据处理请求中指定的处理方式,对该行数据键值对中的数值进行处理。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持。
实施例二
图2A为本发明实施例二提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上引入索引,进一步的优化。参见图2A,该方法具体包括:
S210,获取应用层传输的表格数据处理请求。
S220,根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列。
S230,根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
S240,从应用层获取针对行数据的索引管理请求。
本实施例中,为了便于快速向应用层反馈行数据处理结果,如在表格数据处理请求为行数据查询请求时,为了便于快速向应用层反馈查询结果,底层存储系统可以根据应用层传输的针对行数据的索引管理请求设置索引。索引管理请求是指应用层传输的,用于请求底层存储系统构建行数据的索引,并对所构建的索引进行管理;或者是用于请求底层存储系统对已有索引进行管理如修改、删除索引等。
具体的,应用层在确定产生针对行数据的索引管理需求时,可以向底层存储系统传输针对行数据的索引管理请求。
S250,从索引管理请求中确定待管理的索引列。
可选的,索引管理请求中可以包括待管理的索引列的标识,如可以是索引列的名称,或者是索引列在表格中的位置,如第三列等;且索引列的个数可以为一个或多个。
具体的,在从应用层获取到针对行数据的索引管理请求后,可以从索引管理请求中获取待管理的索引列的标识,而后依据待管理的索引列的标识确定待管理的索引列。以表1为例进行说明,若从应用层获取的针对行数据的索引请求中包括(nickname,hobby),则可以将nickname和hobby所在的列确定为索引列。
可选的,任一行数据的索引可以由该行数据中任意一列或多列构成。示例性的,任一行数据可以包括一个或多个索引;每个索引包括一个或多个索引列;每个行数据的多个索引各自的索引列重叠或不重叠。
以表1为例进行说明。索引可以由任意一列或多列构成,例如可以为id、name、phone、nickname、hobby、(id,name)、或(name,nickname,hobby)等。若索引为(nickname,hobby)、id和(name,nickname,hobby),索引(nickname,hobby)和id各自的索引列不存在重叠;而索引(nickname,hobby)和(name,nickname,hobby)各自的索引列存在重叠,且重叠的索引列为nickname和hobby所在的列。
S260,将行数据的索引列中的数值作为索引值。
本实施例中,索引值为行数据的索引列中的数值。不同索引列所对应的索引值不同;对于给定的索引列,可确定至少一个索引值。例如,索引列为nickname和hobby所在的列,对应的,索引值为(伊丽莎白,篮球)和(尼古拉斯,跳绳)。此外,索引值可以不具备唯一性,也就是说,一个索引值可对应一行或多行数据;例如,索引值(尼古拉斯,跳绳)对应第三行和第四行数据。
具体的,在确定待管理的索引列之后,可以从行数据的索引列中获取数值,并将该数值作为索引值。
需要说明的是,与键标识列一样,索引列也由应用层设定,但是键标识列的数值(即键标识)需具备唯一性,而索引列的数值(即索引值)可以不具备唯一性。且本实施例设置索引,目的在于可快速查询获取多行数据;而键标识是用于唯一确定某一行数据。
S270,将索引值与行数据关联存储。
当索引被调整之后,通常表格行数据对应的索引关系也需要调整。具体的,可以是建立索引值与行数据的关联关系,并存储该关联关系;还可以是依据索引值构建索引键值对,将行数据存储到索引键值对中。
示例性的,将索引值与行数据关联存储可以包括:将索引值添加到索引键值对的键域,并将索引值关联的行数据的键标识记录到索引键值对的值域。其中,与行数据键值对的结构相同,索引键值对包括键域和值域,键域中可以用于存储键标识,键标识可以为索引值;值域可以用于存储索引值关联的行数据的键标识。一个索引值对应一个索引键值对,不同的索引值对应不同的索引键值对。
以表1为例进行说明。若索引值为(尼古拉斯,跳绳),索引键值对可以表示为表3所示的形式。
表3索引键值对
键标识(索引值) | (尼古拉斯,跳绳) |
值域 | {(李四,2222),(王五,3333)} |
具体的,在依据行数据的索引列中的数值确定索引值之后,可以依据索引值构建索引键值对,在索引键值对的键域中写入索引值,在索引键值对的值域中写入索引值关联的行数据的键标识。
本实施例中,针对每个索引值构建一个索引键值对,通过将该索引值关联的行数据的键标识记录在索引值对应的索引键值对的值域中,进而建立索引值与行数据之间的关联。这样在后续需获取或查询某一索引值所关联的所有行数据时,可依据索引值确定索引键值对,而后从该索引键值对的值域中可直接获取索引值关联的所有行数据的键标识;进而依据键标识即可快速获取行数据。本实施例通过设置索引键值对,能够快速进行表格行数据查询。
由于在表格数据量较大的情况下,可能会出现一个索引值关联的行数据的键标识较多,进而使依据该索引值构建的索引键值对的值域字节量过大。若该索引值所关联的行数据为应用层需频繁访问的数据,则会出现查询效率低下的现象。因此,为了便于快速进行表格行数据查询,可以将一个索引值所关联的行数据的键标识分块存储,即引入索引块。
其中,每个索引块所能够存储的数据容量可以相同,如100KB,若一个键标识大小为1KB,则一个索引块可存储100个键标识;可选的,索引块可以直接以索引块键值对的形式体现,即索引块键值对的键域存储索引块的键标识,值域存储行数据的键标识;也可以以值域中包括索引块键值对的存储单元的形式体现,例如索引块的值域可以包括索引块键值对区域,还可以包括权限区域或者其他区域等。对应的,索引键值对的值域中存储各索引块的键标识或地址,其中,索引块的键标识可以是索引块的个数,若一个索引块为第3块,该索引块的键标识可以为003;索引块的地址也可称为指针,用于指向索引块的存储位置。此外,为了便于查询,可以将各索引块以单向链表的形式串行连接,也就是说任一索引块的值域中可以存储前一索引块的键标识或地址。
需要说明的是,采用索引键值对存储索引值和各索引块的键标识或地址,采用索引块存储行数据的键标识,行数据键值对存储行数据的数值;相当于在索引值与行数据的键标识之间增加了一个聚合层,形成了一个具有4层索引的结构,如图2B所示。索引键值对的值域存储n个索引块的键标识或地址,且索引块之间以单链表的形式连接;索引块的值域存储行数据键值对的键标识K,行数据键值对的键标识K用于指向唯一的V。
在前述基础上,可选的,将索引值关联的行数据的键标识记录到索引键值对的值域可以包括:将索引值关联的多个行数据的键标识,分别存储到至少两个索引块中,并将索引块的键标识或地址,添加到索引键值对的值域中;其中,索引键值对的值域存储各个索引块的键标识或地址;每个索引块的值域中存储有前一索引块或后一索引块的键标识或地址。
具体的,在依据行数据的索引列中的数值确定索引值之后,可以依据索引值关联的行数据的键标识的数量以及每个索引块所能容纳的存储容量,将索引值关联的多个行数据的键标识顺序存储到至少两个索引块中。具体可以是,先在最后一个索引块中顺序存储索引值关联的多个行数据的键标识,在达到索引块的存储容量后,在倒数第二个索引块的值域中存储剩余索引值关联的行数据的键标识和最后一个索引块的键标识或地址,依次类推,直至将索引值关联的多个行数据的键标识全部存储在索引块中;还可以是先在最后一个索引块中顺序存储索引值关联的多个行数据的键标识,在达到索引块的存储容量后,新建一个索引块作为最后一个索引块,在该索引块的值域中存储剩余索引值关联的行数据键标识和原最后一个索引块的键标识或地址,依次类推,直至将索引值关联的多个行数据的键标识全部存储在索引块中;也可以是,依据索引值关联的行数据的键标识的数量以及每个索引块所能容纳的存储容量,确定所需索引块个数及每个索引块的起始存储键标识和终点存储键标识,而后将索引值关联的多个行数据的键标识并行存储至所确定的索引块中,同时依据单链表的形式在每一个索引块的值域中添加前一索引块或后一索引块的键标识或地址。
在将索引值关联的多个行数据的键标识,分别存储到至少两个索引块中后,可以将存储索引值关联的键标识的索引块的键标识或地址,添加到索引值对应的索引键值对的值域中,以便于后续快速查询。
需要说明的是,本实施例中构建索引的操作步骤S240至步骤S270,可在对表格数据进行处理操作的步骤S210至步骤S230之前或之后执行,也可单独执行,还可以同时执行等,本实施例提供了一种之后执行的方式,但对此并不做限定。
本发明实施例提供的技术方案,在从应用层获取针对行数据的索引管理请求后,可依据该索引管理请求确定待管理的索引列以及索引值,并将索引值与行数据进行关联存储,进而建立了行数据的索引。本方案,为表格数据设置索引提供了一种新思路,且通过设置索引,能够快速进行表格行数据查询。
实施例三
图3为本发明实施例三提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上,在底层存储系统采用实施例二的方式构建索引键值对,且引入索引块的情况下,当表格数据处理请求为行数据写入请求时,对索引的更新进行详细说明。参见图3,该方法具体包括:
S310,获取应用层传输的表格数据处理请求。
S320,根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列。
S330,根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
S340,若表格数据处理请求为行数据写入请求,则从行数据写入请求中确定索引列,将索引列的数值作为目标索引值。
本实施例中,行数据写入请求中可以包括所要写入的行数据的各列名称及各列的数值;且应用层也可通过设置不同的标识符来区别键标识列和索引列,或者,可以根据参数的传输顺序,设定行数据写入请求中特定参数(如第2个参数和第3个参数)作为键标识列,和(如第2个参数和第5个参数)作为索引列等。此外,应用层可默认各列之间的传输顺序为键标识列和索引列的组合顺序等。
例如,若行数据写入请求包括{FieldName:id,Value:4},{FieldName:name,Value:赵六},{FieldName:phone,Value:4444},{FieldName:nickname,Value:伊丽莎白},{FieldName:hobby,Value:篮球}等,且应用层预先指定写入请求中第2个参数和第5个参数所在列为键标识列,则可以将nickname和hobby所在列为索引列,且依据应用层指定的多列之间的组合方式,确定索引列的组合方式为(nickname,hobby);在确定索引列后,依据索引列从行数据写入请求中获取nickname索引列的数值为伊丽莎白;hobby索引列的数值为篮球;进而确定目标索引值为(伊丽莎白,篮球)。
具体的,若表格数据处理请求为行数据写入请求,则可以依据应用层的配置,从行数据写入请求中确定索引列,而后将索引列的数值为目标索引值。
S350,查询索引键值对中是否存在目标索引值;若不存在,则执行步骤S360;若存在,则执行步骤S370。
具体的,在确定目标索引值之后,可以依据目标索引值查询已有索引键值对,若存在已有索引键值对的键域中存储该目标索引值,则执行步骤S370的操作;若不存在,则执行步骤S360的操作。
S360,新建目标索引值的索引键值对。
例如,若目标索引值为(小六,篮球),且已有索引键值对的键域未存储有该索引值,则可以新建该目标索引值的索引键值对。具体可以以该目标索引值作为索引键值对的键标识,将该索引值关联的行数据的键标识存储在最后一个索引块中,并将该索引块的键标识或地址存储在索引键值对的值域中;或者,直接将该索引值关联的行数据的键标识存储在索引键值对的值域中。具体存储情况,可根据索引值关联的行数据的键标识的数量进行确定。可选的,本实施例中,优选采用具有索引块的情况,以便于后续存储或快速查询行数据。
S370,识别索引键值对的最后一个索引块的值域是否符合设定充满条件;如果否,则执行步骤S380;如果是,则执行步骤S390。
本实施例中,设定充满条件是指预先设定的一个索引块的值域所能存储键标识数量或数据容量的上限值,如100KB,若一个行数据的键标识大小为1KB,则一个索引块的值域可存储100个键标识。可选的,每个索引块所能够存储的键标识数量或数据容量可以相同。
具体的,若确定某一已有索引键值对的键域存储有目标索引值,则识别该索引键值对的最后一个索引块的值域是否符合设定充满条件,也就是说判断最后一个索引块的值域中存储行数据键标识的数量是否达到上限值,如果否,则执行步骤S380;如果是,则执行步骤S390。
S380,从行数据写入请求中确定键标识列的数值作为键标识,并将索引值关联的行数据的键标识添加到最后一个索引块键值对的值域中。
可选的,本实施例中,索引块可以直接以索引块键值对的形式体现。
具体的,在确定最后一个索引块的值域中存储行数据键标识的数量未达到上限值,也就是说最后一个索引块的值域不符合设定充满条件,则可以从数据写入请求中确定键标识列,并将键标识列的数值作为键标识;而后将与该索引值关联的行数据的键标识添加到最后一个索引块键值对的值域中。
S390,新建一个索引块键值对,更新为最后一个索引块键值对,将原最后一个索引块键值对的键标识或地址存储于更新后的最后一个索引块键值对中,将更新后的最后一个索引块键值对的键标识或地址添加到索引键值对的值域中;且将索引值关联的行数据的键标识添加到更新后的最后一个索引块键值对的值域中。
具体的,在确定最后一个索引块的值域中存储行数据键标识的数量达到上限值,也就是说最后一个索引块的值域符合设定充满条件,则可以新建一个索引键块键值对,并将新建的索引块键值对更新为最后一个索引块键值对;而后将更新后的最后一个索引块键值对的键标识或地址添加到索引键值对的值域中,且将原最后一个索引块键值对的键标识或地址添加到更新后的最后一个索引块键值对的值域中,并将将索引值关联的行数据的键标识添加到更新后的最后一个索引块键值对的值域中。
本发明实施例提供的技术方案,在底层存储系统存储有索引键值对,且引入索引块的情况下,若从应用层获取的表格数据处理请求为行数据写入请求,则可以依据行数据写入请求确定目标索引值,依据目标索引值查询索引键值对;并在不存在目标索引值对应的索引键值对的情况下,新建目标索引值的索引键值对;在存在目标索引值对应的索引键值对的情况下,依据索引键值对的最后一个索引块的值域是否符合设定充满条件,执行更新索引流程。本方案,提供了一种更新索引的新思路。
实施例四
图4为本发明实施例四提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上,在表格数据处理请求为行数据写入请求或行数据读出请求时,对根据表格数据处理请求,确定待处理行数据的键标识进行解释说明。参见图4,该方法具体包括:
S410,获取应用层传输的行数据写入请求或行数据读出请求。
S420,根据行数据写入请求或行数据读出请求,确定待处理行数据中的键标识列的数值作为键标识。
其中,键标识列可根据应用层的配置确定。对于表格数据处理请求为行数据写入请求或行数据读出请求,应用层配置的确定键标识列的方式可以包括如下方式:1)预先设定表格数据处理请求中特定参数(如第2个参数和第3个参数)作为键标识列;2)在键标识列的位置处插入标识符如时间戳或任意区别于其他列的符号;3)可默认表格数据处理请求中的特定参数所在列为键标识列等。此外,应用层还预先指定在键标识列为多列的情况下,各列之间的组合方式等。可选的,在键标识列为多列的情况下,键标识列之间的组合方式可以默认为行数据写入请求或行数据读出请求中参数的排列顺序。
以表1为例进行说明。若应用层确定在表1的基础上插入了一行新数据,则产生行数据写入请求,并传输至底层存储系统;底层存储系统获取应用层传输的行数据写入请求后,依据应用层配置的确定键标识列的方式,从行数据写入请求中确定键标识列;而后将键标识列的数值作为键标识。
例如,若行数据写入请求包括{FieldName:id,Value:4},{FieldName:name,Value:赵六},{FieldName:phone,Value:4444},{FieldName:nickname,Value:小六},{FieldName:hobby,Value:篮球}等,且应用层预先指定行数据写入请求中第2个参数和第3个参数所在列为键标识列,则可以将name和phone所在列为键标识列,且依据应用层指定的多列之间的组合方式,确定键标识列的组合方式为(name,phone);在确定键标识列后,依据键标识列从行数据写入请求中获取name键标识列的数值为赵六;phone键标识列的数值为4444;进而确定该行数据的键标识为(赵六,4444)。
本实施例中,若应用层确定已有表中任意一行数据发生了改变,则也会产生行数据写入请求,并传输至底层存储系统。例如,若表1中的第2行数据中的phone变为5555,则可以产生如下行数据写入请求:{FieldName:id,Value:1},{FieldName:name,Value:张三},{FieldName:phone,Value:5555},{FieldName:nickname,Value:伊丽莎白},{FieldName:hobby,Value:篮球}等。底层存储系统将采用与上述相同的方式确定该行数据的键标识,该行数据的键标识为(张三,5555)。
可选的,若应用层确定产生行数据读出需求,则产生行数据读出请求,并传输至底层存储系统;底层存储系统获取应用层传输的行数据读出请求后,则可以默认行数据读出请求中的参数列为键标识列,从行数据读出请求中确定键标识列;而后将键标识列的数值作为键标识。
例如,若行数据读出请求包括:{FieldName:name,Value:李四},{FieldName:phone,Value:2222},则可以默认将name和phone所在列作为键标识列;依据应用层指定的多列之间的组合方式,确定键标识列的组合方式为(name,phone);在确定键标识列后,依据键标识列从行数据写入请求中获取name键标识列的数值为李四;phone键标识列的数值为2222;进而确定该行数据的键标识为(李四,2222)。
S430,根据键标识确定对应的行数据键值对,并根据行数据写入请求或行数据读出请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
本发明实施例提供的技术方案,在获取到应用层传输的行数据写入请求或行数据读出请求后,可以从行数据写入请求或行数据读出请求中获取键标识列,并获取键标识列的数值作为键标识;而后依据该键标识确定对应的行数据键值对,进而依据行数据写入请求或行数据读出请求,对该行数据键值对中的数值进行处理。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持。
实施例五
图5为本发明实施例五提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上,在底层存储系统采用实施例二的方式构建索引键值对,且在表格数据处理请求为行数据查询请求时,对根据表格数据处理请求,确定待处理行数据的键标识进行解释说明。参见图5,该方法具体包括:
S510,获取应用层传输的行数据查询请求。
S520,从行数据查询请求中确定索引列的数值,作为待查询索引值。
本实施例中,待查询索引值是指本次查询所需的索引值。可选的,行数据查询请求中可以包括应用层设定的索引列、索引列信息(如索引列的名称和数值等)以及索引列的组合方式等。可选的,在索引列为多列的情况下,索引列之间的组合方式可以默认为行数据查询请求中参数的排列顺序。
以表1为例进行说明。若行数据查询请求中包括{FieldName:nickname,Value:尼古拉斯},{FieldName:hobby,Value:跳绳},则可以依据行数据查询请求,确定索引列为nickname和hobby;而后从行数据查询请求中确定索引列nickname的数值为尼古拉斯,索引列hobby的数值为跳绳;进而依据应用层指定的索引列之间的组合方式,将(尼古拉斯,跳绳)作为待查询索引值。
S530,根据待查询索引值查询获取对应的所有行数据键值对的键标识。
具体的,在确定待查询索引值之后,可以依据待查询索引值查询索引键值对,确定目标索引键值对;而后可直接从目标索引键值对中获取该索引值关联的所有行数据的键标识;或者,从目标索引键值对中获取索引块的键标识或地址,进而从索引块的值域中获取与该索引值关联的所有行数据的键标识,具体可以为从目标索引键值对中同时获取多个索引块的键标识或地址,并行从多个索引块中获取与该索引值关联的行数据的键标识;也可以是从目标索引键值对中获取最后一个索引块的键标识或地址,并从最后一个索引块中获取与该索引值关联的行数据的键标识,同时获取倒数第二个索引块的键标识或地址,而后从倒数第二个索引块中获取与该索引值关联的行数据的键标识,及倒数第三个索引块的键标识或地址,依次类推,直至获取到与该索引值关联的所有行数据的键标识。
S540,根据键标识确定对应的行数据键值对,并根据行数据查询请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
本发明实施例提供的技术方案,在获取到应用层传输的行数据查询请求后,可以从行数据查询请求中获取索引列,并将索引列的数值作为待查询索引值,依据待查询索引值查询索引键值对,即可获取到该索引值关联的所有行数据键值对的键标识;而后依据该键标识确定对应的行数据键值对,进而依据行数据查询请求,对该行数据键值对中的数值进行处理,即获取所有行数据并反馈至应用层。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持;同时,通过利用索引,可快速查询获取到多行数据。
实施例六
图6为本发明实施例六提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上,进一步对根据表格数据处理请求对行数据键值对中的数值进行处理进行解释说明。参见图6,该方法具体包括:
S610,获取应用层传输的表格数据处理请求。
S620,根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列。
S630,确定表格数据处理请求对行数据的处理方式。若表格数据处理请求为行数据写入请求,则执行步骤S640;若表格数据处理请求为行数据读出请求或行数据查询请求,则执行步骤S650。
S640,分配新行数据键值对作为目标行数据键值对,在目标行数据键值对的键域写入键标识,在目标行数据键值对的值域写入从行数据写入请求中确定的行数据的数值。
具体的,若表格数据处理请求为行数据写入请求,底层存储系统则可以分配新的行数据键值对作为目标行数据键值对,同时分配新的存储单元存储该目标行数据键值对;而后可以将依据行数据写入请求确定的键标识写入目标行数据键值对的键域,并从行数据写入请求中确定行数据的数值,写入目标行数据键值对的值域中。
例如,若行数据写入请求包括{FieldName:id,Value:4},{FieldName:name,Value:赵六},{FieldName:phone,Value:4444},{FieldName:nickname,Value:小六},{FieldName:hobby,Value:篮球}等,且采用步骤S620确定的键标识为(赵六,4444),则目标行数据键值对可以表示为表4所示的形式。
表4目标行数据键值对
需要说明的是,当需要对行数据进行写入处理时,通过新分配存储单元存储写入行数据,相比于在原存储单元的基础上进行上述操作,保留已有存储单元,便于后续基于键标识快速切换至之前的存储单元进行查看。
S650,根据键标识查询确定已有行数据键值对作为目标行数据键值对,将从目标行数据键值对值域中读出的数值,作为行数据进行反馈。
具体的,若表格数据处理请求为行数据读出请求或行数据查询请求,则可以采用步骤S620确定的键标识查询已有行数据键值对,并将查询到的已有行数据键值对确定为目标行数据键值对;而后将从目标行数据键值对的值域中读出的数值作为行数据,并反馈至应用层。
以表1为例进行说明。若行数据读出请求包括{FieldName:name,Value:李四},{FieldName:phone,Value:2222},且采用步骤S620确定的键标识为(李四,2222),则可以从依据键标识确定的已有行数据键值对得值域中,获取整行数据并反馈给应用层,如{FieldName:id,Value:2},{FieldName:name,Value:李四},{FieldName:phone,Value:2222},{FieldName:nickname,Value:尼古拉斯},{FieldName:hobby,Value:跳绳};还可以,只获取键标识之外的行数据中各列的数值并反馈。
需要说明的是,行数据查询请求和行数据读出请求,对行数据键值对中的数值处理操作相同,但是,行数据读出请求一次可以获取一行数据;而行数据查询请求主要用于一次可以获取多行数据。
本发明实施例提供的技术方案,在获取到应用层传输的表格数据处理请求后,基于表格数据处理请求所给定的行数据请求方式如行数据写入、行数据读出或行数据查询请求等,采用对应的处理策略确定待处理行数据的键标识及执行表格数据处理请求。尤其是,当需要对行数据进行写入处理时,通过新分配存储单元存储写入行数据,相比于在原存储单元的基础上进行上述操作,保留已有存储单元,便于后续基于键标识快速切换至之前的存储单元进行查看。
实施例七
图7为本发明实施例七提供的一种基于键值对存储系统的表格实现方法的流程图,本实施例在上述实施例的基础上,进一步的优化。参见图7,该方法具体包括:
S710,区块链应用层根据表格数据智能合约,产生表格数据事务请求,向区块链网络发起,以请求区块链节点执行表格数据事务请求,对目标数据进行处理,其中,表格数据事务请求在执行过程中产生表格数据处理请求。
本实施例中,表格数据事务请求是指数据形式为表格数据的事务请求;智能合约是指基于插件机制所编写的可供区块链网络中的节点调用并执行的代码段,一个智能合约的执行可实现至少一种功能或处理一类事务请求。表格数据智能合约是智能合约中的一种,可专门用于产生表格数据事务请求。其中,目标数据为表格形式的数据,具体可以为待处理行数据。
具体的,区块链节点本地具有表格数据处理需求时,可以通过区块链应用层调用表格数据智能合约;区块链应用层将目标数据等作为表格数据智能合约的参数,产生表格数据事务请求,并将该表格数据事务请求传输至区块链网络。区块链网络中的区块链节点获取到该表格数据事务请求后,可以通过本地区块链应用层执行该表格数据事务请求,且在执行该表格数据事务请求的过程中产生用于操作表格数据的表格数据处理请求,向底层存储系统传输;底层存储系统获取区块链应用层传输的表格数据处理请求,并对该表格数据处理请求进行处理。由此,区块链应用层可支持的智能合约数据存储形式将更加丰富。
S720,获取应用层传输的表格数据处理请求。
S730,根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列。
S740,根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
本发明实施例提供的技术方案,在获取到应用层传输的表格数据处理请求后,可以根据表格据数据处理请求将待处理行数据中至少一列的数值确定为键标识;而后依据该键标识确定对应的行数据键值对,进而依据表格数据处理请求中指定的处理方式,对该行数据键值对中的数值进行处理。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持。
实施例八
图8为本发明实施例八提供的一种基于键值对存储系统的表格实现装置的结构示意图,该装置可配置于计算设备中,特别是作为区块链节点的计算设备中,可执行本发明任意实施例所提供的基于键值对存储系统的表格实现方法,具备执行方法相应的功能模块和有益效果。如图8所示,该装置包括:
处理请求获取模块810,用于获取应用层传输的表格数据处理请求;
键标识确定模块820,用于根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;
数据处理模块830,用于根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
本发明实施例提供的技术方案,在获取到应用层传输的表格数据处理请求后,可以根据表格据数据处理请求将待处理行数据中至少一列的数值确定为键标识;而后依据该键标识确定对应的行数据键值对,进而依据表格数据处理请求中指定的处理方式,对该行数据键值对中的数值进行处理。本方案,能够在区块链的键值对存储系统基础上,实现表格的数据管理方式,为表格数据的快速查找、读取、写入等管理操作提供了依据,也为区块链应用层对于表格形式的数据存储需求提供了支持。
示例性的,上述装置还可以包括:
管理请求获取模块,用于从应用层获取针对行数据的索引管理请求;
索引列确定模块,用于从索引管理请求中确定待管理的索引列;
索引值确定模块,用于将行数据的索引列中的数值作为索引值;
关联存储模块,用于将索引值与行数据关联存储。
示例性的,任一行数据包括一个或多个索引;每个索引包括一个或多个索引列;每个行数据的多个索引各自的索引列重叠或不重叠。
示例性的,关联存储模块具体可以用于:
将索引值添加到索引键值对的键域,并将索引值关联的行数据的键标识记录到索引键值对的值域。
示例性的,关联存储模块在将索引值关联的行数据的键标识记录到索引键值对的值域时,具体可以用于:
将索引值关联的多个行数据的键标识,分别存储到至少两个索引块中,并将索引块的键标识或地址,添加到索引键值对的值域中;
其中,索引键值对的值域存储各个索引块的键标识或地址;每个索引块的值域中存储有前一索引块或后一索引块的键标识或地址。
示例性的,上述装置还可以包括:索引更新模块,若表格数据处理请求为行数据写入请求,则索引更新模块具体可以用于:
从行数据写入请求中确定索引列,将索引列的数值作为目标索引值;
查询索引键值对中是否存在目标索引值,若不存在,则新建目标索引值的索引键值对;若存在,识别索引键值对的最后一个索引块的值域是否符合设定充满条件;
如果否,则从行数据写入请求中确定键标识列的数值作为键标识,并将索引值关联的行数据的键标识添加到最后一个索引块键值对的值域中;
如果是,则新建一个索引块键值对,更新为最后一个索引块键值对,将原最后一个索引块键值对的键标识或地址存储于更新后的最后一个索引块键值对中,将更新后的最后一个索引块键值对的键标识或地址添加到索引键值对的值域中;且将索引值关联的行数据的键标识添加到更新后的最后一个索引块键值对的值域中。
示例性的,若表格数据处理请求为行数据写入请求或行数据读出请求,则键标识确定模块820具体可以用于:
根据行数据写入请求或行数据读出请求,确定待处理行数据中的键标识列的数值作为键标识。
示例性的,若表格数据处理请求为行数据查询请求,则键标识确定模块820具体可以用于:
从行数据查询请求中确定索引列的数值,作为待查询索引值;
根据待查询索引值查询获取对应的所有行数据键值对的键标识。
示例性的,数据处理模块830具体可以用于:
若表格数据处理请求为行数据写入请求,则分配新行数据键值对作为目标行数据键值对,在目标行数据键值对的键域写入所述键标识,在目标行数据键值对的值域写入从行数据写入请求中确定的行数据的数值;
若表格数据处理请求为行数据读出请求或行数据查询请求,则根据键标识查询确定已有行数据键值对作为目标行数据键值对,将从目标行数据键值对值域中读出的数值,作为行数据进行反馈。
示例性的,上述装置还可以包括:
事务请求发起模块,用于获取应用层传输的表格数据处理请求之前,区块链应用层根据表格数据智能合约,产生表格数据事务请求,向区块链网络发起,以请求区块链节点执行表格数据事务请求,对目标数据进行处理,其中,表格数据事务请求在执行过程中产生表格数据处理请求。
实施例九
图9为本发明实施例九提供的一种设备的结构示意图,图9示出了适于用来实现本发明实施例实施方式的示例性设备的框图。图9显示的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型可以是计算设备,也可以是承担区块链网络节点功能的计算设备。
如图9所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器16,系统存储器28,连接不同系统组件(包括系统存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于键值对存储系统的表格实现方法。
实施例十
本发明实施例十还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行一种基于键值对存储系统的表格实现方法,该方法包括:
获取应用层传输的表格数据处理请求;
根据表格数据处理请求,确定待处理行数据的键标识,其中,键标识为待处理行数据中至少一列的数值,对应键标识的列作为行数据的键标识列;
根据键标识确定对应的行数据键值对,并根据表格数据处理请求对行数据键值对中的数值进行处理,其中,行数据键值对的键域用于存储键标识,行数据键值对的值域用于存储行数据的数值。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (12)
1.一种基于键值对存储系统的表格实现方法,其特征在于,包括:
区块链应用层根据表格数据智能合约,产生表格数据事务请求,向区块链网络发起,以请求区块链节点执行所述表格数据事务请求,对目标数据进行处理,其中,所述表格数据事务请求在执行过程中产生所述表格数据处理请求;
获取应用层传输的表格数据处理请求;
根据所述表格数据处理请求,确定待处理行数据的键标识,其中,所述键标识为所述待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;
根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,其中,所述行数据键值对的键域用于存储所述键标识,所述行数据键值对的值域用于存储行数据的数值。
2.根据权利要求1所述的方法,其特征在于,还包括:
从应用层获取针对行数据的索引管理请求;
从所述索引管理请求中确定待管理的索引列;
将所述行数据的索引列中的数值作为索引值;
将所述索引值与所述行数据关联存储。
3.根据权利要求2所述的方法,其特征在于:
任一行数据包括一个或多个索引;每个索引包括一个或多个索引列;每个行数据的多个索引各自的索引列重叠或不重叠。
4.根据权利要求2所述的方法,其特征在于,将所述索引值与所述行数据关联存储,包括:
将所述索引值添加到索引键值对的键域,并将所述索引值关联的行数据的键标识记录到所述索引键值对的值域。
5.根据权利要求4所述的方法,其特征在于,将所述索引值关联的行数据的键标识记录到所述索引键值对的值域,包括:
将所述索引值关联的多个行数据的键标识,分别存储到至少两个索引块中,并将所述索引块的键标识或地址,添加到所述索引键值对的值域中;
其中,索引键值对的值域存储各个索引块的键标识或地址;每个索引块的值域中存储有前一索引块或后一索引块的键标识或地址。
6.根据权利要求5所述的方法,其特征在于,若所述表格数据处理请求为行数据写入请求,则还包括:
从所述行数据写入请求中确定索引列,将所述索引列的数值作为目标索引值;
查询索引键值对中是否存在所述目标索引值,若不存在,则新建所述目标索引值的索引键值对;若存在,识别所述索引键值对的最后一个索引块的值域是否符合设定充满条件;
如果否,则从所述行数据写入请求中确定键标识列的数值作为键标识,并将所述索引值关联的行数据的键标识添加到最后一个索引块键值对的值域中;
如果是,则新建一个索引块键值对,更新为最后一个索引块键值对,将原最后一个索引块键值对的键标识或地址存储于更新后的最后一个索引块键值对中,将更新后的最后一个索引块键值对的键标识或地址添加到索引键值对的值域中;且将所述索引值关联的行数据的键标识添加到更新后的最后一个索引块键值对的值域中。
7.根据权利要求1-6任一所述的方法,其特征在于,若所述表格数据处理请求为行数据写入请求或行数据读出请求,则根据所述表格数据处理请求,确定待处理行数据的键标识,包括:
根据所述行数据写入请求或行数据读出请求,确定所述待处理行数据中的键标识列的数值作为键标识。
8.根据权利要求2-6任一所述的方法,其特征在于,若所述表格数据处理请求为行数据查询请求,则根据所述表格数据处理请求,确定待处理行数据的键标识,包括:
从所述行数据查询请求中确定索引列的数值,作为待查询索引值;
根据所述待查询索引值查询获取对应的所有行数据键值对的键标识。
9.根据权利要求1-6任一所述的方法,其特征在于,根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,包括:
若所述表格数据处理请求为行数据写入请求,则分配新行数据键值对作为目标行数据键值对,在所述目标行数据键值对的键域写入所述键标识,在所述目标行数据键值对的值域写入从所述行数据写入请求中确定的行数据的数值;
若所述表格数据处理请求为行数据读出请求或行数据查询请求,则根据所述键标识查询确定已有行数据键值对作为目标行数据键值对,将从所述目标行数据键值对值域中读出的数值,作为行数据进行反馈。
10.一种基于键值对存储系统的表格实现装置,其特征在于,包括:
事务请求发起模块,用于区块链应用层根据表格数据智能合约,产生表格数据事务请求,向区块链网络发起,以请求区块链节点执行所述表格数据事务请求,对目标数据进行处理,其中,所述表格数据事务请求在执行过程中产生所述表格数据处理请求;
处理请求获取模块,用于获取应用层传输的表格数据处理请求;
键标识确定模块,用于根据所述表格数据处理请求,确定待处理行数据的键标识,其中,所述键标识为所述待处理行数据中至少一列的数值,对应键标识的列作为所述行数据的键标识列;
数据处理模块,用于根据所述键标识确定对应的行数据键值对,并根据所述表格数据处理请求对所述行数据键值对中的数值进行处理,其中,所述行数据键值对的键域用于存储所述键标识,所述行数据键值对的值域用于存储行数据的数值。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一项所述的基于键值对存储系统的表格实现方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述的基于键值对存储系统的表格实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910093217.4A CN109800336B (zh) | 2019-01-30 | 2019-01-30 | 基于键值对存储系统的表格实现方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910093217.4A CN109800336B (zh) | 2019-01-30 | 2019-01-30 | 基于键值对存储系统的表格实现方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800336A CN109800336A (zh) | 2019-05-24 |
CN109800336B true CN109800336B (zh) | 2020-12-25 |
Family
ID=66560568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910093217.4A Active CN109800336B (zh) | 2019-01-30 | 2019-01-30 | 基于键值对存储系统的表格实现方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800336B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347690B (zh) * | 2019-07-18 | 2022-08-09 | 网易(杭州)网络有限公司 | 一种计分板的数据索引方法和装置 |
CN111046074B (zh) * | 2019-12-13 | 2023-09-01 | 北京百度网讯科技有限公司 | 流式数据处理方法、装置、设备和介质 |
CN111476015B (zh) * | 2020-04-10 | 2024-01-05 | 北京字节跳动网络技术有限公司 | 一种文档处理方法、装置、电子设备及存储介质 |
CN112416932A (zh) * | 2020-11-18 | 2021-02-26 | 青岛海尔科技有限公司 | 建立字段关联关系的方法及装置 |
CN113609318B (zh) * | 2021-10-09 | 2022-03-22 | 北京海致星图科技有限公司 | 一种图数据处理方法、装置、电子设备以及存储介质 |
CN116089415A (zh) * | 2021-11-05 | 2023-05-09 | 中兴通讯股份有限公司 | 键-值存储的方法和设备、计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
CN109165194A (zh) * | 2018-08-13 | 2019-01-08 | 腾讯科技(深圳)有限公司 | 一种数据转存方法、装置、电子设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536958B (zh) * | 2014-09-26 | 2018-03-16 | 杭州华为数字技术有限公司 | 一种复合索引方法及装置 |
US11644992B2 (en) * | 2016-11-23 | 2023-05-09 | Samsung Electronics Co., Ltd. | Storage system performing data deduplication, method of operating storage system, and method of operating data processing system |
CN108460041B (zh) * | 2017-02-20 | 2022-12-23 | 腾讯科技(深圳)有限公司 | 数据的处理方法和装置 |
US10776363B2 (en) * | 2017-06-29 | 2020-09-15 | Oracle International Corporation | Efficient data retrieval based on aggregate characteristics of composite tables |
US10678768B2 (en) * | 2017-06-30 | 2020-06-09 | Intel Corporation | Logical band-based key-value storage structure |
CN108829740B (zh) * | 2018-05-23 | 2021-11-02 | 摇了购(武汉)电子商务有限公司 | 数据存储方法和装置 |
CN109241032B (zh) * | 2018-08-16 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 账本数据库组件、运行方法及存储介质 |
CN109246102B (zh) * | 2018-09-07 | 2021-02-09 | 公安部第一研究所 | 一种支撑大规模认证数据快速存储及检索的系统及方法 |
-
2019
- 2019-01-30 CN CN201910093217.4A patent/CN109800336B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
CN109165194A (zh) * | 2018-08-13 | 2019-01-08 | 腾讯科技(深圳)有限公司 | 一种数据转存方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109800336A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800336B (zh) | 基于键值对存储系统的表格实现方法、装置、设备和介质 | |
CN108961052B (zh) | 区块链数据的验证方法、存储方法、装置、设备和介质 | |
JP6074514B2 (ja) | 特徴情報の取得方法、装置、ネットワーク装置、プログラム及び記録媒体 | |
JP5466257B2 (ja) | 表検索方法 | |
CN110032459A (zh) | 消息队列配置方法、装置、计算机设备及存储介质 | |
KR20170123336A (ko) | 파일 조작 방법 및 장치 | |
US9940020B2 (en) | Memory management method, apparatus, and system | |
US20110149932A1 (en) | Zigbee gateway and message identification method of the same | |
US8903972B2 (en) | Method and apparatus for sharing contents using information of group change in content oriented network environment | |
CN107391277B (zh) | 信息处理方法和装置 | |
CN109522462B (zh) | 一种基于区块链的云查询方法、装置、设备及存储介质 | |
CN110427386B (zh) | 数据处理方法、装置及计算机存储介质 | |
WO2016000507A1 (zh) | 省流量模式搜索服务的方法、服务器、客户端和系统 | |
CN109101664B (zh) | 一种轻量级节点的数据传输方法、装置、设备和介质 | |
US20170289243A1 (en) | Domain name resolution method and electronic device | |
US11847091B2 (en) | Data transmission method and device for network on chip and electronic apparatus | |
CN103444152B (zh) | 一种信息操纵方法和系统 | |
CN113204345A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN112817899B (zh) | 基于pcie的数据传输方法、装置、存储介质和电子设备 | |
US8978048B2 (en) | Information processing system, control method, and non-transitory computer readable medium storing program | |
US11265807B2 (en) | Method for network sharing on a terminal, apparatus, air conditioner and storage medium | |
CN105491082A (zh) | 远程资源访问方法和交换设备 | |
CN105281944B (zh) | 网络协议地址的设定方法及服务管理系统 | |
CN105191419B (zh) | 使得设备能经由网络控制器或组拥有者来发现服务 | |
CN105052207B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |