此应用程序的某些内容目前无法使用。
如果这种情况持续存在,请联系我们反馈与联系
1. (WO2018035799) 数据查询方法、应用和数据库服务器、中间件及系统
Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191   0192   0193   0194   0195   0196   0197   0198   0199   0200   0201   0202   0203   0204   0205   0206   0207   0208   0209   0210   0211   0212   0213   0214   0215   0216   0217   0218   0219   0220   0221   0222   0223   0224   0225   0226   0227   0228   0229   0230   0231   0232   0233   0234   0235   0236   0237   0238   0239   0240   0241   0242   0243   0244   0245   0246   0247   0248   0249   0250   0251   0252   0253   0254   0255   0256   0257   0258   0259   0260   0261   0262   0263   0264   0265   0266   0267   0268   0269   0270   0271   0272   0273   0274   0275   0276   0277   0278   0279   0280   0281   0282   0283   0284   0285   0286   0287   0288   0289   0290   0291   0292   0293   0294   0295   0296   0297   0298   0299   0300   0301   0302   0303   0304   0305   0306   0307   0308   0309  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25  

附图

0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016  

说明书

发明名称 : 数据查询方法、应用和数据库服务器、中间件及系统

技术领域

[0001]
本申请涉及数据库技术领域,尤其涉及数据查询方法、应用和数据库服务器、中间件及系统。

背景技术

[0002]
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。因此,数据库为使用它的应用程序提供基础数据资源,对数据库中数据的查询效果直接影响使用它的应用程序的运行效果。
[0003]
以在一个聊天应用中,用户如果需要查询最后与自己对话的联系人信息为例,目前数据查询方法为:聊天应用的应用服务器在获取用户的该查询请求后,首先,第一次向数据库发起查询请求,以查询与用户对话的所有联系人;其次,第二次向数据库发起查询请求,以查找与每个联系人对话的最后一条消息;最后,按时间顺序对每个联系人对话的最后一条消息进行排序,确定最后与用户对话的联系人后,第三次向数据库发起查询请求,以查询最后与用户对话的联系人的信息,并将该联系人信息反馈给该用户。
[0004]
在这个过程中需要对数据库服务器进行3次访问,并且需要传输大量数据到客户端,供客户端筛选后再次执行查询,效率较低。
[0005]
发明内容
[0006]
为了提高查询效率,本申请实施例提出了一种数据查询方法、应用和数据库服务器、中间件及系统。
[0007]
第一方面,本申请实施例提供了一种数据查询方法,所述方法包括:
[0008]
获取数据查询请求,根据所述数据查询请求生成数据查询脚本;
[0009]
将所述数据查询脚本发送至数据存储系统;
[0010]
接收所述数据存储系统执行所述数据查询脚本得到的结果。
[0011]
可选地,所述数据查询脚本中包括数据查询语句和结果分析语句。
[0012]
可选地,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句, 或以上的任意组合。
[0013]
可选地,所述根据数据查询请求生成数据查询脚本,包括:
[0014]
获取来自数据存储系统的数据库模型和/或接口配置参数,根据所述数据库模型和/或接口配置参数生成数据查询脚本。
[0015]
可选地,所述方法,还包括:
[0016]
获取待存储数据的数据模型;
[0017]
将所述数据模型发送至数据存储系统,以使所述数据存储系统根据所述数据模型定义数据库模型。
[0018]
第二方面,本申请实施例提供了一种应用服务器,所述应用服务器包括:
[0019]
第一获取模块,用于获取数据查询请求;
[0020]
生成模块,用于根据所述第一获取模块获取的数据查询请求生成数据查询脚本;
[0021]
第一发送模块,用于将所述生成模块生成的数据查询脚本发送至数据存储系统;
[0022]
接收模块,用于接收所述数据存储系统执行所述第一发送模块发送的数据查询脚本得到的结果。
[0023]
可选地,所述数据查询脚本中包括数据查询语句和结果分析语句。
[0024]
可选地,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0025]
可选地,所述生成模块,用于获取来自数据存储系统的数据库模型和/或接口配置参数,根据所述数据库模型和/或接口配置参数生成数据查询脚本。
[0026]
可选地,所述应用服务器,还包括:
[0027]
第二获取模块,用于获取待存储数据的数据模型;
[0028]
第二发送模块,用于将所述第二获取模块获取的数据模型发送至数据存储系统,以使所述数据存储系统根据所述数据模型定义数据库模型。
[0029]
第三方面,本申请实施例提供了一种数据查询方法,所述方法包括:
[0030]
获取来自应用服务器的数据查询脚本;
[0031]
执行所述数据查询脚本,获得数据查询结果;
[0032]
将所述数据查询结果反馈至所述应用服务器。
[0033]
可选地,所述数据查询脚本中包括数据查询语句和结果分析语句。
[0034]
可选地,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0035]
可选地,所述获取来自应用服务器数据查询脚本,包括:
[0036]
获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本;
[0037]
所述将数据查询结果反馈至所述应用服务器包括:
[0038]
通过所述中间件将所述数据查询结果反馈至所述应用服务器。
[0039]
可选地,所述方法,还包括:
[0040]
接收所述应用服务器发送的数据模型;
[0041]
根据所述数据模型定义数据库模型;
[0042]
建立所述数据库模型与所述应用服务器之间的关联关系。
[0043]
可选地,所述建立所述数据库模型与所述应用服务器之间的关联关系,包括:
[0044]
向所述应用服务器发布数据库模型,和/或,确定所述数据库模型的接口配置参数,向所述应用服务器发布所述接口配置参数。
[0045]
第四方面,本申请实施例提供了一种数据库服务器,所述数据库服务器包括:
[0046]
获取模块,用于获取来自应用服务器的数据查询脚本;
[0047]
执行模块,用于执行所述获取模块获取的数据查询脚本,获得数据查询结果;
[0048]
反馈模块,用于将所述执行模块获得的数据查询结果反馈至所述应用服务器。
[0049]
可选地,所述数据查询脚本中包括数据查询语句和结果分析语句。
[0050]
可选地,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0051]
可选地,所述获取模块,用于获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本;
[0052]
所述反馈模块,用于通过所述中间件将所述数据查询结果反馈至所述应用服务器。
[0053]
可选地,所述数据库服务器,还包括:
[0054]
接收模块,用于接收所述应用服务器发送的数据模型;
[0055]
定义模块,用于根据所述接收模块接收的数据模型定义数据库模型;
[0056]
建立模块,用于建立所述定义模块定义的数据库模型与所述应用服务器之间的关联关系。
[0057]
可选地,所述建立模块,用于向所述应用服务器发布数据库模型,和/或,确定所述数据库模型的接口配置参数,向所述应用服务器发布所述接口配置参数。
[0058]
第五方面,本申请实施例提供了一种数据查询方法,所述方法包括:
[0059]
获取来自应用服务器的数据查询脚本;
[0060]
确定执行所述数据查询脚本的一个或多个数据库服务器;
[0061]
将所述数据查询脚本分发至所述数据库服务器;
[0062]
获得所述数据库服务器反馈的数据查询结果,并将所述数据查询结果发送至所述应用服务器。
[0063]
第六方面,本申请实施例提供了一种中间件,所述中间件包括:
[0064]
第一获取模块,用于获取来自应用服务器的数据查询脚本;
[0065]
确定模块,用于确定执行所述第一获取模块获取的数据查询脚本的一个或多个数据库服务器;
[0066]
发送模块,用于将所述第一获取模块获取的数据查询脚本分发至所述数据库服务器;
[0067]
第二获取模块,用于获得所述数据库服务器反馈的数据查询结果;
[0068]
发送模块,用于将所述第二获取模块获取的数据查询结果发送至所述应用服务器。
[0069]
第七方面,本申请实施例提供了一种数据查询系统,述系统包括:应用服务器和数据存储系统;
[0070]
其中,所述应用服务器如上述第二方面所述的应用服务器;
[0071]
所述数据存储系统由如上述第四方面所述的数据库服务器组成,或者,所述数据存储系统由如上述第四方面所述的数据库服务器和如上述第六方面所述的中间件组成。
[0072]
有益效果如下:
[0073]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。

