一种数据存储与检索方法、系统、存储介质、处理终端与流程

文档序号:25605381发布日期:2021-06-25 13:29阅读:133来源:国知局
一种数据存储与检索方法、系统、存储介质、处理终端与流程

1.本发明属于数据存储与检索技术领域,尤其涉及一种数据存储与检索方法、系统、存储介质、处理终端。


背景技术:

2.目前,最近几年,随着比特币和以太坊等加密货币系统的成功,区块链作为其核心技术受到了越来越广泛的关注。作为一种分布式账本技术,区块链具有去中心化、不可篡改、安全可信、数据公开透明等特点,区块链技术在金融基础设施、医疗行业、物联网、版权存证、供应链管理等领域已经有了广泛的应用。区块链本质上是一个分布式账本,由相互不信任的节点组成的网络共同维护。通过使用散列函数和共识协议等密码学算法,保证了数据存储在区块链中是不可篡改的。
3.区块链具有安全可信、不可篡改等非常强大的特性,在各个行业中往往都是用区块链存储大量有价值的数据,对数据进行实时地搜索是经常被使用到的,同时用户可能会搜索自己感兴趣的数据,希望通过关键字进行检索数据,所以语义检索也是经常要被使用的。但是区块链上的数据通过键值对的形式进行存储的,在以往的区块链上,用户只能通过数据的哈希值来查找对应的数据,而无法通过关键字来对数据进行检索。同时区块链只是一个追加的数据结构,区块之间通过哈希指针进行连接,数据上下文之间没有其他的对应关系,检索某一个数据时,必须要依次遍历区块链上的全部数据。检索效率低,耗时长。
4.通过上述分析,现有技术存在的问题及缺陷为:现有检索方法检索效率低,耗时长。
5.解决以上问题及缺陷的难度为:在传统区块链中进行实时搜索主要存在以下两点挑战:
6.(1)区块链上的数据通过键值对的形式进行存储的,在区块链上用户只能通过哈希值来查找对应的数据,而无法通过关键字来对数据进行检索。
7.(2)区块链是一个追加的数据结构,区块之间通过哈希指针进行连接,数据上下文之间没有其他的对应关系,检索某一个数据时,必须要依次遍历区块链上的全部数据。检索效率低,耗时长。
8.解决以上问题及缺陷的意义为:解决以上问题后,对于区块链中数据检索的效率将会有极大的提高,同时也丰富了区块链中的语义检索,而不仅仅只是通过哈希值检索数据。最后,以上问题的解决也将会进一步的拓展区块链在非交易场景中的应用。


技术实现要素:

