CN110399397A - 一种数据查询方法和*** - Google Patents

一种数据查询方法和*** Download PDF

Info

Publication number
CN110399397A
CN110399397A CN201810354417.6A CN201810354417A CN110399397A CN 110399397 A CN110399397 A CN 110399397A CN 201810354417 A CN201810354417 A CN 201810354417A CN 110399397 A CN110399397 A CN 110399397A
Authority
CN
China
Prior art keywords
key
name
value pair
space
back end
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.)
Pending
Application number
CN201810354417.6A
Other languages
English (en)
Inventor
安海雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810354417.6A priority Critical patent/CN110399397A/zh
Publication of CN110399397A publication Critical patent/CN110399397A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据查询方法和***,涉及计算机技术领域。该方法的一具体实施方式包括:接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。该实施方式根据数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理。通过上述方式实现了对H/V的查询结果进行SQL聚合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询。

Description

一种数据查询方法和***
技术领域
本发明涉及计算机领域,尤其涉及一种数据查询方法和***。
背景技术
数据库按照查询类型可以分为两类,一类是基于SQL(Structured QueryLanguage,结构化查询语言)查询的关系型数据库,另一类是基于Key/Value(键/值,简称K/V)查询的非关系型数据库。关系型数据库常用于复杂业务关系的数据存储与查询,优点是可以对各种数据进行聚合处理;非关系型数据库常用于简单查询,优点是速度快,常见的非关系型数据库如HBase、Redis。
在某些业务场景下,经常需要既支持K/V查询,也支持SQL查询。比如在大数据量报表查询中,经常需要先根据某个Key(键)查询,然后再对查询出的数据进行聚合处理。现有技术中通过以下两种方式解决上述问题,方式一:将报表数据推送到Hive(基于Hadoop的SQL大数据查询引擎,Hadoop是一种分布式***基础架构)中,之后通过Presto或者Impala(Presto和Impala均是基于分布式文件***的大数据查询引擎)等基于Hive的工具进行查询,对查询结果进行聚合处理后提供给前端展示。方式二:将报表数据以查询条件拼成RowKey(主键),之后将RowKey对应的数据推送到HBase中进行查询,在应用程序中对查询结果进行聚合处理后提供给前端展示。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:方式一适合处理执行时间长(几秒、几十秒、甚至几个小时),并发小的查询。然而大数据量报表查询属于即席查询,要求查询性能高,并发大,一般需要毫秒级响应。方式二虽然能够解决性能与并发问题,但是需要在应用程序中编写聚合处理逻辑,给软件开发带来很大的不便。
发明内容
有鉴于此,本发明实施例提供一种数据查询方法和***,根据数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理。通过上述方式实现了对H/V的查询结果进行SQL聚合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询。
实现上述目的,根据本发明实施例的一个方面,提供了一种数据查询方法。
本发明实施例的一种数据查询方法,包括:接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。
可选地,所述在存储有键值对的数据节点中进行查询,包括:从元数据中获取所述键名对应的IP地址和端口号;其中,所述元数据中包括所述键名以及所述存储有键值对的数据节点的IP地址和端口号;根据所述键名,在所述IP地址和端口号对应的数据节点中进行查询。
可选地,所述根据所述SQL查询语句对所述键值进行聚合处理,包括:将所述键值格式化为SQLite文件,根据所述SQL查询语句对所述SQLite文件进行聚合处理。
可选地,所述数据查询请求还包括空间名和表名;所述元数据还包括所述空间名和所述表名;所述从元数据中获取所述键名对应的IP地址和端口号,包括:根据所述数据查询请求中的空间名、表名和键名,从所述元数据中获取与所述空间名、表名和键名相对应的IP地址和端口号。
可选地,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:接收数据写入请求;其中,所述数据写入请求中包括所述空间名、所述表名、所述键名和原始数据;根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名;对所述原始数据进行串行化处理得到所述键值对,将所述键值对存储到所述数据节点中;将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
可选地,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:接收直接写入请求;其中,所述直接写入请求中包括所述空间名、所述表名、所述键名和所述键值对,所述键值对是客户端对原始数据进行串行化处理后得到的;根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名,将所述键值对存储到所述数据节点中;将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
可选地,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:通过二进制文件将所述键值对写入所述数据节点中进行存储;其中,所述键值对是客户端对原始数据进行串行化处理后得到的;接收所述键名待挂载的空间名和表名,将所述空间名、所述表名、所述键名以及所述数据节点的IP地址和端口号作为所述元数据;将所述元数据进行串行化处理,通过所述二进制文件存储处理结果。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据查询***。
本发明实施例的一种数据查询***,包括:接收模块,用于接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;查询模块,用于在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;聚合模块,用于根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。
可选地,所述查询模块,还用于:从元数据中获取所述键名对应的IP地址和端口号;其中,所述元数据中包括所述键名以及所述存储有键值对的数据节点的IP地址和端口号;以及根据所述键名,在所述IP地址和端口号对应的数据节点中进行查询。
可选地,所述聚合模块,还用于:将所述键值格式化为SQLite文件,根据所述SQL查询语句对所述SQLite文件进行聚合处理。
可选地,所述数据查询请求还包括空间名和表名;所述元数据还包括所述空间名和所述表名;所述查询模块,还用于:根据所述数据查询请求中的空间名、表名和键名,从所述元数据中获取与所述空间名、表名和键名相对应的IP地址和端口号。
可选地,所述***还包括第一数据写入模块,用于:接收数据写入请求;其中,所述数据写入请求中包括所述空间名、所述表名、所述键名和原始数据;根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名;对所述原始数据进行串行化处理得到所述键值对,将所述键值对存储到所述数据节点中;以及将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
可选地,所述***还包括第二数据写入模块,用于:接收直接写入请求;其中,所述直接写入请求中包括所述空间名、所述表名、所述键名和所述键值对,所述键值对是客户端对原始数据进行串行化处理后得到的;根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名,将所述键值对存储到所述数据节点中;以及将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
可选地,所述***还包括第三数据写入模块,用于:通过二进制文件将所述键值对写入所述数据节点中进行存储;其中,所述键值对是客户端对原始数据进行串行化处理后得到的;接收所述键名待挂载的空间名和表名,将所述空间名、所述表名、所述键名以及所述数据节点的IP地址和端口号作为所述元数据;以及将所述元数据进行串行化处理,通过所述二进制文件存储处理结果。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种数据查询方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种数据查询方法。
上述发明中的一个实施例具有如下优点或有益效果:通过数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理,将H/V查询与SQL查询相结合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询;通过预先将存有键值对的数据节点的IP地址和端口号进行保存,方便后续在对应的数据节点中进行查询;通过SQLite将H/V查询与SQL查询相结合,实现了对H/V查询结果进行SQL查询;将空间名、表名和键名这个三元组保存在元数据中,以唯一确定一条数据记录;通过SQL写入、直接写入和批量写入三种方式将原始数据写入数据节点,增加***的多样性,适应不同的用户需求。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据查询方法的主要步骤的示意图;
图2是根据本发明实施例的元数据的结构示意图;
图3是根据本发明实施例的数据查询方法的主要流程示意图;
图4是根据本发明实施例的数据查询***的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性***架构图;
图6是适用于来实现本发明实施例的电子设备的计算机装置的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据查询方法的主要步骤的示意图。如图1所示,本发明实施例的数据查询方法,主要包括如下步骤:
步骤S101:接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名。客户端将数据查询请求和SQL查询语句发送至服务端,所述SQL查询语句用于设定在键名对应的查询结果中进行什么样的SQL查询。
步骤S102:在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值。数据节点中存储有对原始数据进行串行化处理后得到的键值对。服务端接收到数据查询请求和SQL查询语句后,解析数据查询请求以获取键名,将所述键名发送至数据节点以使所述数据节点查询出该键名对应的键值,并反馈至服务端。
步骤S103:根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。所述聚合处理,比如对所述键值进行求和、求平均、求最大最小值等。该步骤中首选需将所述键值格式化为SQLite文件,然后再根据所述SQL查询语句对所述SQLite文件进行聚合处理。其中,SQLite是一种嵌入式的数据库***。
下面对本申请中涉及到的词语进行解释说明:
NameNode:名字节点,用于存储元数据的服务器,管理SQLNode。
SQLNode:SQL节点,用于对查询结果进行聚合处理的服务器,实施例中基于SQLite实现。
DataNode:数据节点,用于存储Key/Value对的服务器,以插件形式提供,可以接入HBase、Redis等。
元数据:用于存储Space、Table、Key、存储该Key对应的Key/Value对的DataNode的IP地址和端口(Port)号以及引擎类型(EngineType)。
Space:空间,可以为一个项目创建一个空间。
Table:表,一个空间中包括至少一个表。
Key:键,在同一个表中键是唯一的。
Value:值,是实际存储在DataNode中的数据值,可以逗号分隔值(Comma-Separated Values,CSV)格式存储,以便于在SQLite中进行聚合。
图2是根据本发明实施例的元数据的结构示意图。如图2所示,本发明实施例的元数据保存在NameNode中,以三级结构来管理:Space/Table/Key,Space/Table/Key均以Hash表的形式存储。实施例中采用链地址法的方式解决Hash表中的地址冲突问题。NameNode中包括至少一个Space,一个Space中包括至少一个Table,一个Table中包括至少一个Key。<Space,Table,Key>这个三元组可以唯一确定一条数据记录。图2中→NULL代表Hash表的下一个元素为空。
图3是根据本发明实施例的数据查询方法的主要流程示意图。如图3所示,本发明实施例的数据查询方法由数据查询***实现,主要包括以下步骤:
步骤S301:客户端将要创建的空间名和表名分别发送至服务端的NameNode。用户在客户端输入用户名、密码、空间名和表名,客户端将所述用户名、密码、空间名和表名发送至NameNode。其中,用户名和密码用于后续进行登录认证。实施例中NameNode为多台,各NameNode互为主备,实时将自身数据同步到其他NameNode。
步骤S302:NameNode根据接收的所述空间名查询Space Hash,当所述Space Hash中不存在所述空间名时,创建对应的空间。具体为:NameNode根据接收的所述空间名查询Space Hash,以判断Space Hash中是否已经存在所述空间名,如果所述Space Hash中不存在所述空间名,则创建对应的空间,之后向客户端返回空间创建成功的提示信息;如果存在所述空间名,则向客户端返回空间创建失败的提示信息。实施例中用Create语句创建空间以及表。
步骤S303:NameNode根据接收的所述表名查询Table Hash,当所述Table Hash中不存在所述表名时,在所述空间中创建对应的表。具体为:NameNode根据接收的所述表名查询Table Hash,以判断Table Hash中是否已经存在所述表名,如果所述Table Hash中不存在所述表名,则在所述空间中创建对应的表,之后向客户端返回空间创建成功的提示信息;如果存在所述表名,则向客户端返回空间创建失败的提示信息。
步骤S304:对原始数据进行串行化处理得到键值对,将所述键值对存储到服务端的DataNode中。该步骤用于将键值对写入DataNode中。可以由NameNode或者客户端对原始数据进行串行化处理,如果由NameNode对原始数据进行串行化处理,可以通过SQLNode将键值对写入DataNode,也可以直接将键值对写入DataNode。
步骤S305:将所述键名以及所述DataNode的IP地址、端口号和引擎类型存储到NameNode的元数据中。所述引擎类型为DataNode接入的数据库类型,可以为HBase、Redis等。该步骤用来在后续通过元数据进行数据查询。步骤S304和步骤S305的具体实现方式有以下三种,下面分别进行说明。
实施例一:通过SQL的Insert(***)语句写入:
(1)客户端将数据写入请求发送至NameNode,其中,所述数据写入请求中包括所述空间名、所述表名、所述键名和所述原始数据。用户首先通过客户端进行登录认证,认证通过后,在客户端输入键名和待写入的原始数据的SQL语句。以商品订单为例,该步骤中,将<spacename,tablename,productid,<insert into order value(productid,orderid,price,time)>>发送到NameNode。其中,spacename为空间名,tablename为表名,productid为键名。
(2)NameNode根据所述空间名和表名索引出对应的表,在所述表中***所述键名。NameNode存储spacename,tablename,productid。实施例中NameNode以集群方式存在,各NameNode会将收到的数据同步到集群中的每个NameNode中。
(3)NameNode将所述原始数据输出至SQLNode集群的任一SQLNode中。NameNode将<insert into order value(productid,orderid,price,time)>提交至服务端的SQLNode。
(4)SQLNode对所述原始数据进行串行化处理得到键值对,将所述键值对发送到DataNode中进行存储。SQLNode对原始数据进行串行化处理,形成一个<key/value>对,将<key/value>对提交到DataNode。
经上述过程,如果写入成功,由SQLNode向NameNode返回写入成功的提示信息;否则SQLNode向NameNode返回写入失败的提示信息。NameNode将收到的写入成功/写入失败的提示信息返回至客户端。
(5)NameNode将所述DataNode的IP地址、端口号和引擎类型挂载到所述表的对应键名中。
实施例二:通过直接Insert方式写入:
(1)客户端对原始数据进行串行化处理,得到键值对。用户首先需通过客户端进行登录认证,认证通过后,在客户端输入键名和原始数据。以商品订单为例,该步骤中,将insert into order value(productid,orderid,price,time)>串行化,得到二进制数据(即键值对)。
(2)客户端将直接写入请求发送至服务端的NameNode;其中,所述直接写入请求中包括空间名、表名、键名和所述键值对。客户端将<spacename,tablename,productid,键值对>直接提交到NameNode。
(3)NameNode根据接收的所述直接写入请求中的空间名和表名,索引出对应的表,在所述表中***所述键名。NameNode存储spacename,tablename,productid。
(4)NameNode将所述键值对发送至服务端的DataNode进行存储。
经上述过程,如果写入成功,由DataNode向NameNode返回写入成功的提示信息;否则DataNode向NameNode返回写入失败的提示信息。NameNode将收到的写入成功/写入失败的提示信息返回至客户端。
(5)NameNode将所述DataNode的IP地址、端口号和引擎类型挂载到所述表的对应键名中。
实施例三:批量写入方式:
(1)客户端对原始数据进行串行化处理,得到键值对。用户首先需通过客户端进行登录认证,认证通过后,在客户端输入键名和原始数据。以商品订单为例,该步骤中,将<insert into order value(productid,orderid,price,time)>串行化,得到键值对。
(2)客户端通过二进制文件将所述键值对批量导入到服务端的DataNode。数据要么保存在文件中,要么保存在内存中,当数据量大的时候内存无法承载,而且在内存中不便于在多个机器之间进行数据交互,故本申请将键值对存入二进制文件中,通过二进制文件将键值对批量导入到DataNode。上述实施例一和实施例二中,是一条一条将键值对发送至DataNode的,且将键值对具体发送至哪个DataNode进行存储是***自动分配的;实施例三中,是通过二进制文件批量将键值对导入至DataNode的,导入速度比实施例一和实施例二快,且将键值对具体发送至哪个DataNode进行存储是人为设定的。
(3)DataNode接收所述键名待挂载的空间名和表名,将所述空间名、表名、键名以及所述DataNode的IP地址和端口号进行串行化处理,并通过二进制文件将串行化处理结果批量导入到NameNode。客户端将该键名需要挂载的空间名和表名发送至DataNode,DataNode再将<spacename,tablename,productid,ip,port>进行串行化处理,以通过二进制文件批量导入NameNode。
步骤S306:客户端将数据查询请求发送至服务端的NameNode;其中,所述数据查询请求中包括认证成功的Token(令牌)、空间名、表名和键名。用户首先需通过客户端进行登录认证,认证通过后,在客户端输入空间名、表名、键名以及SQL查询语句,所述SQL查询语句用于设定在查询出的键值中做什么样的聚合查询。
步骤S307:NameNode按照负载均衡原则,从SQLNode集群中选择至少一个SQLNode,将选择出的所有SQLNode的标识发送至客户端。该步骤中NameNode用于均衡负载。
步骤S308:NameNode根据所述数据查询请求,从元数据中获取对应的IP地址和端口号,将获取的IP地址和端口号发送至选择出的SQLNode。该步骤中NameNode用于路由。
步骤S309:客户端根据所述标识获取对应的SQLNode,将获取的所有SQLNode缓存到本地,并将所述数据查询请求和SQL查询语句发送至缓存的任意一个SQLNode。客户端需要预先设置缓存的时间,一般可设置为5~60秒。客户端缓存失效的时机有两种,一种是从缓存的SQLNode中查询不到键名,另一种是缓存超时。
步骤S310:SQLNode接收到数据查询请求、SQL查询语句、IP地址和端口号后,在所述IP地址和端口号对应的DataNode中进行查询,以获取所述键名对应的键值。
步骤S311:SQLNode将获取的所述键值进行格式化得到SQLite格式文件,根据SQL查询语句对所述SQLite格式文件进行聚合处理,将聚合处理结果在客户端展示。在一优选的实施例中,SQLNode将键名和获取到的键值进行缓存,后续如果再有相同的数据查询请求且客户端缓存有效的情况下,可以不通过NameNode,而是直接将数据查询请求发送至SQLNode中进行查询。
下面以电商平台中查看某个商品(商品ID=1208)一天的订单总额为例,对本申请做进一步说明。
假设订单(order)表中的字段有order<productid,orderid,price,time>,一天卖出去的商品有10亿,数量巨大,如果把order表存储在关系型数据库中,查询该商品一天的订单总额所对应的SQL语句为:select count(price)from order where productid=1208,要花费10多分钟才能获得查询结果。
然而,实际上关于该商品的记录可能也就几千条。本申请将商品ID作为Key存储在NameNode中,Value中只存储与该商品ID相关的记录。查询该商品一天的订单总额所对应的语句为:<productid,<select count(price)from order>>。该查询分为两个过程:过程一:K/V查询:先查出productid为1208的商品。K/V查询的速度很快,一般都是毫秒级。过程二:在K/V查询的结果集上做select count(price)from order查询。因为结果集很小(几千条),所以过程二也是毫秒级。本申请最终将一个需要花10多分钟才能获得查询结果的过程,优化成了毫秒级的查询。
通过本发明实施例的数据查询方法可以看出,通过数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理,将H/V查询与SQL查询相结合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询;通过预先将存有键值对的数据节点的IP地址和端口号进行保存,方便后续在对应的数据节点中进行查询;通过SQLite将H/V查询与SQL查询相结合,实现了对H/V查询结果进行SQL查询;将空间名、表名和键名这个三元组保存在元数据中,以唯一确定一条数据记录;通过SQL写入、直接写入和批量写入三种方式将原始数据写入数据节点,增加***的多样性,适应不同的用户需求。
图4是根据本发明实施例的数据查询***的主要模块的示意图。如图4所示,本发明实施例的数据查询***400,主要包括:
接收模块401,用于接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名。客户端将数据查询请求和SQL查询语句发送至服务端,所述SQL查询语句用于设定在键名对应的查询结果中进行什么样的SQL查询。
查询模块402,用于在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值。数据节点中存储有对原始数据进行串行化处理后得到的键值对。服务端接收到数据查询请求和SQL查询语句后,解析数据查询请求以获取键名,将所述键名发送至数据节点以使所述数据节点查询出该键名对应的键值,并反馈至服务端。
聚合模块403,用于根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。所述聚合处理,比如对所述键值进行求和、求平均、求最大最小值等。该模块中首选需将所述键值格式化为SQLite文件,然后再根据所述SQL查询语句对所述SQLite文件进行聚合处理。
另外,本发明实施例的数据查询***400还可以包括:第一数据写入模块、第二数据写入模块和第三数据写入模块(图中未示出),第一数据写入模块通过SQL的Inset语句将原始数据进行串行化处理得到键值对,将该键值对存储到数据节点中;第二数据写入模块通过直接Inset方式将由客户端串行化处理得到的键值对存储到数据节点中;第三数据写入模块通过批量写入方式将由客户端串行化处理得到的键值对通过二进制文件批量存储到数据节点中。
从以上描述可以看出,通过数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理,将H/V查询与SQL查询相结合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询;通过预先将存有键值对的数据节点的IP地址和端口号进行保存,方便后续在对应的数据节点中进行查询;通过SQLite将H/V查询与SQL查询相结合,实现了对H/V查询结果进行SQL查询;将空间名、表名和键名这个三元组保存在元数据中,以唯一确定一条数据记录;通过SQL写入、直接写入和批量写入三种方式将原始数据写入数据节点,增加***的多样性,适应不同的用户需求。
图5示出了可以应用本发明实施例的数据查询的方法或数据查询***的示例性***架构500。
如图5所示,***架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所产生的点击事件提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的点击数据、文本内容等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本申请实施例所提供的数据查询方法一般由服务器505执行,相应地,数据查询***一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种数据查询方法。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种数据查询方法。
下面参考图6,其示出了适用于来实现本发明实施例的电子设备的计算机***600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有计算机***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、查询模块和聚合模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收数据查询请求和SQL查询语句的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。
从以上描述可以看出,通过数据查询请求的键名,在存储有键值对的数据节点进行查询获取对应的键值,之后按照SQL查询语句对所述键值进行聚合处理,将H/V查询与SQL查询相结合,使得本申请能够进行高并发、高性能、且支持SQL聚合的查询;通过预先将存有键值对的数据节点的IP地址和端口号进行保存,方便后续在对应的数据节点中进行查询;通过SQLite将H/V查询与SQL查询相结合,实现了对H/V查询结果进行SQL查询;将空间名、表名和键名这个三元组保存在元数据中,以唯一确定一条数据记录;通过SQL写入、直接写入和批量写入三种方式将原始数据写入数据节点,增加***的多样性,适应不同的用户需求。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (16)