附图说明

[0074]
下面将参照附图描述本申请的具体实施例,其中:
[0075]
图1示出了本申请一实施例提供的一种数据查询方法的实施环境示意图;
[0076]
图2示出了本申请另一实施例提供的一种数据查询方法的流程示意图;
[0077]
图3示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0078]
图4示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0079]
图5示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0080]
图6示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0081]
图7示出了本申请另一实施例提供的一种现有数据查询方法的流程示意图;
[0082]
图8示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0083]
图9示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0084]
图10示出了本申请另一实施例提供的另一种数据查询方法的流程示意图;
[0085]
图11示出了本申请另一实施例提供的一种应用服务器的结构示意图;
[0086]
图12示出了本申请另一实施例提供的另一种应用服务器的结构示意图;
[0087]
图13示出了本申请另一实施例提供的一种数据库服务器的结构示意图;
[0088]
图14示出了本申请另一实施例提供的另一种数据库服务器的结构示意图;
[0089]
图15示出了本申请另一实施例提供的一种中间件的结构示意图;
[0090]
图16示出了本申请另一实施例提供的一种数据查询系统的结构示意图。

具体实施方式

[0091]
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
[0092]
参见图1,为本发明实施例提供的数据查询方法的实施环境示意图。该实施环境包括终端101、应用服务器102和数据存储系统103。
[0093]
其中,终端101用于向应用服务器102发送查询请求,接收应用服务器102根据该查询请求得到的结果;
[0094]
应用服务器102,在获取到终端101的查询请求后,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统103;接收数据存储系统103执行数据查询脚本得到的结果,向终端101反馈该结果;
[0095]
数据库模型为应用服务器从数据存储系统获取的,该数据库模型可以包括数据存储系统的数据结构,也可以包括数据存储系统的数据结构和数据操作方式。
[0096]
脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。数据查询脚本中可以包括数据查询语句以及结果分析语句,其中结果分析语句可以为结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0097]
数据存储系统103,可以有2种实现方式:
[0098]
第1种方式,数据存储系统103由一台或多台数据库服务器组成,该数据服务器包括存储器,存储器中存储有数据库。数据库服务器获取来自应用服务器102的数据查询脚本后,执行该数据查询脚本,获得数据查询结果,并将数据查询结果反馈至应用服务器102。
[0099]
第2种方式,数据存储系统103由中间件和一台或多台数据库服务器组成,其中,数据服务器包括存储器,存储器中存储有数据库。
[0100]
由于中间件可以管理数据库服务器资源和网络通讯,其可以连接多个数据库服务器,即使多个数据库服务器具有不同的接口,但通过中间件相互之间仍能交换信息。因此,中间件获取到来自应用服务器的数据查询脚本后,确定执行数据查询脚本的一个或多个数据库服务器;将数据查询脚本分发至数据库服务器;获得数据库服务器反馈的数据查询结果,并将数据查询结果发送至应用服务器。
[0101]
数据库服务器获取中间件分发的数据查询脚本后,执行该数据查询脚本,获得数据查询结果,并将数据查询结果反馈至中间件。
[0102]
同时,数据库服务器在具体实现时,可以仅存储数据,也可以为存储数据的同时和缓存部分数据,本申请不对数据库的具体实现方式进行限定。
[0103]
结合上述实施环境,参见图2所示的实施例,本实施例提供了一种数据查询方法,本实施例提供的方法流程具体如下:
[0104]
201:获取数据查询请求,根据数据查询请求生成数据查询脚本;
[0105]
可选地,数据查询脚本中包括数据查询语句和结果分析语句。
[0106]
可选地,结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0107]
可选地,根据数据查询请求生成数据查询脚本,包括:
[0108]
获取来自数据存储系统的数据库模型和/或接口配置参数,根据数据库模型和/或接口配置参数生成数据查询脚本。
[0109]
202:将数据查询脚本发送至数据存储系统;
[0110]
203:接收数据存储系统执行数据查询脚本得到的结果。
[0111]
可选地,该方法,还包括:
[0112]
获取待存储数据的数据模型;
[0113]
将数据模型发送至数据存储系统,以使数据存储系统根据数据模型定义数据库模型。
[0114]
参见图3,本实施例提供了另一种数据查询方法,该方法流程具体如下:
[0115]
301:获取来自应用服务器的数据查询脚本;
[0116]
可选地,数据查询脚本中包括数据查询语句和结果分析语句。
[0117]
可选地,结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0118]
可选地,获取来自应用服务器数据查询脚本,包括:
[0119]
获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本;
[0120]
将数据查询结果反馈至应用服务器包括:
[0121]
通过中间件将数据查询结果反馈至应用服务器。
[0122]
302:执行数据查询脚本,获得数据查询结果;
[0123]
303:将数据查询结果反馈至应用服务器。
[0124]
可选地,该方法,还包括:
[0125]
接收应用服务器发送的数据模型;
[0126]
根据数据模型定义数据库模型;
[0127]
建立数据库模型与应用服务器之间的关联关系。
[0128]
可选地,建立数据库模型与应用服务器之间的关联关系,包括:
[0129]
向应用服务器发布数据库模型,和/或,确定数据库模型的接口配置参数,向应用服务器发布接口配置参数。
[0130]
参见图4,本实施例提供了再一种数据查询方法,该方法流程具体如下:
[0131]
401:获取来自应用服务器的数据查询脚本;
[0132]
402:确定执行数据查询脚本的一个或多个数据库服务器;
[0133]
403:将数据查询脚本分发至数据库服务器;
[0134]
404:获得数据库服务器反馈的数据查询结果,并将数据查询结果发送至应用服务器。

