数据查询的装置、方法及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据查询的装置、方法及存储介质。
背景技术
在分布式网络中,每个节点上存储不同的数据,当某个节点查询分布式网络中其他节点的数据时,一般不希望暴露数据的提供方和查询方。面对这样的场景,目前业内的解决办法主要是通过一台中心服务器存储所有节点的地址,节点之间的数据共享都是通过这台中心服务器去转发。然而这种设计方案也有可能因为中心服务器被攻破而导致节点的地址泄露,并且这种方法运用在数据量大、网络节点多的场景下时,容易造成中心服务器较大压力甚至崩溃,影响正常使用。有鉴于此,在分布式网络中共享数据时,提供一种安全、在数据量大及网络节点多的场景下也适用的数据查询方法成为有待解决的问题。
发明内容
本发明的目的在于提供一种数据查询的装置、方法及存储介质,旨在提供一种安全、适用于数据量大及网络节点多的场景的数据查询方法。
为实现上述目的,本发明提供一种数据查询的装置,所述数据查询的装置包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:
在分布式网络中,当接收到其他主机发送的数据的查询消息后,获取该查询消息中的查询识别码及查询内容,若该查询识别码与预先记录的查询识别码不一致,则查询自身是否存储有该查询内容对应的数据;
若查询到自身未存储有该查询内容对应的数据,则获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发,并记录本次的查询识别码;
若查询到自身存储有该查询内容对应的数据,则将该查询识别码及查询到的数据生成查询结果,生成结果识别码,将该查询结果及该结果识别码生成结果消息,基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
优选地,所述处理系统被所述处理器执行时,还实现如下步骤:
当发起数据的查询后,查询自身是否存储有该查询内容对应的数据,若查询到自身未存储有该查询内容对应的数据,则生成查询识别码,基于该查询识别码及查询内容生成查询消息,获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发;
若查询到自身存储有该查询内容对应的数据,则结束执行步骤。
优选地,所述处理系统被所述处理器执行时,还实现如下步骤:
当接收到其他主机发送的结果消息后,若自身不是查询消息的发起方,则获取该结果消息中的结果识别码,若该结果识别码与预先记录的结果识别码不一致,则基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
优选地,所述处理系统被所述处理器执行时,还实现如下步骤:
当接收到其他主机发送的结果消息后,若自身是查询消息的发起方,则获取该结果消息中的查询识别码及查询到的数据,若该结果消息中的查询识别码与该查询消息的查询识别码一致,则将该查询到的数据作为该查询消息的对应的结果。
为实现上述目的,本发明还提供一种数据查询的方法,所述数据查询的方法包括:
S1,在分布式网络中,当接收到其他主机发送的数据的查询消息后,获取该查询消息中的查询识别码及查询内容,若该查询识别码与预先记录的查询识别码不一致,则查询自身是否存储有该查询内容对应的数据;
S2,若查询到自身未存储有该查询内容对应的数据,则获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发,并记录本次的查询识别码;
S3,若查询到自身存储有该查询内容对应的数据,则将该查询识别码及查询到的数据生成查询结果,生成结果识别码,将该查询结果及该结果识别码生成结果消息,基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
优选地,所述数据查询的方法,还包括:
当发起数据的查询后,查询自身是否存储有该查询内容对应的数据,若查询到自身未存储有该查询内容对应的数据,则生成查询识别码,基于该查询识别码及查询内容生成查询消息,获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发;
若查询到自身存储有该查询内容对应的数据,则结束流程。
优选地,所述数据查询的方法,还包括:
当接收到其他主机发送的结果消息后,若自身不是查询消息的发起方,则获取该结果消息中的结果识别码,若该结果识别码与预先记录的结果识别码不一致,则基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
优选地,所述数据查询的方法,还包括:
当接收到其他主机发送的结果消息后,若自身是查询消息的发起方,则获取该结果消息中的查询识别码及查询到的数据,若该结果消息中的查询识别码与该查询消息的查询识别码一致,则将该查询到的数据作为该查询消息的对应的结果。
优选地,所述数据查询的方法,还包括:
当发起数据的查询后,若在预定的时间内未接收到该分布式网络中的主机发送的结果消息,则结束本次数据的查询操作。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现上述的数据查询的方法的步骤。
本发明的有益效果是:本发明每一主机在连入在分布式网络时确定与其相邻连接的主机节点,在接收到其他主机发送的数据的查询消息时,若查询到自身没有存储对应的数据,则将查询消息转发给相邻连接的主机节点,这些主机节点首先查询自身是否存储对应的数据,若没有则转发给与该主机相邻连接的主机进行查询,若在某一主机上查询到对应的数据,则该主机在返回数据时,同样返回给相邻连接的主机,直至将数据返回给发起查询的主机,本发明在分布式网络中使用相邻连接的主机进行查询消息及结果消息的转发,去除中心查询节点,不会暴露数据的查询方及提供方,并可适用于数据量大及网络节点多的场景。
附图说明
图1为本发明各个实施例一可选的应用环境示意图;
图2是图1中数据查询的装置一实施例的硬件架构的示意图;
图3为图1、图2中处理系统一实施例的程序模块图;
图4为本发明数据查询的方法一实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
参阅图1所示,是本发明数据查询的装置的较佳实施例的应用环境示意图。该应用环境示意图包括多个主机,其中任意一个主机可作为本发明的数据查询的装置1。各主机之间可以通过网络、近场通信技术等适合的技术进行数据交互。本实施例中,主机可以将查询消息、结果消息发送给相邻的主机,在没有查询到对应的数据时可依此一台台相邻主机地转发下去,依靠相邻主机之间的转发、查询,最终将结果消息反馈给查询消息的发起方。
所述数据查询的装置1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述数据查询的装置1可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
在本实施例中,如图2所示,数据查询的装置1可包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,存储器11存储有可在处理器12上运行的处理系统。需要指出的是,图2仅示出了具有组件11-13的数据查询的装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,存储器11包括内存及至少一种类型的可读存储介质。内存为数据查询的装置1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是数据查询的装置1的内部存储单元,例如该数据查询的装置1的硬盘;在另一些实施例中,该非易失性存储介质也可以是数据查询的装置1的外部存储设备,例如数据查询的装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于数据查询的装置1的操作系统和各类应用软件,例如存储本发明一实施例中的处理系统的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述数据查询的装置1的总体操作,例如执行与其他主机进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行处理系统等。
所述网络接口13可包括标准的无线网络接口或有线网络接口,该网络接口13通常用于在所述数据查询的装置1与其他主机之间建立通信连接。
所述处理系统存储在存储器11中,包括至少一个存储在存储器11中的计算机可读指令,该至少一个计算机可读指令可被处理器器12执行,以实现本申请各实施例的方法;以及,该至少一个计算机可读指令依据其各部分所实现的功能不同,可被划为不同的逻辑模块。
在一实施例中,上述处理系统被所述处理器12执行时实现如下步骤:
在分布式网络中,当接收到其他主机发送的数据的查询消息后,获取该查询消息中的查询识别码及查询内容,若该查询识别码与预先记录的查询识别码不一致,则查询自身是否存储有该查询内容对应的数据;
若查询到自身未存储有该查询内容对应的数据,则获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发,并记录本次的查询识别码;
若查询到自身存储有该查询内容对应的数据,则将该查询识别码及查询到的数据生成查询结果,生成结果识别码,将该查询结果及该结果识别码生成结果消息,基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
具体原理请参照下述图3关于处理系统10的程序模块图及图4关于数据查询的方法的流程图的介绍。
参照图3所示,为图1、图2中处理系统10的程序模块图。所述处理系统10被分割为多个模块,该多个模块被存储于存储器12中,并由处理器13执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
所述处理系统10可以被分割为:查询模块101、第一发送模块102及第二发送模块103。
所述查询模块101,用于在分布式网络中,当接收到其他主机发送的数据的查询消息后,获取该查询消息中的查询识别码及查询内容,若该查询识别码与预先记录的查询识别码不一致,则查询自身是否存储有该查询内容对应的数据;
所述第一发送模块102,用于若查询到自身未存储有该查询内容对应的数据,则获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发,并记录本次的查询识别码;
所述第二发送模块103,用于若查询到自身存储有该查询内容对应的数据,则将该查询识别码及查询到的数据生成查询结果,生成结果识别码,将该查询结果及该结果识别码生成结果消息,基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
参照图4所示,为本发明数据查询的方法一实施例的流程图。数据查询的装置1的处理器13执行存储器12中存储的处理系统10时实现智能对话生成方法的如下步骤:
步骤S1,在分布式网络中,当接收到其他主机发送的数据的查询消息后,获取该查询消息中的查询识别码及查询内容,若该查询识别码与预先记录的查询识别码不一致,则查询自身是否存储有该查询内容对应的数据;
其中,分布式网络中任一主机可以作为查询消息的发起方。对于不是查询消息的发起方,可接收分布式网络中任一主机发送的数据的查询消息。
其中,本主机只知晓发送该查询消息给本主机的主机的地址信息,本主机与发送该查询消息给本主机的主机相邻连接,但本主机无法获知该查询消息的发起方是那一台主机。
其中,查询消息包括查询识别码及查询内容,查询识别码是全网唯一的。例如,查询识别码为699d510c8101a0c5,查询内容为(如果要查询某个用户是否在其他机构借过钱):{"persionID":"查询用户的ID","type":"loan"}。
首先,将该查询消息中的查询识别码与预先记录的查询识别码进行比较,主机每次接收到查询消息时均会记录对应的查询识别码,如果记录的查询识别码中有与本次的查询识别码相同的,则说明该主机已经接收过该查询消息,如果记录的查询识别码中没有与本次的查询识别码相同的,则说明该主机是第一次接收到该查询消息,根据该查询内容查询自身是否存储了对应的数据。
步骤S2,若查询到自身未存储有该查询内容对应的数据,则获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发,并记录本次的查询识别码;
每一主机在接入分布式网络中时,会确定与自身连接最近主机,即与自身相邻连接的至少一台主机,并记录这些主机的地址信息(即IP地址)并存储在本地,方便后续通讯。
如果主机查询到自身没有存储该查询内容对应的数据,则获取本地存储的主机的地址信息,将该查询消息发送给这些地址信息对应的主机中,供相邻的主机进行查询或者转发(若查询到对应的数据不需要转发,若未查询到对应的数据需要转发)。优选地,在本地存储的主机的地址信息中,剔除掉发送该查询消息给本主机的那个主机的地址信息,然后将该查询消息发送给剔除上述地址信息后的剩余的地址信息对应的主机,且仅发送一次该查询消息给剩余的地址信息对应的主机,以提高查询的效率。
其中,在分布式网络中,一条查询消息可能经过一个主机的一次转发或者依次相邻的多个主机的多次转发。
其中,记录本次的查询识别码,若在下次接收到相同的查询识别码的查询消息,则不再在自身进行查询,提高查询的效率。
步骤S3,若查询到自身存储有该查询内容对应的数据,则将该查询识别码及查询到的数据生成查询结果,生成结果识别码,将该查询结果及该结果识别码生成结果消息,基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
例如,结果识别码为:7699d510c8101a0c5,结果识别码全网唯一;查询结果为:
{"persionID":"查询用户的ID","type":"loan",
"result":{
"org":"借款机构",
"money":"借款数量",
"time":"借款时间"
}}。
在该查询结果中,查询到的数据为"result",在该"result"中,包括了该"persionID"对应的借款机构、借款数量及借款时间。
主机将该结果消息发送给存储的地址信息对应的相邻主机中,供相邻的主机进行转发或者接收(若主机是查询消息的发起方即可接收该结果消息,若不是查询消息的发起方则继续转发该结果消息)。其中,将该结果消息发送给存储的所有地址信息对应的主机,且该主机仅发送一次该结果消息,以提高查询的效率。
其中,在分布式网络中,一条结果消息可能经过一个主机的一次转发或者依次相邻的多个主机的多次转发。
其中,记录本次的结果识别码,若在下次接收到相同的结果识别码的结果消息,则不再进行转发,提高查询的效率。
与现有技术相比,本发明每一主机在连入在分布式网络时确定与其相邻连接的主机节点,在接收到其他主机发送的数据的查询消息时,若查询到自身没有存储对应的数据,则将查询消息转发给相邻连接的主机节点,这些主机节点首先查询自身是否存储对应的数据,若没有则转发给与该主机相邻连接的主机进行查询,若在某一主机上查询到对应的数据,则该主机在返回数据时,同样返回给相邻连接的主机,直至将数据返回给发起查询的主机,本发明在分布式网络中使用相邻连接的主机进行查询消息及结果消息的转发,去除中心查询节点,不会暴露数据的查询方及提供方,并可适用于数据量大及网络节点多的场景。
在一实施例中,在上述实施例的基础上,在该数据查询的方法,还包括:
当发起数据的查询后,查询自身是否存储有该查询内容对应的数据,若查询到自身未存储有该查询内容对应的数据,则生成查询识别码,基于该查询识别码及查询内容生成查询消息,获取本地预先存储的地址信息,基于该地址信息将该查询消息发送给相邻的其他主机,供其他主机进行查询或转发;若查询到自身存储有该查询内容对应的数据,则结束流程。
其中,如果主机是查询消息的发起方,则首先根据查询内容查询自身是否存储有对应的数据,若有,流程结束,不需要转发该查询消息。如果自身没有存储有对应的数据,则生成查询识别码,将包括查询识别码的查询消息发送给相邻连接的主机,以便相邻连接的主机进行查询、转发。
在一实施例中,在上述实施例的基础上,在该数据查询的方法,还包括:
当接收到其他主机发送的结果消息后,若自身不是查询消息的发起方,则获取该结果消息中的结果识别码,若该结果识别码与预先记录的结果识别码不一致,则基于该地址信息将该结果消息发送给相邻的其他主机,供其他主机进行转发或接收,并记录本次的结果识别码。
其中,如果主机自身不是查询消息的发起方,则在接收到相邻连接的主机发送的结果消息时,比对该结果消息中的结果识别码与预先记录的结果识别码,如果不一致,说明主机是第一次接收到该结果消息,可将该结果消息转发给其他相邻连接的主机,供其他主机进行转发或接收,如果两结果识别码一致,说明主机不是第一次接收到该结果消息,由于主机仅会转发一次结果消息,相同的结果消息不转发第二次,因此本次不会再转发结果消息。
其中,记录本次的结果识别码,若在下次接收到相同的结果识别码的结果消息,则不再进行转发,提高查询的效率。
在一实施例中,在上述实施例的基础上,在该数据查询的方法,还包括:
当接收到其他主机发送的结果消息后,若自身是查询消息的发起方,则获取该结果消息中的查询识别码及查询到的数据,若该结果消息中的查询识别码与该查询消息的查询识别码一致,则将该查询到的数据作为该查询消息的对应的结果。
其中,如果主机自身是查询消息的发起方,则在接收到相邻连接的主机发送的结果消息时,获取查询识别码及查询到的数据,对比结果消息中的查询识别码及查询消息的查询识别码,如果两者一致,说明该结果消息中有该查询消息所要查询的数据,由此,实现了在分布式网络以盲查询的方式查询到了对应的数据,提高数据查询的安全性。
在一实施例中,在上述实施例的基础上,在该数据查询的方法,还包括:
当发起数据的查询后,若在预定的时间内未接收到该分布式网络中的主机发送的结果消息,则结束本次数据的查询操作。
其中,每一次数据的查询发起后会设置一个预定的等待结果的时间(例如,30秒),超过了这个设置的时间则认为全网没有所要查询的结果数据,返回查不到数据给发起查询的主机,结束本次查询操作,以防止本次查询操作一直执行下去。
进一步地,每一台主机在连入分布式网络时,可以确定该分布式网络的主机的数量,根据该分布式网络的主机的数量确认一次数据查询的时间,将所确定的一次数据查询的时间进行共享,发起查询的主机在进行数据查询时,如果查询时间大于该一次数据查询的时间,则认为全网没有所要查询的结果数据,结束本次查询操作。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现上述的数据查询的方法的步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。