1.一种数据查询方法,其特征在于,包括:
接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;
在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;
根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。
2.根据权利要求1所述的方法,其特征在于,所述在存储有键值对的数据节点中进行查询,包括:
从元数据中获取所述键名对应的IP地址和端口号;其中,所述元数据中包括所述键名以及所述存储有键值对的数据节点的IP地址和端口号;
根据所述键名,在所述IP地址和端口号对应的数据节点中进行查询。
3.根据权利要求1所述的方法,其特征在于,所述根据所述SQL查询语句对所述键值进行聚合处理,包括:将所述键值格式化为SQLite文件,根据所述SQL查询语句对所述SQLite文件进行聚合处理。
4.根据权利要求2所述的方法,其特征在于,所述数据查询请求还包括空间名和表名;所述元数据还包括所述空间名和所述表名;
所述从元数据中获取所述键名对应的IP地址和端口号,包括:根据所述数据查询请求中的空间名、表名和键名,从所述元数据中获取与所述空间名、表名和键名相对应的IP地址和端口号。
5.根据权利要求4所述的方法,其特征在于,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:
接收数据写入请求;其中,所述数据写入请求中包括所述空间名、所述表名、所述键名和原始数据;
根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名;
对所述原始数据进行串行化处理得到所述键值对,将所述键值对存储到所述数据节点中;
将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
6.根据权利要求4所述的方法,其特征在于,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:
接收直接写入请求;其中,所述直接写入请求中包括所述空间名、所述表名、所述键名和所述键值对,所述键值对是客户端对原始数据进行串行化处理后得到的;
根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名,将所述键值对存储到所述数据节点中;
将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
7.根据权利要求4所述的方法,其特征在于,所述在存储有键值对的数据节点中进行查询的步骤之前,还包括:
通过二进制文件将所述键值对写入所述数据节点中进行存储;其中,所述键值对是客户端对原始数据进行串行化处理后得到的;
接收所述键名待挂载的空间名和表名,将所述空间名、所述表名、所述键名以及所述数据节点的IP地址和端口号作为所述元数据;
将所述元数据进行串行化处理,通过所述二进制文件存储处理结果。
8.一种数据查询***,其特征在于,包括:
接收模块,用于接收数据查询请求和SQL查询语句;其中,所述数据查询请求包括键名;
查询模块,用于在存储有键值对的数据节点中进行查询,以获取所述键名对应的键值;其中,所述键值对包括键名和键值;
聚合模块,用于根据所述SQL查询语句对所述键值进行聚合处理,得到聚合处理结果。
9.根据权利要求8所述的***,其特征在于,所述查询模块,还用于:
从元数据中获取所述键名对应的IP地址和端口号;其中,所述元数据中包括所述键名以及所述存储有键值对的数据节点的IP地址和端口号;以及
根据所述键名,在所述IP地址和端口号对应的数据节点中进行查询。
10.根据权利要求8所述的***,其特征在于,所述聚合模块,还用于:将所述键值格式化为SQLite文件,根据所述SQL查询语句对所述SQLite文件进行聚合处理。
11.根据权利要求9所述的***,其特征在于,所述数据查询请求还包括空间名和表名;所述元数据还包括所述空间名和所述表名;
所述查询模块,还用于:根据所述数据查询请求中的空间名、表名和键名,从所述元数据中获取与所述空间名、表名和键名相对应的IP地址和端口号。
12.根据权利要求11所述的***,其特征在于,所述***还包括第一数据写入模块,用于:
接收数据写入请求;其中,所述数据写入请求中包括所述空间名、所述表名、所述键名和原始数据;
根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名;
对所述原始数据进行串行化处理得到所述键值对,将所述键值对存储到所述数据节点中;以及
将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
13.根据权利要求11所述的***,其特征在于,所述***还包括第二数据写入模块,用于:
接收直接写入请求;其中,所述直接写入请求中包括所述空间名、所述表名、所述键名和所述键值对,所述键值对是客户端对原始数据进行串行化处理后得到的;
根据所述空间名和所述表名从预先创建的空间和表中索引出对应的表,在所述表中***所述键名,将所述键值对存储到所述数据节点中;以及
将所述数据节点的IP地址和端口号挂载到所述表的对应键名中。
14.根据权利要求11所述的***,其特征在于,所述***还包括第三数据写入模块,用于:
通过二进制文件将所述键值对写入所述数据节点中进行存储;其中,所述键值对是客户端对原始数据进行串行化处理后得到的;
接收所述键名待挂载的空间名和表名,将所述空间名、所述表名、所述键名以及所述数据节点的IP地址和端口号作为所述元数据;以及将所述元数据进行串行化处理,通过所述二进制文件存储处理结果。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN201810354417.6A 2018-04-19 2018-04-19 一种数据查询方法和*** Pending CN110399397A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810354417.6A CN110399397A (zh) 2018-04-19 2018-04-19 一种数据查询方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810354417.6A CN110399397A (zh) 2018-04-19 2018-04-19 一种数据查询方法和***