有益效果:

[0135]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。
[0136]
结合上述实施环境,本申请提供了一种数据查询方法。本申请提供的方法可以应用于各种业务中,尤其是数据密集型应用中查询需求复杂的应用场景,可以打破数据库访问量瓶颈,解决运算密集的实时数据库访问问题。
[0137]
为了更清楚明确的说明本实施例提供的数据展示方法,本实施例以如下具体场景为例,对于其他场景,可参见如下场景的实现方式。
[0138]
具体场景:在一个聊天应用中,终端通过结构化查询语言查询最后对话的联系人信息,数据存储系统为数据库服务器。
[0139]
其中,结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
[0140]
数据库服务器,在接收数据查询脚本后,通过后端的一个单独隔离出的线程加载该脚本,并赋予数据查询脚本读取数据库权限后,按照一定顺序执行数据查询脚本。数据查询脚本可以访问数据库服务器上的数据库,处理数据,当数据处理完成时,通知返回处理结果。
[0141]
另外,该场景中数据库服务器的实现方式有多种,本实施例仅以Node(节点)服务器,结合mongoDB数据库引擎组成的数据库服务器为例进行说明。具体的,数据库服务器接收javascript形式的数据查询脚本,动态加载脚本并按照数据查询脚本的描述对数据库进行查询。
[0142]
其中,Node服务器是一种使用javascript编写的开源跨平台运行环境,采用google的V8引擎执行代码,由于javascript本身是一种脚本语言,可以动态地加载脚本片段进行执行,并在运行时对脚本执行进行修改。
[0143]
mongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,可以通过添加更多的节点,扩展服务器来确保并发性能,mongoDB将数据存储为一个文档,数据结构由键值对(key=>value)(关键字=>值)组成。mongoDB文档类似于JSON(JavaScript Object Notation,轻量级的数据交换格式)对象。字段值可以包含其他文档,数组及文档数组。
[0144]
图5提供了针对上述场景的一种数据查询方法,该方法流程具体如下:
[0145]
501:应用服务器获取待存储数据的数据模型;
[0146]
应用程序在设计时,会对其待存储的数据结构进行定义,形成数据模型。本步骤中, 应用服务器获取该待存储数据的数据模型。
[0147]
例如:
[0148]
应用程序设计:待存储数据为{title:′blog′,by:′user′,content:′hello world′},则形成的数据模型为{blogData:{title:′String′,by:′String′,content:′String′}}。
[0149]
应用服务器获取{blogData:{title:′String′,by:′String′,content:′String′}}。
[0150]
502:应用服务器将数据模型发送至数据库服务器;
[0151]
步骤501中获取的数据模型需要被数据库服务器得知,以便数据库服务器建立对应的数据库,因此,应用服务器将步骤501中获取的数据模型发送至数据库服务器。
[0152]
本实施例不对应用服务器将数据模型发送至数据库服务器的具体方法进行限定。例如:通过附加脚本的方式将数据模型发送至数据库服务器。
[0153]
503:数据库服务器接收应用服务器发送的数据模型,根据数据模型定义数据库模型;
[0154]
由于应用服务器发送的数据模型为待存储数据的数据模型,而待存储数据最终会存储至数据库服务器的数据库中,因此,数据库服务器根据数据模型定义数据库模型,以存储该待存储数据。
[0155]
例如:数据库服务器根据数据模型定义数据库模型,而每个数据库模型在mongoDB中对应一个表。
[0156]
另外,随着数据库服务器存储的数据较多,数据库模型也较杂。为了便于数据库服务器对数据库模型的管理,数据库服务器还可以包括一个数据库模型管理器,专门用来存储数据库服务器中数据库模型。
[0157]
例如在mongoDB实现中,数据库模型类似于一个JSON串对象。在同一个mongoDB库中,建立一个数据库模型管理器,对mongoDB库中的数据库模型进行统一查找或者管理。
[0158]
通过执行步骤501至步骤503,数据库服务器会建立与待存储数据匹配的数据库,该数据库的数据库模型与待存储数据的数据模型相同。
[0159]
步骤501至步骤503,除在初次执行本实施例提供的数据查询方法时执行外,还可以在其他情况下执行。例如:当应用服务器监测到待存储数据的数据模型发生改变时,触发执行步骤501至步骤503。再例如:数据库服务器监测到数据库模型与待存储数据的数据模型不匹配时,触发执行步骤501至步骤503。本实施例不对执行步骤501至步骤503的具体触发条件进行限定。
[0160]
504:数据库服务器建立数据库模型与应用服务器之间的关联关系;
[0161]
此步骤的具体实现方式,包括但不限于如下3种。
[0162]
第1种实现方式:数据库服务器向应用服务器发布数据库模型;
[0163]
具体的,数据库服务器可以直接向应用服务器发布数据库模型,也可以向应用服务器发布数据库模型的标识。
[0164]
其中,数据库模型的标识包括但不限于数据库模型的名称。
[0165]
第2种实现方式:数据库服务器确定数据库模型的接口配置参数,向应用服务器发布接口配置参数;
[0166]
数据库服务器定义数据库模型的接口配置参数,约定应用服务器生成的数据查询脚本可以通过该接口配置参数与数据库模型对应的数据库连接,从而实现数据查询脚本对数据库的访问。
[0167]
其中,接口配置参数可以为一个公共变量。
[0168]
另外,数据库服务器定义的接口配置参数,随着具体实施情况的不同有所变化。例如:
[0169]
若数据库访问操作包含基本的创建,删除,更新,插入和查询,这些操作由mongoDB本来的操作指令定义,在应用服务器编程时,可以像编写本地程序一样编写这些预制脚本,达到在数据库服务器上允许数据库分析和运算的效果。因此,数据库服务器必须为该脚本定义以下几个接口的接口配置参数:
[0170]
1)数据库连接接口,包含数据库内文档的创建,删除,插入,更新和查询功能,提供一个数据模型的访问接口;
[0171]
2)基本的javascript基础库接口,提供对数据进行运算和筛选等基本数据分析的于运行环境。
[0172]
3)提供用于返回的接口,通过调用返回接口的回调函数,退出脚本并返回处理获得的数据。
[0173]
第3种实现方式:数据库服务器向应用服务器发布数据库模型,并且,数据库服务器确定数据库模型的接口配置参数,向应用服务器发布接口配置参数。
[0174]
505:应用服务器获取来自数据存储系统的数据库模型和/或接口配置参数;
[0175]
应用服务器获取到数据库模型和/或接口配置参数后,可以通过数据库模型和/或接口配置参数与数据库模型对应的数据库进行连接,并基于该连接对该数据库进行访问和操作。
[0176]
例如:应用服务器凭借数据库模型标识获得对应的数据库连接,并对这一数据库表 进行读写。
[0177]
通过本步骤,可以通过不同的数据库模型和/或接口配置参数与相应数据库模型对应的数据库进行连接,并基于该连接对相应的数据库进行访问和操作,实现数据库的单独控制,以及数据库操作的单独控制,提高并发效率。
[0178]
执行至此,应用服务器与数据库服务器之间建立了数据库连接,基于该连接,应用服务器可以访问相应的数据库,对数据库中的数据进行操作。
[0179]
506:终端发起查询请求后,应用服务器获取数据查询请求,根据数据查询请求生成数据查询脚本;
[0180]
具体的,应用服务器根据步骤505中获取的来自数据存储系统的数据库模型和/或接口配置参数生成数据查询脚本。
[0181]
其中,数据查询脚本中包括但不限于:数据查询语句和结果分析语句。结果分析语句包括但不限于:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0182]
例如,应用服务器根据步骤505中获取的来自数据存储系统的数据库模型和/或接口配置参数生成数据查询脚本,形成如下数据查询脚本:
[0183]
1)查询与终端对话的所有联系人;
[0184]
2)查找与每个联系人对话的最后一条消息;
[0185]
3)按时间顺序对每个联系人对话的最后一条消息进行排序,确定最后与终端对话的联系人;
[0186]
4)查询最后与终端对话的联系人的信息。
[0187]
其中,1)、2)、4)为数据查询语句,3)为结果分析语句。
[0188]
需要说明的是,上述脚本仅为示例,在实际应用中脚本内容、脚本形式、脚本所用语言均可以适应性变化,本实施例不对具体脚本内容、形式、使用语言进行限定。
[0189]
507:应用服务器将数据查询脚本发送至数据库服务器;
[0190]
例如:应用服务器使用结构化查询语言将数据查询脚本发送至数据库服务器。
[0191]
508:数据库服务器获取来自应用服务器的数据查询脚本后,执行数据查询脚本,获得数据查询结果,并将数据查询结果反馈至应用服务器;
[0192]
其中,数据查询脚本中包括但不限于:数据查询语句和结果分析语句。结果分析语句包括但不限于:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0193]
例如,数据库服务器先查询与终端对话的所有联系人;再查找与每个联系人对话的最后一条消息;然后按时间顺序对每个联系人对话的最后一条消息进行排序,确定最后 与终端对话的联系人;最后查询最后与用户对话的联系人的信息。
[0194]
另外,在查询时,若数据库服务器不仅存储数据,还缓存部分数据,则查询数据的过程还可以通过如下方式实现:
[0195]
首先判断自身有没有缓存相关数据,如果已经进行过缓存,并且缓存没有过期,则获取缓存的数据,从而节约数据库访问。
[0196]
例如,当查询与终端对话的所有联系人时,先判断自身有没有缓存与终端对话的所有联系人的相关数据,如果已经进行过缓存,并且缓存没有过期,则获取缓存的数据。
[0197]
在具体执行数据查询脚本时,数据库服务器可以支持语言或库类的动态加载,在javascript中,支持使用eval动态加载数据查询脚本,而java则也支持class loader方式的加载数据查询脚本,但是需要进行预编译。
[0198]
不同语言和框架的数据库服务器动态加载的方式不同,本实施例中使用的Node服务器,本身带有加载动态模块的机制。在输入中,应用服务器仅需要将数据查询脚本编写为一个文本文件发送给数据库服务器,数据库服务器接收后作为模块加载执行。
[0199]
另外,为了保证数据查询脚本的安全性,数据库服务器脚本加载之前必须校验权限,防止危险代码注入。
[0200]
509:应用服务器接收数据库服务器执行数据查询脚本得到的结果。
[0201]
通过执行上述9个步骤,不仅把数据运行功能放在数据库服务器上,而把数据分析代码的提供方仍然放在数据库服务器上。同时,数据库服务器执行的是数据查询脚本,而非一般的查询语言,从而优化数据访问的流程,减少频繁的与数据库服务器进行网络通信。通过该种方式,能够在数据库服务器运行时同时执行数据分析和筛选运算并灵活地给出运算结果。
[0202]
为了更加简单明了的说明本实施例提供的数据查询方法,参见图6,该方法整体流程为:1)应用服务器应用部署;2)应用服务器应用初始化;3)应用服务器定义数据模型;4)应用服务器确认数据库服务器中是否存在数据模型,若不存在,则执行5),若存在,则执行6);5)应用服务器向数据库服务器方发送数据模型;6)应用服务器从数据库服务器获取配置,该配置包括但不限于数据库模型和/或接口配置参数;7)应用服务器向数据库服务器发送数据查询脚本;8)应用服务器确定查询是否结束,若结束,则执行9),若未结束,则执行7);9)应用服务器输出结果。
[0203]
上述方法将部分数据分析和处理操作直接放到数据库服务器上执行,解决数据库服务器中数据库访问查询不方便的问题,扩展数据库操作的执行方式。
[0204]
进一步地,为了更加明显的说明本实施例提供的数据查询方法的优势,现将现有数据查询方法的实现流程与本实施例提供的数据查询方法的实现流程进行对照。
[0205]
参见图7,现有数据查询方法的实现流程如下:1)终端向应用服务器发送查询请求;2)应用服务器处理该查询请求;3)应用服务器根据该查询请求向数据库服务器发送数据请求;4)数据库服务器解析数据请求,确定查询内容;5)数据库服务器基于存储器执行查询;6)存储器进行数据库访问获得查询数据;7)存储器向数据库服务器返回数据;8)数据库服务器向应用服务器返回数据;9)应用服务器分析返回的数据;10)应用服务器根据分析结果再次向数据库服务器发送数据请求;11)数据库服务器解析数据请求,确定查询内容;12)数据库服务器基于存储器执行查询;13)存储器进行数据库访问获得查询数据;14)存储器向数据库服务器返回数据;15)数据库服务器向应用服务器返回数据;16)应用服务器分析返回的数据,得到最终结果;17)应用服务器向终端返回最终结果。
[0206]
参见图8,本实施例提供的数据查询方法的实现流程如下:1)终端向应用服务器发送业务请求;2)应用服务器处理该业务请求;3)应用服务器构建数据查询脚本;4)应用服务器向数据库服务器发送数据查询脚本;5)数据库服务器加载数据查询脚本;6)数据库服务器执行数据查询脚本;7)存储器进行数据库访问获得查询数据;8)存储器向数据库服务器返回数据;9)数据库服务器根据存储器返回的数据进行数据分析;10)数据库服务器基于存储器再次执行查询;11)存储器进行数据库访问获得查询数据;12)存储器向数据库服务器返回数据;13)数据库服务器向应用服务器返回数据;14)应用服务器分析返回的数据,得到最终结果;15)应用服务器向终端返回最终结果。
[0207]
对数据之间关系的定义往往依赖于数据库本身实现。例如:mongoDB中的find语句,以及一些and或者or的操作符,这些操作符仅能进行简单的运算,不能够支持复杂数据筛选或者运算等操作。
[0208]
因为以上原因,对于复杂数据筛选,现有的实现流程,仅能放在应用服务器实现,通过查询数据库获得一个粗略的结果,再返回到应用服务器程序中运行筛选或者分析处理,最后再根据运行结果执行下一步查询操作。
[0209]
本实施例提出的数据查询方法,直接将数据查询脚本作为查询请求的一部分发送到数据服务器,数据库服务器执行数据查询脚本从数据库内查询并运算出最终数据返回应用服务器。使得在应用服务器方面,开发人员只需要实现准备数据查询脚本,并在查询 发生时动态去修改这些数据查询脚本,通过数据库查询端口发送到数据库服务器。数据库服务器直接返回数据查询脚本执行的结果,从而避免频繁网络访问问题,对于异地分布的系统来说,节约大量网络通信延迟时间,并缓解本地应用服务器在处理网络返回的查询结果时的运算压力。
[0210]
在数据分析密集型的应用中,使用这一方案,可以显著减少网络请求次数,从而节约应用服务器与数据库服务器的通信时间。显著缩短了应用服务器访问数据库服务器所花费的时间。而动态构建数据查询脚本也增加了数据库服务器使用灵活性。
[0211]
有益效果:
[0212]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。
[0213]
当数据查询并发情况增多时,可以利用数据存储系统本身的并发能力,提升数据查询效率。
[0214]
其中,本实施例不对数据存储系统并发能力的具体实现方式进行限定,例如:数据存储系统由中间件和数据库服务器组成,由中间件对数据查询脚本进行分发,实现数据存储系统的并发运行。
[0215]
中间件对数据查询脚本进行分发时,由于在数据密集型应用中读数据库的频率以及硬盘访问远大于写数据库,通过中间件对数据查询脚本的拆分,优化数据查询顺序,进而优化数据库访问过程,减少对数据库读取的次数和读取范围,优化运行效率。对分布在不同数据库服务器上的数据库进行查询时,通过数据查询脚本的拆分,可以充分利用不同数据库服务器的CPU进行运算,统一返回运行结果,该种方式的实现流程可以参见图9所示的实施例。
[0216]
图9所示的实施例以如下具体场景为例,对于其他场景,可参见如下场景的实现方式。
[0217]
具体场景:在一个聊天应用中,用户通过结构化查询语言查询最后与自己对话的联系人信息,数据存储系统由中间件和一台或多台数据库服务器组成。
[0218]
参见图9,该方法流程具体如下:
[0219]
901:应用服务器获取待存储数据的数据模型;
[0220]
本步骤的实现方式与步骤501相同,可参见步骤501,此处不再赘述。
[0221]
902:应用服务器将数据模型发送至数据库服务器;
[0222]
本步骤的实现方式与步骤502相同,可参见步骤502,此处不再赘述。
[0223]
903:数据库服务器接收应用服务器发送的数据模型,根据数据模型定义数据库模型;
[0224]
数据库服务器可以直接接收应用服务器发送的数据模型,也可以通过中间件接收应用服务器发送的数据模型。
[0225]
通过执行步骤901至步骤903,数据库服务器会建立与待存储数据匹配的数据库,该数据库的数据库模型与待存储数据的数据模型相同。
[0226]
步骤901至步骤903,除在初次执行本实施例提供的数据查询方法时执行外,还可以在其他情况下执行。例如:当应用服务器监测到待存储数据的数据模型发生改变时,触发执行步骤901至步骤903。再例如:数据库服务器监测到数据库模型与待存储数据的数据模型不匹配时,触发执行步骤901至步骤903。本实施例不对执行步骤901至步骤903的具体触发条件进行限定。
[0227]
904:数据库服务器建立数据库模型与应用服务器之间的关联关系;
[0228]
此步骤的具体实现方式,包括但不限于如下3种。
[0229]
第1种实现方式:数据库服务器向应用服务器发布数据库模型;
[0230]
第2种实现方式:数据库服务器确定数据库模型的接口配置参数,向应用服务器发布接口配置参数;
[0231]
第3种实现方式:数据库服务器向应用服务器发布数据库模型,并且,数据库服务器确定数据库模型的接口配置参数,向应用服务器发布接口配置参数。
[0232]
其中,数据库服务器可以直接向应用服务器发布数据库模型,也可以通过中间件向应用服务器发布数据库模型。数据库服务器可以直接向应用服务器发布接口配置参数,也可以通过中间件向应用服务器发布接口配置参数。
[0233]
905:应用服务器获取来自数据存储系统的数据库模型和/或接口配置参数;
[0234]
应用服务器可以直接获取来自数据存储系统的数据库模型和/或接口配置参数,也可以通过中间件获取来自数据存储系统的数据库模型和/或接口配置参数。
[0235]
906:终端发起查询请求后,应用服务器获取数据查询请求,根据数据查询请求生成数据查询脚本;
[0236]
本步骤的实现方式与步骤506相同,可参见步骤506,此处不再赘述。
[0237]
907:应用服务器将数据查询脚本发送至中间件;
[0238]
908:中间件获取来自应用服务器的数据查询脚本,确定执行数据查询脚本的一个或多个数据库服务器后,将数据查询脚本分发至数据库服务器;
[0239]
具体的,中间件可以获取各个数据库服务器存储的数据情况,选择执行数据查询脚本的数据库服务器,向每一个选择的数据库服务器分发一份数据查询脚本。
[0240]
例如,数据查询脚本为:查询与用户语音对话的所有语音联系人以及与用户短信对话的所有短信联系人。
[0241]
若存储语音通话数据的数据库服务器有2个,数据库服务器11和数据库服务器12,其中,数据库服务器11存储有用户0-100号的语音联系人,数据库服务器12存储有用户100-200号的语音联系人。存储语音通话数据的数据库服务器有2个,数据库服务器21和数据库服务器22,其中,数据库服务器21存储有用户0-100号的短信联系人,数据库服务器22存储有用户100-200号的短信联系人。
[0242]
此步骤将数据查询脚本分发给数据库服务器11、数据库服务器12、数据库服务器21和数据库服务器22。即向数据库服务器11发送一份数据查询脚本、向数据库服务器12发送一份数据查询脚本、向数据库服务器21发送一份数据查询脚本、向数据库服务器22发送一份数据查询脚本。
[0243]
909:数据库服务器获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本后,执行分发的数据查询脚本,获得数据查询结果,并将数据查询结果反馈至中间件;
[0244]
数据库服务器可以根据其存储的数据确定出数据查询脚本中哪些部分是该数据库服务器可以执行的,哪些部分不需要执行。数据库服务器获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本后,执行分发的数据查询脚本中其认为需要执行的部分。
[0245]
以数据查询脚本为:查询与用户语音对话以及与用户短信对话的所有联系人为例。
[0246]
数据库服务器11,其存储有用户0-100号的语音联系人,因此,其可以执行查询与用户语音对话的0-100号语音联系人。数据库服务器11仅执行在0-100号语音联系人中,查询与用户语音对话的语言联系人部分,不执行在101-200号语音联系人中,查询与用户语音对话的语音联系人部分以及查询与用户短信对话的所有短信联系人部分。获得针对0-100号语音联系人的数据查询结果后,将数据查询结果反馈至中间件。
[0247]
数据库服务器12,其存储有用户101-200号的语音联系人,因此,其可以执行查询 与用户语音对话的101-200号语音联系人。数据库服务器12仅执行在101-200号语音联系人中,查询与用户语音对话的语言联系人部分,不执行在0-100号语音联系人中,查询与用户语音对话的语音联系人部分以及查询与用户短信对话的所有短信联系人部分。获得针对101-200号语音联系人的数据查询结果后,将数据查询结果反馈至中间件。
[0248]
数据库服务器21,其存储有用户0-100号的短信联系人,因此,其可以执行查询与用户短信对话的0-100号短信联系人。数据库服务器11仅执行在0-100号短信联系人中,查询与用户短信对话的短信联系人部分,不执行在101-200号短信联系人中,查询与用户短信对话的短信联系人部分以及查询与用户语音对话的所有语音联系人部分。获得针对0-100号短信联系人的数据查询结果后,将数据查询结果反馈至中间件。
[0249]
数据库服务器22,其存储有用户101-200号的短信联系人,因此,其可以执行查询与用户短信对话的101-200号短信联系人。数据库服务器22仅执行在101-200号短信联系人中,查询与用户短信对话的短信联系人部分,不执行在0-100号短信联系人中,查询与用户短信对话的短信联系人部分以及查询与用户语音对话的所有语音联系人部分。获得针对101-200号短信联系人的数据查询结果后,将数据查询结果反馈至中间件。
[0250]
在查询时,若数据库服务器不仅存储数据,还缓存部分数据,则查询数据的过程还可以首先判断自身有没有缓存相关数据,如果已经进行过缓存,并且缓存没有过期,则获取缓存的数据,从而节约数据库访问。
[0251]
910:中间件获得数据库服务器反馈的数据查询结果,并将数据查询结果发送至应用服务器;
[0252]
由于数据库服务器执行数据查询脚本中与其相关的部分,因此本步骤中间件在获得各数据库服务器反馈的数据查询结果后,会对各数据查询结果进行汇总,将汇总的结果发送至应用服务器。
[0253]
汇总的具体方式可以为各数据库服务器反馈的数据查询结果的叠加。
[0254]
例如:中间件获得数据库服务器11反馈的针对0-100号语音联系人的数据查询结果、数据库服务器12反馈的针对101-200号语音联系人的数据查询结果、数据库服务器21反馈的针对0-100号短信联系人的数据查询结果、数据库服务器22反馈的针对101-200号短信联系人的数据查询结果后,将上述4各结果叠加到一起,得到0-200号语音联系人的数据查询结果以及0-200号短信联系人的数据查询结果,将0-200号语音联系人的数据查询结果以及0-200号短信联系人的数据查询结果发送至应用服务器。
[0255]
911:应用服务器接收中间件发送的结果。
[0256]
为了更加明显的说明本实施例提供的数据查询方法的优势,现将本实施例提供的数据查询方法再次进行说明。参见图10,1)终端向应用服务器发送业务请求;2)应用服务器处理该业务请求;3)应用服务器向中间件发送配置查询请求;4)中间件查询配置,并返回查询的配置,该配置包括但不限于数据库模型和/或接口配置参数;5)应用服务器根据该配置构建数据查询脚本;6)应用服务器向中间件发送数据查询脚本;7)中间件分发数据查询脚本;8)分发到数据查询脚本的数据库服务器基于数据查询脚本执行查询;9)数据库服务器向中间件返回执行结果;10)数据库服务器汇总执行结果后向应用服务器返回汇总的结果;11)应用服务器分析返回的汇总结果,得到最终结果;15)应用服务器向终端返回最终结果。
[0257]
通过执行动态数据查询脚本可以更加精确智能地在数据库中查找所需要的结果,在数据库进行拆分后,也可以通过将运算分布在不同数据库减少数据库服务器的负担。
[0258]
有益效果:
[0259]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。
[0260]
基于同一发明构思,本实施例提供了一种应用服务器,由于该应用服务器解决问题的原理与图2所示的一种数据查询方法相似,因此该应用服务器的实施可以参见图2所示的方法的实施例,重复之处不再赘述。
[0261]
参见图11,该应用服务器包括:
[0262]
第一获取模块1101,用于获取数据查询请求;
[0263]
生成模块1102,用于根据第一获取模块1101获取的数据查询请求生成数据查询脚本;
[0264]
第一发送模块1103,用于将生成模块1102生成的数据查询脚本发送至数据存储系统;
[0265]
接收模块1104,用于接收数据存储系统执行第一发送模块1103发送的数据查询脚本得到的结果。
[0266]
可选地,数据查询脚本中包括数据查询语句和结果分析语句。
[0267]
可选地,结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以 上的任意组合。
[0268]
可选地,生成模块1102,用于获取来自数据存储系统的数据库模型和/或接口配置参数,根据数据库模型和/或接口配置参数生成数据查询脚本。
[0269]
参见图12,该应用服务器,还包括:
[0270]
第二获取模块1105,用于获取待存储数据的数据模型;
[0271]
第二发送模块1106,用于将第二获取模块1105获取的数据模型发送至数据存储系统,以使数据存储系统根据数据模型定义数据库模型。
[0272]
有益效果如下:
[0273]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。
[0274]
基于同一发明构思,本实施例提供了一种数据库服务器,由于该数据库服务器解决问题的原理与图3所示的一种数据查询方法相似,因此该数据库服务器的实施可以参见图3所示的方法的实施例,重复之处不再赘述。
[0275]
参见图13,该数据库服务器包括:
[0276]
获取模块1301,用于获取来自应用服务器的数据查询脚本;
[0277]
执行模块1302,用于执行获取模块1301获取的数据查询脚本,获得数据查询结果;
[0278]
反馈模块1303,用于将执行模块1302获得的数据查询结果反馈至应用服务器。
[0279]
可选地,数据查询脚本中包括数据查询语句和结果分析语句。
[0280]
可选地,结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[0281]
可选地,获取模块1301,用于获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本;
[0282]
反馈模块1303,用于通过中间件将数据查询结果反馈至应用服务器。
[0283]
参见图14,该数据库服务器,还包括:
[0284]
接收模块1304,用于接收应用服务器发送的数据模型;
[0285]
定义模块1305,用于根据接收模块1304接收的数据模型定义数据库模型;
[0286]
建立模块1306,用于建立定义模块1305定义的数据库模型与应用服务器之间的关 联关系。
[0287]
可选地,建立模块1306,用于向应用服务器发布数据库模型,和/或,确定数据库模型的接口配置参数,向应用服务器发布接口配置参数。
[0288]
有益效果如下:
[0289]
获取到应用服务器根据数据查询请求生成数据查询脚本后,执行该数据查询脚本,将执行脚本得到的结果反馈至应用服务器,使得仅接收应用服务器发送一次数据查询脚本,即可根据数据查询脚本获取最终结果,降低了与应用服务器之间的访问次数,提高数据查询效率。
[0290]
基于同一发明构思,本实施例提供了一种中间件,由于该中间件解决问题的原理与图4所示的一种数据查询方法相似,因此该中间件的实施可以参见图4所示的方法的实施例,重复之处不再赘述。
[0291]
参见图15,该中间件包括:
[0292]
第一获取模块1501,用于获取来自应用服务器的数据查询脚本;
[0293]
确定模块1502,用于确定执行第一获取模块1501获取的数据查询脚本的一个或多个数据库服务器;
[0294]
发送模块1503,用于将第一获取模块1502获取的数据查询脚本分发至数据库服务器;
[0295]
第二获取模块1504,用于获得数据库服务器反馈的数据查询结果;
[0296]
发送模块1505,用于将第二获取模块1504获取的数据查询结果发送至应用服务器。
[0297]
有益效果如下:
[0298]
中间件获取到应用服务器根据数据查询请求生成数据查询脚本后,将数据查询脚本分发至数据库服务器,使数据库服务器执行分发的数据查询脚本,将数据库服务器返回的数据查询结果发送至应用服务器,使得仅需接收应用服务器发送一次数据查询脚本,即可根据数据查询脚本获取数据、分析数据得到结果,降低了与应用服务器之间的访问次数,提高数据查询效率。
[0299]
基于同一发明构思,本实施例提供了一种数据查询系统,该系统用于执行图5或图6所述实施例所提供的数据查询方法,参见图16,该系统包括:应用服务器1601和数据存储系统1602;
[0300]
其中,应用服务器1601如图11或图12所示的应用服务器;
[0301]
数据存储系统1602由如图13或图14所示的数据库服务器,或者,数据存储系统1602由如图13或图14所示的数据库服务器和如图15所示的中间件组成。
[0302]
有益效果如下:
[0303]
获取数据查询请求,根据数据查询请求生成数据查询脚本;将数据查询脚本发送至数据存储系统;接收数据存储系统执行数据查询脚本得到的结果,使得仅向数据存储系统发送一次数据查询脚本,数据存储系统即可根据数据查询脚本获取最终结果,降低了与数据存储系统之间的访问次数,提高数据查询效率。
[0304]
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
[0305]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0306]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0307]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0308]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[0309]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

