跨多数据库的分页方法和装置与流程

文档序号:12863842阅读:325来源:国知局
跨多数据库的分页方法和装置与流程

本申请涉及计算机技术领域,具体涉及数据库分页技术领域,尤其涉及一种跨多数库的分页方法和装置。



背景技术:

随着互联网技术的发展产生了很多大型web应用,通过这些嵌入在浏览器中的大型web应用,用户可以浏览存储于web服务器中的各种数据。同时,在这些大型web应用中,数据的生产和消费往往涉及到多种数据库。有时为了响应用户的需求,需要将不同数据库的数据合并后展示给用户,同时基于性能和方便用户查看,需要对这些合并后的数据分页处理。

目前采用的对多数据库分页的决定方案为,使用一个数据合并器,定时抽取多个数据库的数据,将其合并后存入特定的合并数据库中,当有客户端发出分页请求时,再对合并数据库进行分页查询。从本质上讲,这依然是对单数据库进行分页。同时,这种数据合并分页方式实时性差,且需要增加额外的存储资源来存储聚合数据。



技术实现要素:

本申请的目的在于提出一种跨多数据库的分页方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种多数据的分页方法,方法包括:接收客户端对m个数据库内容的分页请求,分页请求包括:分页号n、分页记录数k以及查询条件,其中m,n,k均为自然数;获取各数据库的条数记录,其中,每个条数记录为分页号为n-1的分页的k行记录中在该条数记录所对应的数据库中所取的最后一行记录的行号;根据每个条数记录在与之对应的数据库中从条数记录的下一行开始取 满足查询条件的k行记录;合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序,取前k行记录作为分页结果集;向客户端发送响应信息,响应信息包括分页结果集。

第二方面,本申请提供了一种跨多数据库的分页装置,装置包括:接收单元,配置用于接收客户端对m个数据库内容的分页请求,分页请求包括:分页号n、分页记录数k以及查询条件,其中m,n,k均为自然数;第一获取单元,配置用于获取各数据库的条数记录,其中,每个条数记录为分页号为n-1的分页的k行记录中在该条数记录所对应的数据库中所取的最后一行记录的行号;第二获取单元,配置用于根据每个条数记录在与之对应的数据库中从条数记录的下一行开始获取满足查询条件的k行记录;生成单元,配置用于合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序,取前k行记录作为分页结果集;发送单元,配置用于向客户端发送响应信息,响应信息包括分页结果集。

本申请提供的跨多数据库的方法和装置,通过接收客户端对m个数据库内容的分页请求,所示分页请求包括分页号、分页记录数k以及查询条件,获取各数据库的条数记录,条数记录为前一页中取的每个数据库多行记录的最后一行记录的行号;然后根据每个条数记录在与之对应的数据库中从条数记录的下一行开始取满足查询条件k行记录;接着合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序,取前k行记录作为分页结果集;最后向客户端发送响应信息,响应信息包括分页结果集。实现了在不需要额外的存储资源的情况下,实时对多种数据库进行数据聚合分页展示。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的跨多数据库的分页方法的一个实施例的流程 图;

图3是根据图2所示跨多数据库的分页方法的一个应用场景的流程图;

图4是根据本申请的跨多数据库的分页装置的结构示意图;

图5是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的跨多数据库的分页方法或跨多数据库的分页装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104、106,服务器105,数据库服务器107、108、109。网络104、106用以在终端设备101、102、103、服务器105以及数据库服务器107、108、109之间提供通信链路的介质。网络104和106可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以向服务器105发送数据分页请求,并接收服务器105返回的分页结果集等。终端设备101、102、103上可以安装有各种软件,例如浏览器、搜索类应用等。

数据库服务器107、108、109中可以是安装有各种数据库的服务器。各种数据库的类型例如可以为:oracle、mysqlserver等。其中,在每种数据库中存储有多行记录。