Publications (1)

Publication Number Publication Date
CN110399397A true CN110399397A (zh) 2019-11-01

Family

ID=68319482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810354417.6A Pending CN110399397A (zh) 2018-04-19 2018-04-19 一种数据查询方法和***

Country Status (1)

Country Link
CN (1) CN110399397A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737297A (zh) * 2020-06-15 2020-10-02 中国工商银行股份有限公司 链路聚合调用信息的处理方法及装置
CN112463837A (zh) * 2020-12-17 2021-03-09 四川长虹电器股份有限公司 一种关系型数据库数据存储查询方法
CN115455031A (zh) * 2022-09-20 2022-12-09 北京火山引擎科技有限公司 一种Doris的数据查询方法、装置、存储介质及设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078881A1 (en) * 2010-09-24 2012-03-29 Hitachi Data Systems Corporation System and method for aggregating query results in a fault-tolerant database management system
CN103324765A (zh) * 2013-07-19 2013-09-25 西安电子科技大学 一种基于列存储的多核并行数据查询优化方法
CN103729478A (zh) * 2014-01-26 2014-04-16 重庆邮电大学 基于MapReduce的LBS兴趣点发现方法
CN104809114A (zh) * 2014-01-24 2015-07-29 北京仿真中心 一种面向视频大数据的并行数据挖掘方法
CN105550371A (zh) * 2016-01-27 2016-05-04 华中科技大学 一种面向大数据环境的元数据组织方法和***
CN106383850A (zh) * 2016-08-31 2017-02-08 东软集团股份有限公司 数据处理方法及装置
CN106484879A (zh) * 2016-10-14 2017-03-08 哈尔滨工程大学 一种基于MapReduce的Map端数据的聚合方法
CN107346317A (zh) * 2016-05-06 2017-11-14 北京神州泰岳软件股份有限公司 一种数据查询方法和装置
CN107368517A (zh) * 2017-06-02 2017-11-21 上海恺英网络科技有限公司 一种大数据流查询的方法及设备
CN107402871A (zh) * 2017-03-28 2017-11-28 阿里巴巴集团控股有限公司 终端性能监控方法及装置、监控文件处理方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078881A1 (en) * 2010-09-24 2012-03-29 Hitachi Data Systems Corporation System and method for aggregating query results in a fault-tolerant database management system
CN103324765A (zh) * 2013-07-19 2013-09-25 西安电子科技大学 一种基于列存储的多核并行数据查询优化方法
CN104809114A (zh) * 2014-01-24 2015-07-29 北京仿真中心 一种面向视频大数据的并行数据挖掘方法
CN103729478A (zh) * 2014-01-26 2014-04-16 重庆邮电大学 基于MapReduce的LBS兴趣点发现方法
CN105550371A (zh) * 2016-01-27 2016-05-04 华中科技大学 一种面向大数据环境的元数据组织方法和***
CN107346317A (zh) * 2016-05-06 2017-11-14 北京神州泰岳软件股份有限公司 一种数据查询方法和装置
CN106383850A (zh) * 2016-08-31 2017-02-08 东软集团股份有限公司 数据处理方法及装置
CN106484879A (zh) * 2016-10-14 2017-03-08 哈尔滨工程大学 一种基于MapReduce的Map端数据的聚合方法
CN107402871A (zh) * 2017-03-28 2017-11-28 阿里巴巴集团控股有限公司 终端性能监控方法及装置、监控文件处理方法及装置
CN107368517A (zh) * 2017-06-02 2017-11-21 上海恺英网络科技有限公司 一种大数据流查询的方法及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737297A (zh) * 2020-06-15 2020-10-02 中国工商银行股份有限公司 链路聚合调用信息的处理方法及装置
CN111737297B (zh) * 2020-06-15 2023-08-25 中国工商银行股份有限公司 链路聚合调用信息的处理方法及装置
CN112463837A (zh) * 2020-12-17 2021-03-09 四川长虹电器股份有限公司 一种关系型数据库数据存储查询方法
CN112463837B (zh) * 2020-12-17 2022-08-16 四川长虹电器股份有限公司 一种关系型数据库数据存储查询方法
CN115455031A (zh) * 2022-09-20 2022-12-09 北京火山引擎科技有限公司 一种Doris的数据查询方法、装置、存储介质及设备
CN115455031B (zh) * 2022-09-20 2024-05-24 北京火山引擎科技有限公司 一种Doris的数据查询方法、装置、存储介质及设备