9.针对现有技术存在的问题,本发明提供了一种数据存储与检索方法、系统、存储介质、处理终端。
10.本发明是这样实现的,一种数据存储与检索方法,所述数据存储与检索方法包括:
11.步骤一,将数据在链下进行预处理,提取得到待检索的属性标签;通过节点本地的
ldsl进行区块链节点二次处理;该步骤在方案中起到的积极作用:对数据进行预处理,为步骤二做数据支撑。
12.步骤二,构建包含数据存储区和数据索引区的区块内容并发布广播;该步骤在方案中起到的积极作用:该步骤是存储的核心,通过将数据建立索引,并将索引与区块链上以及保存的数据建立联系,最终所有数据将以网状拓扑进行相连。
13.步骤三,提取用户的检索语句,通过节点本地的ldsl获取到链上数据最新的位置;该步骤在方案中起到的积极作用:通过该步骤,可以直接定位到区块链中想要检索数据的最新的区块位置。
14.步骤四,通过区块体中的数据索引区中的倒排索引找寻数据的具体位置;通过其中存储的属性标签的上一个区块的位置跳转到相应的位置;通过数据索引区中的倒排索引获取数据具体位置;该步骤在方案中起到的积极作用:说明了如何快速在区块的大量数据中定位想要的数据,以及如何递进到下一个区块中。
15.步骤五,重复步骤三至步骤四,直至属性标签的上一个区块的位置为空,返回所有数据,即可得检索结果。该步骤在方案中起到的积极作用:说明了获取检索结果的操作步骤。
16.进一步,步骤一中,所述进行区块链节点二次处理包括:
17.(1)将数据以及属性标签上传到区块链节点中;
18.(2)节点对数据进行二次处理;同时区块链通过本地的ldsl获取链上最新的存储位置;并且将它们合并在一起;得到数据、属性标签以及链上最新的存储位置。
19.进一步,所述节点对数据进行二次处理包括:区块链通过本地的ldsl判断区块链中之前是否存储过属性标签tag相关的数据,如果存储过,将其最新的位置获取出来,并赋值给previous tag location;若没有存储过,将previous tag location设置为null。
20.进一步,步骤二中,所述进行构建包含数据存储区和数据索引区的区块内容并发布广播包括:
21.(1)构建区块体内容,将区块广播到区块链中;
22.(2)当区块经过共识后,将ldsl中相关的属性标签的值设置为返回的块高,更新节点本地的ldsl。
23.进一步,所述构建区块体内容包括:
24.将所有的数据按照一定的结构进行填写,并将所有数据存储于数据存放区;通过数据存放区中的数据中的标签组生成相应的数据索引,生成数据索引的方法是,对标签组中的各个标签进行倒排索引处理,即可得到区块体。
25.进一步,所述区块体包括:
26.数据存放区data storage和数据索引区data index;
27.所述数据存放区data storage用于存放数据;所述数据存放区中包含多个数据集;所述每个数据集均包含有属性标签组tags、原数据data,以及所处data storage中的顺序order;
28.所述数据索引区data index用于存放索引结构;所述数据索引区包含多个索引集index set;所述每个索引集都为数据集中的属性标签对应的倒排索引;同时每个索引集均包含属性标签名称、对应的数据集的order、以及相应属性标签上一个存储区块的位置
previous tag location。
29.进一步,所述将区块广播到区块链中包括:将整个区块打包发布,通过区块链共识,生成区块链的最新块。
30.本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
31.将数据在链下进行预处理,提取得到待检索的属性标签;通过区块链节点本地的ldsl进行区块链节点二次处理;构建包含数据存储区和数据索引区的区块内容并发布广播;
32.提取用户的检索语句,通过节点本地的ldsl获取到链上数据最新的位置;
33.通过区块体中的数据索引区中的倒排索引找寻数据的具体位置;通过其中存储的属性标签的上一个区块的位置跳转到相应的位置;通过数据索引区中的倒排索引获取数据具体位置;
34.重复提取用户的检索语句至通过区块体中的数据索引区中的倒排索引找寻数据的具体位置,直至属性标签的上一个区块的位置为空,返回所有数据,即可得检索结果。
35.本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述数据存储与检索方法,所述信息数据处理终端包括:金融基础设施的区块链终端、医疗行业的区块链终端、物联网的区块链终端、版权存证的区块链终端、供应链管理的区块链终端。
36.本发明的另一目的在于提供一种实施所述数据存储与检索方法的基数据存储与检索系统,所述基数据存储与检索系统包括:
37.数据存储模块,用于对数据进行预处理,通过修改区块链内部存储结构以及存储规则,将数据以网状拓扑结构进行存储;
38.数据检索模块,用于基于索引存储结构采用多种不同的检索模型进行分布式数据语义检索。
39.进一步,所述语义检索包括:多关键字检索、布尔检索以及其他语义检索。
40.结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明能够对链上的数据进行快速、高效的检索。
41.本发明是通过在数据之间建立索引,进而可以在区块链上进行分布式地快速、高效搜索的方法。通过对数据的预处理、修改区块链内部的存储结构等规则,来构成一个在区块链上可以进行高效、快速的检索,并且可以实现多种检索模式,如:多关键字,布尔查询等。其中提供了一种新式的索引存储结构的技术,数据存储后,最终将会形成一个网状拓扑结构,有相关联的数据就会相互连接。无需顺序遍历链上全部数据就可实现高效、快速的检索,同时链上的语义检索会更加丰富,而不是一个哈希值检索。
附图说明
42.为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
43.图1是本发明实施例提供的数据存储与检索方法流程图。
44.图2是本发明实施例提供的基于区块链的数据存储流程示意图。
45.图3是本发明实施例提供的基于区块链的数据检索流程示意图。
46.图4是本发明实施例提供的区块体的结构示意图。
47.图5是本发明实施例提供的基数据存储与检索系统结构示意图;
48.图中:1、数据存储模块;2、数据检索模块。
49.图6是本发明实施例提供的数据集的结构示意图。
50.图7是本发明实施例提供的数据索引集的结构示意图。
具体实施方式
51.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
52.针对现有技术存在的问题,本发明提供了一种数据存储与检索方法、系统、存储介质、处理终端,下面结合附图对本发明作详细的描述。
53.如图1至图3所示,本发明实施例提供的数据存储与检索方法包括以下步骤:
54.s101,将数据在链下进行预处理,提取得到待检索的属性标签;通过区块链节点本地的ldsl进行区块链节点二次处理;构建包含数据存储区和数据索引区的区块内容并发布广播;
55.s102,提取用户的检索语句,通过节点本地的ldsl获取到链上数据最新的位置;
56.s103,通过区块体中的数据索引区中的倒排索引找寻数据的具体位置;通过其中存储的属性标签的上一个区块的位置跳转到相应的位置;通过数据索引区中的倒排索引获取数据具体位置;
57.s104,重复步骤s102至步骤s103,直至属性标签的上一个区块的位置为空,返回所有数据,即可得检索结果。
58.本发明提供的数据存储与检索方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的数据存储与检索方法仅仅是一个具体实施例而已。
59.步骤s101中,本发明实施例提供的进行区块链节点二次处理包括:
60.(1)将数据以及属性标签上传到区块链节点中;
61.(2)节点对数据进行二次处理;同时区块链通过本地的ldsl获取链上最新的存储位置;并且将它们合并在一起;得到数据、属性标签以及链上最新的存储位置。
62.本发明实施例提供的节点对数据进行二次处理包括:区块链通过本地的ldsl判断区块链中之前是否存储过属性标签tag相关的数据,如果存储过,将其最新的位置获取出来,并赋值给previous tag location;若没有存储过,将previous tag location设置为null。
63.步骤s101中,本发明实施例提供的构建包含数据存储区和数据索引区的区块内容并发布广播包括:
64.(1)构建区块体内容,将区块广播到区块链中;
65.(2)当区块经过共识后,更新节点本地的ldsl,方法为:将ldsl中相关的属性标签
的值设置为返回的块高。
66.本发明实施例提供的构建区块体内容包括:
67.将所有的数据按照一定的结构进行填写,并将所有数据存储于数据存放区;通过数据存放区中的数据中的标签组生成相应的数据索引,生成数据索引的方法是,对标签组中的各个标签进行倒排索引处理,即可得到区块体。
68.如图4所示,本发明实施例提供的区块体包括:
69.数据存放区data storage和数据索引区data index;
70.所述数据存放区data storage用于存放数据;所述数据存放区中包含多个数据集;所述每个数据集均包含有属性标签组tags、原数据data,以及所处data storage中的顺序order;
71.所述数据索引区data index用于存放索引结构;所述数据索引区包含多个索引集index set;所述每个索引集都为数据集中的属性标签对应的倒排索引;同时每个索引集均包含属性标签名称、对应的数据集的order、以及相应属性标签上一个存储区块的位置previous tag location。
72.本发明实施例提供的将区块广播到区块链中包括:将整个区块打包发布,通过区块链共识,生成区块链的最新块。
73.如图5所示,本发明实施例提供的基数据存储与检索系统包括:
74.数据存储模块1,用于对数据进行预处理,通过修改区块链内部存储结构以及存储规则,将数据以网状拓扑结构进行存储;
75.数据检索模块2,用于基于索引存储结构采用多种不同的检索模型进行分布式数据语义检索。
76.本发明实施例提供的语义检索包括:多关键字检索、布尔检索以及其他语义检索。
77.下面结合具体实施例对本发明的技术方案作进一步描述。
78.实施例1:
79.本发明的提出的在区块链上的高效检索主要分为两大部分:数据存储和数据检索。
80.数据存储的流程主要如下:
81.第一阶段:链下数据预处理
82.将数据在链下预处理,提取出要检索的属性标签。
83.第二阶段:区块链节点二次处理
84.1、将数据以及属性标签上传到区块链节点中。
85.2、节点再对数据做二次处理。区块链会通过本地的ldsl(latest data storage location)获取链上最新的存储位置。并且将它们合并在一起。节点二次处理完后,最终将获得数据,属性标签,以及链上最新的存储位置。
86.第三阶段:构建区块体内容,然后将区块广播到区块链中
87.区块体中包含两部分,一部分是存放数据的数据存放区data storage,另一部分是存放索引结构的数据索引区data index。将所有的数据按照一定的结构进行填写,并将它们都放在数据存放区。然后,通过数据存放区中的数据中的标签组生成相应的数据索引,生成数据索引的方法是,对标签组中的各个标签进行倒排索引处理。
88.如此,就生成一个包含数据存放区和数据索引区的区块体。再然后,将整个区块打包发布,通过区块链共识,生成区块链的最新块。
89.第四阶段:更新节点本地的ldsl
90.当区块经过共识后,将ldsl中相关的属性标签的值设置为返回的块高。
91.补充说明:
92.区块中的数据存放区data storage和数据索引区data index一起构成了本发明的核心内容,data storage中包含了许多的数据集data set,每个数据集包含三个内容,属性标签组tags、原数据data,以及所处data storage中的顺序order。只需要通过order就可以找到区块中对应的data set。数据索引区data index中包含了许多的索引集index set,每个index set都是数据集中的属性标签对应的倒排索引。每个index set中也包含三个内容,属性标签名称、对应的数据集的order、以及该属性标签上一个存储区块的位置previous tag location。通过属性标签名,就可以非常快速的找到区块中对应的数据集以及该属性标签上一个区块存储的位置。
93.数据检索的流程主要如下:
94.1、提取用户的检索语句
95.2、通过节点本地的ldsl获取到链上数据最新的位置。
96.3、通过区块体中的数据索引区中的倒排索引找寻数据的具体位置,并且通过其中存储的属性标签的上一个区块的位置(previous_tag_location)直接跳转到相应的位置,再通过数据索引区中的倒排索引获取数据具体位置,以此往复,直到属性标签的上一个区块的位置为空时,返回所有数据,即用户所要的结果。
97.实施例2:
98.区块链是一个去中心化的分布式数据存储平台,有许多人往区块链中存储数据,也有许多人在区块链上检索数据。其中用户a想要将数据data存储到区块链上,用户b想要查询区块链上关于“name1”和“name2”的数据。而传统的区块链的检索效率相对较差(原因是需要遍历链上所有数据),同时只支持单个关键字查询。为了提高区块链链上的检索效率,同时可以支持多种语义查询的检索,提出了本发明。
99.存储数据的实施例具体流程如下:
100.步骤一:用户对数据data预处理,将数据data的希望被检索的一些属性标签提出来并合成标签组tags。
101.步骤二:用户将数据和属性标签组通过(data,tags)一起上传到区块链节点中,由区块链节点进行处理。
102.步骤三:区块链节点二次处理。首先,区块链会通过本地的ldsl判断区块链中之前是否存储过属性标签tag相关的数据,如果存储过,将其最新的位置获取出来,并赋值给previous tag location。若没有存储过,将previous tag location设置为null。节点处理完后,最终将获得三个值,data,tags,previous_tags_location(其中包含tags中的每个tag的latest data storage location)
103.步骤四:区块链节点对数据处理后,开始通过区块体结构构建区块体内容。如下图3所示,区块体中包含两部分,一部分是存放数据data的数据存储区data storage,另一部分是存放索引结构的数据索引区data index。首先通过数据data和属性标签组tags生成一
个数据集data set如图4所示。同时收集其他人上传的数据,并将这些也生成相应的data set。然后,对这些区块体中的数据集进行处理,通过对数据集中的属性标签进行倒排索引,生成相应的索引集index set如图5所示,并将之前获取到的previous tag location也存放其中,与属性标签名一一对用。
104.如此,就生成一个包含数据存储区和数据索引区的区块体。再然后,将整个区块打包发布,通过区块链共识,生成区块链的最新块。
105.步骤五:更新节点本地的ldsl。当区块经过共识后,会返回区块高度h,这时节点将会更新本地的ldsl,将ldsl中相应的tag标签的previous tag location的值设置为h。
106.该链可以实现的语义检索有:多关键字检索,布尔检索等具有相关性的检索操作。以下就是用多关键字检索为例介绍查询数据的实施例具体流程:
107.步骤一:用户提出想要检索的信息:name1 and name2。
108.步骤二:节点在本地的ldsl中分别获取到name1和name2的previous tag location为p1和p2。选取p1和p2中相对较小的值,假设p1最小。
109.步骤三:通过p1在区块链上找到对应的区块,然后通过区块体中的数据索引区index set中tag的倒排索引,就能找到相应的数据存储区中数据集的位置location_1、location_3以及上一个区块的位置previous tag location。然后查找location_1和location_3每个tag是否包含name2,如果包含这个data就是返回的结果之一。然后在通过倒排索引中找到的previous tag location再去寻找下一个区块,以此类推,直到previous tag location为null为止。这时,返回的所有[data,....]就是用户想要的结果。
[0110]
实施例3:
[0111]
以下就是用布尔查询为例介绍检索链上已经存储的数据的实施例具体流程:
[0112]
步骤一:用户提出想要检索的信息的语句:name1 or name2。
[0113]
步骤二:节点在本地的ldsl中分别获取到name1和name2的previous tag location为p1和p2。
[0114]
步骤三:通过p1在区块链上找到对应的区块,然后通过区块体中的数据索引区index set中tag的倒排索引,就能找到相应的数据存储区中数据集的位置location_1、location_3以及上一个区块的位置previous tag location。然后通过location_1和location_3定位到具体的数据data,该数据就是返回的结果之一。然后在通过倒排索引中找到的previous tag location再去寻找下一个区块,以此类推,直到previous tag location为null为止。这时,返回的所有[data,......]就是用户想要的结果之一。
[0115]
步骤四:同理将p2也按照p1的方式在区块链上搜寻一遍,得到[data’,......]。最后将p1和p2的数据相结合共同返回给用户。
[0116]
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,本发明的系统环境是ubuntu环境,本发明可以由go语言通过修改go

ethereum的部分源码进行实现,通过internal/ethapi文件夹中api.go文件、core/types文件夹中transaction.go文件等修改以太坊中的交易结构实现本发明中的区块体中内容。而查询功能则按照自己应用的需求,通过go

ethereum源码中internal/web3ext文件夹中web3ext.go文件、eth文件夹中api_backend.go文件等文件中部分代码的修改实现相应的
查询功能。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd

rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0117]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1