服务器105可以是提供各种服务的服务器,例如通过网络104接 收来自终端设备101、102、103上的对数据库服务器107、108、109中数据的分页请求。服务器105通过网络106与数据库服务器107、108、109交互,以向数据库服务器107、108、109中的每一个数据库发送根据来自终端设备的分页请求构造的对应该数据库类型的分页查询语句,并接收该数据库响应于分页查询语句而返回的多行记录。服务器105对数据库服务器107、108、109中各数据库返回的多行记录进行分析处理,并选取符合预定条件的多行记录通过网络104发送给客户端101、102和103。

终端设备101、102和103可以是具有显示屏并且支持各种软件的各种电子设备,包括但不限于平板电脑、膝上型便携计算机和智能手机等等。

需要说明的是,本申请实施例所提供的跨多数据库的分页方法一般由服务器105执行,相应地,跨多数据库的分页装置一般设置于服务器105中。

应该理解,图1中的终端设备、网络和服务器以及数据库服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器和数据库服务器。

继续参考图2,示出了根据本申请的跨多数据库的分页方法的一个实施例的流程200。跨多数据库的分页方法,包括以下步骤:

步骤201,接收客户端对m个数据库内容的分页请求。

在本实施例中,跨多数据库的分页方法运行于其上的电子设备(例如图1所示的服务器105)可以通过有线连接方式或者无线连接方式从用户终端(如图1所示的终端设备101、102、103)接收客户端对安装于数据库服务器(如图1所示的数据库服务器107、108、109)中的m个数据库内容的分页请求。

在本实施例中,客户端通过终端设备上安装的各种浏览器来运行各种web应用以向web数据库请求分页查看满足查询条件的多条数据记录。其中,各种web应用例如可以是基于浏览器的web视频应用。基于浏览器的web应用通过网络(例如图1所示的104)将用户的分页 请求及查询条件发送给跨多数据库的分页方法运行于其上的电子设备(例如图1所示的服务器105)。例如,用户可以在web视频应用上输入查询条件。此处的查询条件例如可以是某类型的视频。

在本实施例中,在后台支持基于浏览器的web应用运行的web应用数据库可以包括m个数据库,m为自然数。其中多m个数据库的类型可以不相同,例如m个的类型分别可以为oracle、mysql、sybase、db2等等中的一种数据库。m个数据库可以安装在一台数据库服务器中,也可以安装在多台数据库服务器中。m个数据库中至少包括一个相同的字段,也即变量。该相同字段列的数据的数据结构相同。在本实施例的一些可选的实现方式中,m个数据库中预先存储的多行数据具有相同的排序方式。在向m个数据库中存储数据时可以将实时数据按照一定规则水平分割后放入m个数据库中,也可以将实时数据垂直分割放入m个数据库中。对于存储有垂直分割数据的m个数据库进行分页查询与对单个数据库分页查询相似,此处不做赘述。本申请中对m个数据库进行分页查询是指对存储有被水平分割的数据的m个数据库的分页查询。

在本实施例中,分页请求包括查询条件,分页号以及分页记录数。其中,分页号和分页记录数分别为n和k,n和k为自然数。n表示第n分页;分页记录数k,表示每一个分页上有k行记录。数据库根据用户的查询条件,从m个数据库中,查找满足用户条件的记录数。

上述电子设备接收到客户端的分页请求后,统计满足用户的查询请求的所涉及的所有数据库以及确认涉及到的各个数据库的类型。以便后续对各个数据库中的数据进行处理。

步骤202,获取各数据库的条数记录。

在本实施例中,基于步骤201中接收到的分页请求,上述电子设备(例如图1所示的服务器105)获取各数据库的条数记录。其中,每个条数记录为分页号为第n-1的分页的k行记录中在该条数记录所对应的数据库中所取的最后一行记录的行号。

在本实施例中,上述的条数记录可以预先存储在电子设备的寄存器中。则电子设备在接收到客户端的分页请求后从存储寄存器中读取 条数记录。

