本发明涉及大数据技术领域,特别是涉及一种数据查询方法、装置、设备及计算机可读存储介质。
背景技术:
在大数据存储中,数据库存储大量的数据信息,在后续调用数据时,通过查询调取相应的数据信息。
现有的数据查询方式为当数据库中的一个数据被查询,依次遍历以多行存储方式进行数据存储的各个数据库中的数据。当数据库的数量较多时,现有的数据查询方式耗时长,数据查询效率低。
综上所述,如何有效地解决现有的数据查询方式耗时长,数据查询效率低的问题,是目前本领域技术人员急需解决的问题。
技术实现要素:
本发明的目的是提供一种数据查询方法,该方法较大地缩短了数据查询耗时,提高了数据查询效率;本发明的另一目的是提供一种数据查询装置、设备及计算机可读存储介质。
为解决上述技术问题,本发明提供如下技术方案:
一种数据查询方法,包括:
对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;
从数据库列表中查找所述目标数据标识信息对应的目标json数据库;
判断所述目标json数据库中是否存在所述待查询数据;
若否,则按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据或查询至所述目标json数据库的顶层父节点json数据库。
在本发明的一种具体实施方式中,在查询到所述待查询数据之后,还包括:
判断查询到的待查询数据是否数据完整;
若是,则输出数据查询成功标志信息。
在本发明的一种具体实施方式中,对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息,包括:
对接收到的数据查询请求进行解析,得到所述待查询数据对应的数据请求方的目标节点地址信息;
从数据库列表中查找所述目标数据标识信息对应的目标json数据库,包括:
从所述数据库列表中查找所述目标节点地址信息对应的目标json数据库。
在本发明的一种具体实施方式中,按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据,包括:
按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息。
一种数据查询装置,包括:
请求解析模块,用于对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;
数据库查找模块,用于从数据库列表中查找所述目标数据标识信息对应的目标json数据库;
第一判断模块,用于判断所述目标json数据库中是否存在所述待查询数据;
查询模块,用于当确定所述目标json数据库中不存在所述待查询数据时,按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据或查询至所述目标json数据库的顶层父节点json数据库。
在本发明的一种具体实施方式中,还包括:
第二判断模块,用于在查询到所述待查询数据之后,判断查询到的待查询数据是否数据完整;
信息输出模块,用于在确定查询到的待查询数据的数据完整时,输出数据查询成功标志信息。
在本发明的一种具体实施方式中,所述请求解析模块具体为对接收到的数据查询请求进行解析,得到所述待查询数据对应的数据请求方的目标节点地址信息的模块;
数据库查找模块具体为从所述数据库列表中查找所述目标节点地址信息对应的目标json数据库的模块。
在本发明的一种具体实施方式中,所述查询模块具体为按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息的模块。
一种数据查询设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前所述数据查询方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据查询方法的步骤。
应用本发明实施例所提供的方法,对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;从数据库列表中查找目标数据标识信息对应的目标json数据库;判断目标json数据库中是否存在待查询数据;若否,则按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。通过利用json格式的数据查询方式,向各层父节点json数据库进行逐层查询,使得数据查询由多行查询方式转变为单层查询方式,较大地缩短了数据查询耗时,提高了数据查询效率。
相应的,本发明实施例还提供了与上述数据查询方法相对应的数据查询装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中数据查询方法的一种实施流程图;
图2为本发明实施例中数据查询方法的另一种实施流程图;
图3为本发明实施例中一种数据查询装置的结构框图;
图4为本发明实施例中一种数据查询设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
参见图1,图1为本发明实施例中数据查询方法的一种实施流程图,该方法可以包括以下步骤:
s101:对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息。
当数据请求方需要进行数据查询时,可以向数据查询管理中心发送数据查询请求,数据查询请求中包含待查询数据的目标数据标识信息。数据查询管理中心接收数据查询请求,并对数据查询请求进行解析,得到待查询数据的目标数据标识信息。
目标数据标识信息可以为发送数据查询请求的数据请求方对应的节点地址信息,也可以为数据类型信息等等。
s102:从数据库列表中查找目标数据标识信息对应的目标json数据库。
可以预先设置存储有各数据标识信息和json数据库之间的对应关系的数据库列表,如目标json数据库与数据标识信息的对应设置原则可以为查询链路就近设置原则。在解析得到待查询数据的目标数据标识信息之后,可以从数据库列表中查找目标数据标识信息对应的目标json数据库。
json:js对象简谱(javascriptobjectnotation的缩写)是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
s103:判断目标json数据库中是否存在待查询数据,若否,则执行步骤s104,若是,则执行步骤s105。
在查找到目标数据标识信息对应的目标json数据库之后,可以判断目标json数据库中是否存在待查询数据,若是,则说明仅需当前一次查询即可完成对待查询数据的查询工作,可以执行步骤s105,若否,则说明目标json数据库当前不存在待查询数据,需要做进一步地数据查询工作,因此可以执行步骤s104。
s104:按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。
在确定目标json数据库中不存在待查询数据之后,可以按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。只要在某一父节点json数据库中查询到待查询数据即可完成数据查询工作,若查询到顶层父节点json数据库仍不存在待查询数据,则本次数据查询失败,可以输出数据查询失败的提示信息,以便提示数据请求方检测是否数据查询请求发送有误,需更正数据查询请求等。利用json格式的数据查询方式减少了数据表的查询,减少关联查询,一个查询的结果就可以代替几个查询的结果,降低数据库服务器的压力。
s105:输出数据查询完成提示信息。
在确定目标json数据库中存在待查询数据之后,可以输出数据查询完成提示信息,以提示数据请求方数据查询成功。当然也可以不输出数据查询完成提示信息,本发明实施例对此不做限定。
应用本发明实施例所提供的方法,对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;从数据库列表中查找目标数据标识信息对应的目标json数据库;判断目标json数据库中是否存在待查询数据;若否,则按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。通过利用json格式的数据查询方式,向各层父节点json数据库进行逐层查询,使得数据查询由多行查询方式转变为单层查询方式,较大地缩短了数据查询耗时,提高了数据查询效率。
需要说明的是,基于上述实施例一,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
实施例二:
参见图2,图2为本发明实施例中数据查询方法的另一种实施流程图,该方法可以包括以下步骤:
s201:对接收到的数据查询请求进行解析,得到待查询数据对应的数据请求方的目标节点地址信息。
数据请求方发送的数据查询请求中包含数据请求方的目标节点地址信息。数据查询管理中心通过对数据查询请求进行解析,可以得到待查询数据对应的数据请求方的目标节点地址信息。
s202:从数据库列表中查找目标节点地址信息对应的目标json数据库。
数据库列表中可以具体存储有各节点地址信息与各json数据库之间的对应关系。在解析得到待查询数据对应的数据请求方的目标节点地址信息之后,可以从数据库列表中查找目标节点地址信息对应的目标json数据库。
s203:判断目标json数据库中是否存在待查询数据,若否,则执行步骤s204,若是,则执行步骤s205。
s204:按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息或查询至目标json数据库的顶层父节点json数据库。
在确定目标json数据库中不存在待查询数据之后,可以按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息或查询至目标json数据库的顶层父节点json数据库。当查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息之后,说明该父节点json数据库存储有其各下层json数据库对应的节点地址信息可被查询的数据,因此能够在该父节点json数据库中查询到待查询数据。
s205:输出数据查询完成提示信息。
s206:在查询到待查询数据之后,判断查询到的待查询数据是否数据完整,若是,则执行步骤s207,若否,则输出数据查询失败。
在查询到待查询数据之后,可以判断查询到的待查询数据是否数据完整,若是,则可以继续执行步骤s207,若否,则可以执行步骤s208。
s207:输出数据查询成功标志信息。
在确定查询到的待查询数据的数据完整之后,则输出数据查询成功标志信息,以通知数据请求方当前获得的待查询数据可用。通过对查询到的待查询数据进行完整性校验,保证了查询到的数据的完整可用性。
s208:输出数据查询失败提示信息。
当确定查询到的待查询数据不完整之后,说明当前json数据库中存储的待查询数据存在丢失,可以输出数据查询失败提示信息,以便提示数据请求方做出相应的应对措施。当然也可以不输出数据查询失败提示信息,本发明实施例对此不做限定。
为了便于理解本发明实施例所提供的技术方案,下面以应用到收货地址查询的具体应用场景为例,对本发明实施例所提供的技术方案进行详细说明。
以地址库为例,全国包含街道地址大约50000条源数据,针对大型电商的供应商库粗估300万家,平均每家2个仓库,且供应商每个仓库都设置为全国配送,基于目前的存储方式(按照地址叶子节点数据平铺),那么地址库中就会存在2*5万*300万=3000亿的配送地址数据。现有的对地址数据的写入方式是通过用户所选配送区域区划,获取所有叶子节点区划,针对当前供应商所维护仓库按照叶子节点区划进行地址库多行存储。现有对地址数据的读取方式是通过地址自上而下进行查找,例如采购人选了一个收货地址为xx区,需要根据xx区查询出当前区下的所有街道地址,并针对每个街道都去查询供应商的仓库列表,直到所有的街道地址都能匹配到同一个仓库为止。其中针对一个供应商的一个商品如果发生交易行为,就需要遍历3000亿数据进行配送地址是否有货校验。同时如果供应商修改某个仓库的配送区域,最差情况下需要修改50000条数据,在一个几千万数据存储级别中,此操作无疑是很耗时耗力的。
可采用本发明实施例所提供的数据查询方法解决上述问题。具体实现过程如下:
步骤一:对接收到的商品购买请求进行解析,得到采购方的收货地址信息;
步骤二:从地址库中查找收货地址信息(例如浙江省杭州市西湖区)对应的仓库;
步骤三:判断查找到的仓库的配送区域是否包含该采购方的收货地址信息,若是,则收货地址查询成功,若否,则继续执行步骤四;
步骤四:按照自下而上的查询顺次,依次查询收货地址信息对应的仓库的各父节点仓库中是否包含该采购方的收货地址信息,直至查询到采购方的收货地址信息或者查询至收货地址信息对应的仓库的顶层父节点仓库。
并且在匹配到收货地址信息之后,可以判断当前仓库中的库存是否充足,若充足,则返回收货地址信息有效的标志信息。
本发明实施例所提供的收货地址存储方式对比原收货地址存储方式,以用户勾选全国为配送区域为例,原方案需要记录每个区划的仓库,同时需要冗余仓库编码,最终落入地址库中。其中n表示行数,m表示每行实例存储空间占用大小,那么现有方案存储所有记录的空间占用程度为n*m,而本实施例所提供的方案存储空间仅需要m即可,可以节省(n-1)*m的存储空间。在实例案例中,设定n=50000行,m=1kb来测算,50000行记录需要占用50000kb≈49m,如果针对表中还存在索引的情况下,实际占用存储空间要大于49m。而本方案只需要极短的字符串便可以取代之前几万行的数据存储,每条记录的存储基本维持1kb。空间利用率提升((49m*1024-1)/49m*1024)*100≈99.99%。
本发明实施例所提供的收货地址查询方式对比原有收货地址查询方式,现有方案通过平铺仓库区划进行存储,针对使用某个父级区划(例如杭州市),就需要把杭州市下所有区的所有街道都查询出来,并且判断所有的街道是否都满足。其中n表示杭州市下的区县个数,m表示每个区县下的街道个数,k表示供应商的仓库个数,那么现有方案如果需要确定仓库的话需要执行1*n*m*k次查询。而本发明实施例所提供的方案根据传入的地址维度,最优情况下仅需要1*1*k查询即可,可以节省n*m*k–k次查询。实例案例中,我们以用户传入杭州市为例,设定n=18,m=200,k=1,针对现有方案的查询次数共1(通过杭州查询杭州下的所有区)*18(每个区下查询街道)*200(每个街道查询是否满足)=3600次。而本方案仅需要把杭州市传入,如果不存在则查询出浙江省再次传入,类似一棵树,最优只需1次,最差只需4次查询便可确定出配送区域是否都满足,查询效率提升((3600–1)/3600)*100≈99.97%。
针对采购方选择的收货地址信息,转换为自定义dsl。例如:供应商维护仓库配送区域时勾选了选择了浙江,供应商所表达的意思为当前仓库配送区域直达浙江整个省,但是不关心浙江下的每个市、区及各个街道,通过内部地址库查询得到浙江的区划编码为330000,按照用户意图也不需要再查询浙江下的所有地址信息。通过记录浙江的区划编码330000,另加上自定义dsl,selectall表达是否全选,为真(true)时表示全选,为假(false)时表示还存在下一层地址的详细描述。故最终数据存储优化为浙江且全选。
通过自定义dsl,使用selectall:true代表全选,使用selectall:false代表非全选,并结合json使地址库存储的配送地址信息由多行变为单行,取代现有通过数据多行展开的存储方式。由于物理区域本身特性(分布呈树状),由先前的自上而下(省查询所有市、市查询所有区、区查询所有街道)查询变更为自下而上(街道查询直属区、区查询直属市、市查询直属省)遍历,有效减少遍历次数,进而增高查询效率。
相应于上面的方法实施例,本发明实施例还提供了一种数据查询装置,下文描述的数据查询装置与上文描述的数据查询方法可相互对应参照。
参见图3,图3为本发明实施例中一种数据查询装置的结构框图,该装置可以包括:
请求解析模块31,用于对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;
数据库查找模块32,用于从数据库列表中查找目标数据标识信息对应的目标json数据库;
第一判断模块33,用于判断目标json数据库中是否存在待查询数据;
查询模块34,用于当确定目标json数据库中不存在待查询数据时,按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。
应用本发明实施例所提供的装置,对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;从数据库列表中查找目标数据标识信息对应的目标json数据库;判断目标json数据库中是否存在待查询数据;若否,则按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。通过利用json格式的数据查询方式,向各层父节点json数据库进行逐层查询,使得数据查询由多行查询方式转变为单层查询方式,较大地缩短了数据查询耗时,提高了数据查询效率。
在本发明的一种具体实施方式中,该装置还可以包括:
第二判断模块,用于在查询到待查询数据之后,判断查询到的待查询数据是否数据完整;
信息输出模块,用于在确定查询到的待查询数据的数据完整时,输出数据查询成功标志信息。
在本发明的一种具体实施方式中,请求解析模块31具体为对接收到的数据查询请求进行解析,得到待查询数据对应的数据请求方的目标节点地址信息的模块;
数据库查找模块32具体为从数据库列表中查找目标节点地址信息对应的目标json数据库的模块。
在本发明的一种具体实施方式中,查询模块34具体为按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息的模块。
相应于上面的方法实施例,参见图4,图4为本发明所提供的数据查询设备的示意图,该设备可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行上述存储器41存储的计算机程序时可实现如下步骤:
对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;从数据库列表中查找目标数据标识信息对应的目标json数据库;判断目标json数据库中是否存在待查询数据;若否,则按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。
对于本发明提供的设备的介绍请参照上述方法实施例,本发明在此不做赘述。
相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;从数据库列表中查找目标数据标识信息对应的目标json数据库;判断目标json数据库中是否存在待查询数据;若否,则按照自下而上的查询顺序,依次查询目标json数据库的各层父节点json数据库中是否存在待查询数据,直至查询到待查询数据或查询至目标json数据库的顶层父节点json数据库。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
1.一种数据查询方法,其特征在于,包括:
对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;
从数据库列表中查找所述目标数据标识信息对应的目标json数据库;
判断所述目标json数据库中是否存在所述待查询数据;
若否,则按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据或查询至所述目标json数据库的顶层父节点json数据库。
2.根据权利要求1所述的数据查询方法,其特征在于,在查询到所述待查询数据之后,还包括:
判断查询到的待查询数据是否数据完整;
若是,则输出数据查询成功标志信息。
3.根据权利要求1或2所述的数据查询方法,其特征在于,对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息,包括:
对接收到的数据查询请求进行解析,得到所述待查询数据对应的数据请求方的目标节点地址信息;
从数据库列表中查找所述目标数据标识信息对应的目标json数据库,包括:
从所述数据库列表中查找所述目标节点地址信息对应的目标json数据库。
4.根据权利要求3所述的数据查询方法,其特征在于,按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据,包括:
按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息。
5.一种数据查询装置,其特征在于,包括:
请求解析模块,用于对接收到的数据查询请求进行解析,得到待查询数据的目标数据标识信息;
数据库查找模块,用于从数据库列表中查找所述目标数据标识信息对应的目标json数据库;
第一判断模块,用于判断所述目标json数据库中是否存在所述待查询数据;
查询模块,用于当确定所述目标json数据库中不存在所述待查询数据时,按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库中是否存在所述待查询数据,直至查询到所述待查询数据或查询至所述目标json数据库的顶层父节点json数据库。
6.根据权利要求5所述的数据查询装置,其特征在于,还包括:
第二判断模块,用于在查询到所述待查询数据之后,判断查询到的待查询数据是否数据完整;
信息输出模块,用于在确定查询到的待查询数据的数据完整时,输出数据查询成功标志信息。
7.根据权利要求5或6所述的数据查询装置,其特征在于,所述请求解析模块具体为对接收到的数据查询请求进行解析,得到所述待查询数据对应的数据请求方的目标节点地址信息的模块;
数据库查找模块具体为从所述数据库列表中查找所述目标节点地址信息对应的目标json数据库的模块。
8.根据权利要求7所述的数据查询装置,其特征在于,所述查询模块具体为按照自下而上的查询顺序,依次查询所述目标json数据库的各层父节点json数据库是否全选各下层json数据库对应的节点地址信息,直至查询到存在父节点json数据库全选各下层json数据库对应的节点地址信息的模块。
9.一种数据查询设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述数据查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述数据查询方法的步骤。
技术总结