Similar Documents

Publication Publication Date Title
CN110019211A (zh) 关联索引的方法、装置和***
CN109683998A (zh) 国际化实现方法、装置和***
CN109614402B (zh) 多维数据查询方法和装置
CN109409119A (zh) 数据操作方法和装置
CN110019125A (zh) 数据库管理的方法和装置
CN109388654A (zh) 一种查询数据表的方法和装置
CN110019258A (zh) 处理订单数据的方法和装置
CN110209677A (zh) 更新数据的方法和装置
CN110069579A (zh) 电子围栏分块方法和装置
CN110399397A (zh) 一种数据查询方法和***
CN108984549A (zh) 一种基于动态配置数据库的分库分表数据抽取方法和装置
CN108958744A (zh) 大数据分布式集群的部署方法、装置、介质及电子设备
CN109002440A (zh) 用于大数据多维分析的方法、装置及***
CN110019310A (zh) 数据处理方法及***、计算机***、计算机可读存储介质
CN112884405A (zh) 一种询价***及其调度方法
CN110110196A (zh) 一种消息推送方法和装置
CN111258988B (zh) 资产管理方法、装置、电子设备以及介质
CN110309142A (zh) 规则管理的方法和装置
CN109753424A (zh) Ab测试的方法和装置
CN110019331A (zh) 一种基于结构化查询语言的查询数据库的方法和装置
CN110223179A (zh) 资金的数据处理方法、装置、***、介质
CN109977139A (zh) 基于类结构化查询语句的数据处理方法和装置
CN107729394A (zh) 基于Hadoop集群的数据集市管理***及其使用方法
CN110109912A (zh) 一种标识符生成方法和装置
CN110083501A (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