在本实施例中,n等于1时,对应各数据库的条数记录均等于零。

在本实施例的一些可选实现方式中,上述条数记录保存在条数记录指针中,也就是每一个数据库对应一个条数记录指针。每一个数据库对应的条数记录指针指向该数据库在第n-1分页中的最后一行记录的行号。

在本实施例的一些可选实现方式中,电子设备向客户端发送第n-1次分页结果集时,也同时将对应各数据库的条数记录发送到客户端。也就是将第n-1分页中的对应每一个数据库的最后一行记录的行号随分页结果集发送到客户端,由客户端存储对应各数据库的条数记录。在客户端向电子设备发送第n页的分页请求时,对应各数据库的第n-1分页的条数记录也随分页请求发回到电子设备中。

在本实施例的一些可选的实现方式中,当用户进行跳页查询时,电子设备在在后台进行分析出来,依次统计跳过的每一页在各个数据库中提取的记录,并在缓存中缓存对应每一分页的每一个数据库的条数记录。例如,用户上次查询的分页号是1,也就是查询第1页,本次查询的分页号是5,也就是查询第5页,则电子设备在后台进行分析处理,依次统计第2页在各数据库中各取多少条记录,并将第2页对应的条数记录保存在缓存中、然后依次统计在各数据库中第3页和第4页各取多少行记录,并将每一页对应的条数记录保存在缓存中。

步骤203,根据每个条数记录在与之对应的数据库中从条数记录的下一行开始提取满足查询条件的k行记录。

在本实施例中,电子设备基于从步骤202得到的对应各数据库的条数记录,也就是第n-1页中在每一个数据库中获取的最后一行记录的行号,在各数据中从相应的条数记录的下一行开始提取k行记录。

在本实施例的一些可选的实现方式中,电子设备基于上述条数记录、分页记录数(k行记录)以及查询条件并根据预存的各种类型数据库的结构化查询语句来构造与任意一个数据库相应的结构化查询语句。根据构造的与该数据库相应的结构化查询语句从该数据库中提取k行记录。也就是说,电子设备预先存储有对应多种类型的数据库结 构化查询语句。具体的每种数据库的结构化查询语句广泛应用于现有数据库的数据查询中,此处不赘述。

在本实施例中,电子设备预先存储有每个数据库对应的类型。可以理解的是,当电子设备与m个数据库建立数据链接时就可以获取各个数据库的类型。

在本实施例中,各个数据库根据上述发送到其中的查询语句,向电子设备返回k行记录,这样在电子设备中就有m×k行记录。

步骤204,合并在各数据库中提取的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序。

在本实施例中,电子设备对步骤203每个数据库中发送的k行记录进行合并。此处的合并指的是将分别来自m个数据库的m×k行记录进行纵向合并。也就是可以按照一定顺序将一个数据库的k行记录对接到另一个数据库的k行记录下面。当每一个数据库中的变量都相同,且结构相同时,合并后的m×k行记录的变量与原来任意一个数据库中的变量相同。当任意两个数据库中的变量不完全相同时,合并后的m×k行记录的变量多于原来任意一个数据库中的变量数量。具体的合并后的m×k行记录的变量可以根据原来每一个数据库的变量得到。

接下来对合并后的m×k行记录进行排序。如步骤201指出的,m个数据库至少包括一个相同的变量,且每个数据库中该相同变量列的数据结构相同。可选的该相同的变量可以为合并后m×k行排序列。例如,该相同的变量可以为时间变量。根据该排序列按照预定排序条件对m×k行记录进行排序,此处预定的排序条件可以是用户指定的排序条件,例如对时间变量按照时间的先后顺序对合并后的m×k行记录进行排序等等。

步骤205,取排序后前k行记录作为分页结果集,并向客户端发送响应信息,响应信息包括分页结果集。

在本实施例中,电子设备对在步骤204中按照预定条件排序后的m×k行记录,按照先后顺序提取k行记录生成第n页的分页结果集。