权利要求书

[权利要求 1]
一种数据查询方法,其特征在于,所述方法包括: 获取数据查询请求,根据所述数据查询请求生成数据查询脚本; 将所述数据查询脚本发送至数据存储系统; 接收所述数据存储系统执行所述数据查询脚本得到的结果。
[权利要求 2]
根据权利要求1所述的方法,其特征在于,所述数据查询脚本中包括数据查询语句和结果分析语句。
[权利要求 3]
根据权利要求2所述的方法,其特征在于,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[权利要求 4]
根据权利要求1所述的方法,其特征在于,所述根据数据查询请求生成数据查询脚本,包括: 获取来自数据存储系统的数据库模型和/或接口配置参数,根据所述数据库模型和/或接口配置参数生成数据查询脚本。
[权利要求 5]
根据权利要求1所述的方法,其特征在于,所述方法,还包括: 获取待存储数据的数据模型; 将所述数据模型发送至数据存储系统,以使所述数据存储系统根据所述数据模型定义数据库模型。
[权利要求 6]
一种应用服务器,其特征在于,所述应用服务器包括: 第一获取模块,用于获取数据查询请求; 生成模块,用于根据所述第一获取模块获取的数据查询请求生成数据查询脚本; 第一发送模块,用于将所述生成模块生成的数据查询脚本发送至数据存储系统; 接收模块,用于接收所述数据存储系统执行所述第一发送模块发送的数据查询脚本得到的结果。
[权利要求 7]
根据权利要求6所述的应用服务器,其特征在于,所述数据查询脚本中包括数据查询语句和结果分析语句。
[权利要求 8]
根据权利要求7所述的应用服务器,其特征在于,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[权利要求 9]
根据权利要求6所述的应用服务器,其特征在于,所述生成模块,用于获取来自数据存储系统的数据库模型和/或接口配置参数,根据所述数据库模型和/或接口配置参数生成数据查询脚本。
[权利要求 10]
根据权利要求6所述的应用服务器,其特征在于,所述应用服务器,还包括: 第二获取模块,用于获取待存储数据的数据模型; 第二发送模块,用于将所述第二获取模块获取的数据模型发送至数据存储系统,以使所述数据存储系统根据所述数据模型定义数据库模型。
[权利要求 11]
一种数据查询方法,其特征在于,所述方法包括: 获取来自应用服务器的数据查询脚本; 执行所述数据查询脚本,获得数据查询结果; 将所述数据查询结果反馈至所述应用服务器。
[权利要求 12]
根据权利要求11所述的方法,其特征在于,所述数据查询脚本中包括数据查询语句和结果分析语句。
[权利要求 13]
根据权利要求12所述的方法,其特征在于,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[权利要求 14]
根据权利要求11所述的方法,其特征在于,所述获取来自应用服务器数据查询脚本,包括: 获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本; 所述将数据查询结果反馈至所述应用服务器包括: 通过所述中间件将所述数据查询结果反馈至所述应用服务器。
[权利要求 15]
根据权利要求11至14任一权利要求所述的方法,其特征在于,所述方法,还包括: 接收所述应用服务器发送的数据模型; 根据所述数据模型定义数据库模型; 建立所述数据库模型与所述应用服务器之间的关联关系。
[权利要求 16]
根据权利要求15所述的方法,其特征在于,所述建立所述数据库模型与所述应用服务器之间的关联关系,包括: 向所述应用服务器发布数据库模型,和/或,确定所述数据库模型的接口配置参数,向所述应用服务器发布所述接口配置参数。
[权利要求 17]
一种数据库服务器,其特征在于,所述数据库服务器包括: 获取模块,用于获取来自应用服务器的数据查询脚本; 执行模块,用于执行所述获取模块获取的数据查询脚本,获得数据查询结果; 反馈模块,用于将所述执行模块获得的数据查询结果反馈至所述应用服务器。
[权利要求 18]
根据权利要求17所述的数据库服务器,其特征在于,所述数据查询脚本中包括数据查询语句和结果分析语句。
[权利要求 19]
根据权利要求18所述的数据库服务器,其特征在于,所述结果分析语句包括:结果筛选语句、结果排序语句或结果运算语句,或以上的任意组合。
[权利要求 20]
根据权利要求17所述的数据库服务器,其特征在于,所述获取模块,用于获取中间件基于来自应用服务器的数据查询脚本分发的数据查询脚本; 所述反馈模块,用于通过所述中间件将所述数据查询结果反馈至所述应用服务器。
[权利要求 21]
根据权利要求17至20任一权利要求所述的数据库服务器,其特征在于,所述数据库服务器,还包括: 接收模块,用于接收所述应用服务器发送的数据模型; 定义模块,用于根据所述接收模块接收的数据模型定义数据库模型; 建立模块,用于建立所述定义模块定义的数据库模型与所述应用服务器之间的关联关系。
[权利要求 22]
根据权利要求21所述的数据库服务器,其特征在于,所述建立模块,用于向所述应用服务器发布数据库模型,和/或,确定所述数据库模型的接口配置参数,向所述应用服务器发布所述接口配置参数。
[权利要求 23]
一种数据查询方法,其特征在于,所述方法包括: 获取来自应用服务器的数据查询脚本; 确定执行所述数据查询脚本的一个或多个数据库服务器; 将所述数据查询脚本分发至所述数据库服务器; 获得所述数据库服务器反馈的数据查询结果,并将所述数据查询结果发送至所述应用服务器。
[权利要求 24]
一种中间件,其特征在于,所述中间件包括: 第一获取模块,用于获取来自应用服务器的数据查询脚本; 确定模块,用于确定执行所述第一获取模块获取的数据查询脚本的一个或多个数据库服务器; 发送模块,用于将所述第一获取模块获取的数据查询脚本分发至所述数据库服务器; 第二获取模块,用于获得所述数据库服务器反馈的数据查询结果; 发送模块,用于将所述第二获取模块获取的数据查询结果发送至所述应用服务器。
[权利要求 25]
一种数据查询系统,其特征在于,所述系统包括:应用服务器和数据存储系统; 其中,所述应用服务器如权利要求6至10中任一权利要求所述的应用服务器; 所述数据存储系统由如权利要求17、18、19、21或22所述的数据库服务器组成,或者,所述数据存储系统由如权利要求17至22中任一权利要求所述的数据库服务器和如权利要求24所述的中间件组成。

附图

[ 图 0001]  
[ 图 0002]  
[ 图 0003]  
[ 图 0004]  
[ 图 0005]  
[ 图 0006]  
[ 图 0007]  
[ 图 0008]  
[ 图 0009]  
[ 图 0010]  
[ 图 0011]  
[ 图 0012]  
[ 图 0013]  
[ 图 0014]  
[ 图 0015]  
[ 图 0016]