根据预先设定的模板以及上述第n页的分页结果集生成响应信息 发送给客户端。在本实施例的一些可选的实现方式中,响应信息中可以包含满足查询条件的总页数、总记录条数以及当前页数及当前页包含的记录行数。

在本实施例的一些可选的实现方式中,电子设备在从排序后的m×k行记录中按顺序提取k行记录生成第n页的分页结果集后,统计第n页从每一个数据库中取的记录的行数以及每一个数据库中的最后一行记录的行号,并上述条数记录的内容更新为第n页中每一个数据库中的最后一行记录的行号。可选的还可以取第n-1页对应的每一个数据库的最后一行的行号与第n页中从该数据库中取的记录的行数之和作为该数据库的对应第n页的条数记录数并保存。

本实施例提供的括多数据的分页方法过通过接收客户端对m个数据库内容的分页请求,获取各数据库的条数记录,条数记录为前一页中取的每个数据库多行记录的最后一行记录的行号;然后根据每个条数记录在与之对应的数据库中从条数记录的下一行开始取满足查询条件k行记录;接着合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序,取前k行记录作为分页结果集;最后向客户端发送分页结果集。实现了在不需要额外的存储资源的情况下,实时对多种数据库进行数据合并分页展示。

请参考图3,其示出了图2所示跨多数据库的分页方法的一个应用的流程图。在图3中,用户通过客户端浏览器中的web应用发起对数据库a和数据库b的数据内容进行分页查询的分页请求。数据库a和数据库b可以为相同的数据库,也可以为不同的数据库,例如数据库a可以为mysql数据库,数据库b可以为oracle数据库。在数据库a和数据库b中的数据结构相同,至少有一个相同的变量。在数据库a和数据库b中的数据内容的排序方式相同,比如按照时间先后对数据内容进行排序。如图3所示,电子设备接收用户的分页请求,分页请求中包括分页号、分页记录数以及查询条件。在接收到用户的分页请求后在条数记录指针寄存器中获取对应每一个数据库的条数记录指针所指向的地址,也即第n-1页在数据库a和数据库b中提取的 最后一行记录的行号。然后根据数据库a和数据库b的条数记录构造k行记录查询语句,分别从数据库a和数据库b中的条数记录的下一行开始提取k行记录,再对分别从数据库a和b提取的2k行记录合并排序,在排序后的2k行记录中提取前k行记录作为分页结果集,最后将第n页的分页结果集发送给客户端,同时根据第n页的k行记录中的数据库a和数据库b的最后一行记录更新条数记录指针寄存器中分别对应数据库a和数据库b的条数记录指针的内容。

请继续参考图4,作为对上述图2所示跨多数据库的分页方法的实现,本申请提供了一种跨多数据库的分页装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。如图4所示,本实施例的跨多数据库的分页装置400包括:接收单元401、第一获取单元402、第二获取单元403、合并及排序单元404以及生成单元405。其中,接收单元401配置用于接收客户端对m个数据库内容的分页请求,分页请求包括:分页号n、分页记录数k以及查询条件,其中m,n,k均为自然数。第一获取单元402配置用于获取各数据库的条数记录,其中,每个条数记录为第n-1分页的k行记录中在该条数记录所对应的数据库中所取的最后一行记录的行号。第二获取单元403配置用于根据每个条数记录在与之对应的数据库中从条数记录的下一行开始获取满足查询条件的k行记录.合并与排序单元404单元配置用于合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序,取前k行记录作为分页结果集。生成单元405配置用于向客户端发送响应信息,响应信息包括分页结果集。

在本实施例中,跨多数据库的分页装置400的接收单元401可以通过有线连接方式或者无线连接方式从用户利用其进行软件或应用操作的终端接收用户输入的对多个数据库的内容的分页请求。用户输入的分页请求包括分页号、分页记录数以及查询条件。在本实施例中,多个数据库的数量可以设定为m,分页号可以设定为n,分页记录数可以设定为k,其中m,n,k分别为自然数。

在本实施例的一些可选的实现方式中,m个数据库的类型可以不相同,例如m个的类型分别可以为oracle、mysql、sybase、db2 等等中的一种数据库。m个数据库可以安装在一台数据库服务器中,也可以安装在多台数据库服务器中。类型不相同的m个数据库至少包括一个相同的变量。相同变量列的数据的数据结构相同。上述m个数据库中预先存储的多行数据按照相同的排序条件排序。

在本实施例中,基于接收单元401接收到的对m个数据库的分页信息,上述第一获取单元402可以在第一获取单元402中预先存储有各个数据库的条数记录的寄存器中读取对应每一个数据库的条数记录,这里每个数据库条数记录为第n-1分页在该数据库中所取的最后一行记录的行号。

在本实施例的一些可选的实现方式中,上述条数记录预先保存在条数记录指针中,也就是每一个数据库对应一个条数记录指针。每一个数据库对应的条数记录指针指向该数据库在第n-1分页中的最后一行记录的行号。各个数据库的条数记录指针保存在条数记录指针寄存器中,第一获取单元402在条数记录指针寄存器中获取对应每一个数据库的条数记录指针,并获取每一个条数记录指针指向的对应该条数记录指针的数据库在第n-1分页中的最后一行记录的行号。

在本实施例的一些可选实现方式中,第一获取单元402可以从客户端发送的分页请求中获取对应各数据库的条数记录。跨多数据库的分页装置向客户端发送第n-1次分页结果集时,也同时将对应各数据库的条数记录发送到客户端。也就是将第n-1分页中的对应每一个数据库的最后一行记录的行号随分页结果集发送到客户端,由客户端存储对应各数据库的条数记录。在客户端向跨多数据库的分页装置发送第n页的分页请求时,对应各数据库的第n-1分页的条数记录也随分页请求发回到跨多数据库的分页装置中。

在本实施例的一些可选的实现方式中,当用户进行跳页查询时,跨多数据库的分页装置在在后台进行分析出来,依次统计跳过的每一页在各个数据库中提取的记录,并在第一获取单元402中的缓存中存储对应每一分页的每一个数据库的条数记录。

在本实施例的一些可选的实现方式中,第二获取单元403可以预先存储对应每个数据库类型的结构化查询语句,并根据用户的分页请 求以及条数记录构造对应每一个数据库的查询语句,并根据上述查询语句从任意一个数据库中提取k行记录。

在本实施例的一些可选的实现方式中,上述跨多数据库的分页装置还包括更新单元,更新单元根据第n页的分页结果集中各数据库中的最后一行记录的行号更新各数据库的条数记录。

在本实施例的一些可选的实现方式中,生成单元405向客户端发送的响应信息中,还包括上述m个数据库中满足用户查询条件的总行数,总页数,当前页数及当前页所包含的记录数。

下面参考图5,其示出了适于用来实现本申请实施例的服务器的计算机系统500的结构示意图。

如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有系统500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从 可拆卸介质511被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、第一获取单元、第二获取单元、合并及排序单元以及生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收用户分页请求的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当一个或者多个程序被一个设备执行时,使得设备:接收客户端对m个数据库内容的分页请求,分页请求包括:分页号n、分页记录数k以及查询条件,其中m,n,k均为自然数;获取各数据库的条数记录,其中,每个条数记录为分页号为n-1的分页的k行记录中在该条数记录所对应的数据库中所取的最后一行记录的行号;根据每个条数记录在与之对应的数据库中从条数记录的下一行开始取满足查询条件的k行记录;合并在各数据库中取得的k行记录,并按照预定排序条件对合并后的m×k行记录进行排序;取排序后前k行记 录作为分页结果集,并向客户端发送响应信息,响应信息包括分页结果集。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1