CN106250477B - 一种分表数据的分页方法 - Google Patents

一种分表数据的分页方法 Download PDF

Info

Publication number
CN106250477B
CN106250477B CN201610617337.6A CN201610617337A CN106250477B CN 106250477 B CN106250477 B CN 106250477B CN 201610617337 A CN201610617337 A CN 201610617337A CN 106250477 B CN106250477 B CN 106250477B
Authority
CN
China
Prior art keywords
paging
sub
strategy
sql
data
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.)
Active
Application number
CN201610617337.6A
Other languages
English (en)
Other versions
CN106250477A (zh
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.)
XIAMEN TIPRAY TECHNOLOGY CO LTD
Original Assignee
XIAMEN TIPRAY 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 XIAMEN TIPRAY TECHNOLOGY CO LTD filed Critical XIAMEN TIPRAY TECHNOLOGY CO LTD
Priority to CN201610617337.6A priority Critical patent/CN106250477B/zh
Publication of CN106250477A publication Critical patent/CN106250477A/zh
Application granted granted Critical
Publication of CN106250477B publication Critical patent/CN106250477B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种分表数据的分页方法,该方法需提供一终端、一服务器和一数据库,该方法包括以下步骤:终端发出分页命令;服务器端根据分页命令,从配置文件中获取执行SQL;服务器端根据执行SQL获取对应表的分表策略;服务器端根据数据库类型获取对应的分页策略;服务器端根据分表策略和分页策略对执行SQL进行改造,拼装查询SQL,并根据查询SQL获取分页数据。本发明通过配置分表策略和分页策略从不同的分表中获取分页数据,方便了产品的设计与开发;本发明可以确定哪些表具有分表,具有哪些分表,不用担心分表的添加对分页结构的影响;本发明使得本技术能够满足大多数数据库类型的分页需求;本发明能够有效地从分表中进行数据库分页查询操作。

Description

一种分表数据的分页方法
技术领域
本发明涉及数据库领域,尤其是一种分表数据的分页方法。
背景技术
目前,随着网络技术的飞速发展,信息数据已越来越庞大,如何从如此庞大的数据中快速的响应用户的查询并将结果给予展示,成了限制产品研发的重要因素,在这个大场景下分表分页技术应运而生。
何为分表,当一个表中的数据量过大时,我们可以按照某种规则,如ID散列,将数据进行划分,然后存储到多个结构相同的表。
何为分页,在数据库读取过程中,如果数据量较大,一次性读取全部数据会极大地耗用电脑的内存,将会导致内存溢出,且在数据传输过程中将耗用较长的时间,不利于用户的体验,因此对数据库中的数据进行分页显示,每一页都只获取一定量的数据。
由于不同的数据路类型具有不同的分页操作方式,在代码中嵌入分页操作符的开发方式对研发者产生了不小的负担,尤其是在分表的情况下,需要对每个分表进行查询,并将结果拼装,最后才能进行分页,这样的嵌入式分页开发,对研发者的开发及维护将产生极大地成本。
现有方案是通过限制每张分表只存储对应ID区间的数据,分页查询的时候根据ID在不同的分表中进行查询,并且对于不同的数据库,必须在程序代码中嵌入不同的分页操作符。
但是,目前的数据都较为复杂,简单的根据ID来进行分页已经不能满足现有的应用场景,并且,在程序代码中嵌入分页操作符不具备通用性,如Oracle和MySql的分页技术就有差异,这对于产品的开发具有不便性。
有鉴于此,本发明人专门设计了一种分表数据的分页方法,本案由此产生。
发明内容
本发明的目的在于提供一种分表数据的分页方法,以方便产品的设计与开发,无需担心分表的添加对分页结构的影响,并使其满足大多数数据库类型的分页需求,便于数据库分页查询操作。
为了实现上述目的,本发明采用的技术方案如下:
一种分表数据的分页方法,所述方法需提供一终端、一服务器和一数据库,所述方法包括以下步骤:
S01:终端发出分页命令;
S02:服务器端根据分页命令,从配置文件中获取执行SQL;
S03:服务器端根据执行SQL获取对应表的分表策略;
S04:服务器端根据数据库类型获取对应的分页策略;
S05:服务器端根据分表策略和分页策略对执行SQL进行改造,拼装查询SQL,并根据查询SQL获取分页数据。
所述步骤S05具体为,首先判断分页命令是否能够直接定位到单张表,若能够直接定位到单张表,则直接根据分页策略获取对应的分页数据;若需要多张分表进行合并查询,则判断是否需要排序,若不需要排序,则根据分表策略,先获取每张分表的查询结果数,然后根据分页命令确定需要从哪几张分表中获取分页数据,并从对应的几张分表中获取分页数据,若需要排序,则需要对每张分表中符合查询条件的所有数据进行排序,然后再根据分页命令获取分页数据。
采用上述方案后,本发明具有以下几个优点:
一、本发明通过配置分表策略和分页策略从不同的分表中获取分页数据,与现有的嵌入代码式分页有较大的区别,这种区别极大地方便了产品的设计与开发;
二、本发明通过分表策略,可以确定哪些表具有分表,具有哪些分表,不用担心分表的添加对分页结构的影响;
三、本发明通过对不同的数据库类型如Oracle、Mysql配置不同的分页策略,使得本技术能够满足大多数数据库类型的分页需求;
四、本发明对应于不同的分表分页技术,应用分表策略和分页策略能够更简单有效地从分表中进行数据库分页查询操作。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明方法流程示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供一种分表数据的分页方法,所述方法需提供一终端、一服务器和一数据库,所述方法包括以下步骤:
S01:终端发出分页命令;其中,该分页命令可以包括数据查询条件、页码(page)、每页行数(row)、排序字段、排序方式(升序、降序);
S02:服务器端根据分页命令,从配置文件中获取执行SQL;
S03:服务器端根据执行SQL获取对应表的分表策略;
S04:服务器端根据数据库类型获取对应的分页策略;
S05:服务器端根据分表策略和分页策略对执行SQL进行改造,拼装查询SQL,并根据查询SQL获取分页数据。
在本发明一实施例中,提供一种分表数据的分页方法,包括以下步骤:
S01:终端发出分页命令;其中,该分页命令可以包括数据查询条件、页码(page)、每页行数(row)、排序字段、排序方式(升序、降序);
S02:服务器端根据分页命令,从配置文件中获取执行SQL;
S03:服务器端根据执行SQL获取对应表的分表策略。分表策略主要包括表名(table)和分表规则(分表规则根据项目实际情况定义,如每月一张分表的分表规则)。并提供获取执行SQL的分表的方法,此方法根据执行参数如:主键、时间段等参数来确定分表;
S04:服务器端根据数据库类型获取对应的分页策略。分页策略主要提供不同数据库的分页方法,如Mysql的分页是使用关键字LIMIT、Oracle的分页主要使用ROWNUM,然后根据分页方法为执行SQL添加分页关键字和拼装分页语句;
S05:服务器端根据分表策略和分页策略对执行SQL进行改造,拼装查询SQL,并根据查询SQL获取分页数据。首先,根据分表策略确定执行SQL将要操作的一个或多个分表;其次,用分表替换执行SQL中的表名(table),如需操作多张分表,则用关键字UNION ALL进行结果集的合并,组装新的执行SQL;再次,根据分页策略的分页方法为执行SQL拼装分页语句;最后,将拼装后的执行SQL交给服务器的数据库驱动,数据库驱动将根据执行SQL进行对应的数据查询。在拼装分页语句进行分页查询的时候,为了提高查询效率,需要根据分页命令对操作分表的范围进行控制,具体过程如下:首先,判断分页命令是否能够直接定位到单张表,若能够直接定位到单张表,则直接根据分页策略获取对应的分页数据;若需要多张分表进行合并查询,则判断是否需要排序;若不需要排序,则根据分表策略,先获取每张分表的查询结果数,然后根据分页命令确定需要从哪几张分表中获取分页数据,并从对应的几张分表中获取分页数据;若需要排序,则需要对每张分表中符合查询条件的所有数据进行排序,然后再根据分页命令获取分页数据。
本发明通过限制每个分表的查询数据的数量来提高查询效率,原理如下:根据分页命令获取每张表内部排序后的前n条数据,其中n=page*row;然后,用数据库表的合并操作符“UNION ALL”将上一步的查询结果进行合并,并对合并后的结果集进行排序;最后,根据分页命令获取排序后的分页数据。
本发明具有以下几个优点:
一、本发明通过配置分表策略和分页策略从不同的分表中获取分页数据,与现有的嵌入代码式分页有较大的区别,这种区别极大地方便了产品的设计与开发;
二、本发明通过分表策略,可以确定哪些表具有分表,具有哪些分表,不用担心分表的添加对分页结构的影响;
三、本发明通过对不同的数据库类型如Oracle、Mysql配置不同的分页策略,使得本技术能够满足大多数数据库类型的分页需求;
四、本发明对应于不同的分表分页技术,应用分表策略和分页策略能够更简单有效地从分表中进行数据库分页查询操作。
上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (1)

1.一种分表数据的分页方法,其特征在于,所述方法需提供一终端、一服务器和一数据库,所述方法包括以下步骤:
S01:终端发出分页命令;
S02:服务器端根据分页命令,从配置文件中获取执行SQL;
S03:服务器端根据执行SQL获取对应表的分表策略;
S04:服务器端根据数据库类型获取对应的分页策略;
S05:服务器端根据分表策略和分页策略对执行SQL进行改造,拼装查询SQL,并根据查询SQL获取分页数据;
所述步骤S05为,首先,根据分表策略确定执行SQL将要操作的一个或多个分表;其次,用分表替换执行SQL中的表名table,如需操作多张分表,则用关键字UNION ALL进行结果集的合并,组装新的执行SQL;再次,根据分页策略的分页方法为执行SQL拼装分页语句;最后,将拼装后的执行SQL交给服务器的数据库驱动,数据库驱动将根据执行SQL进行对应的数据查询;
根据分页命令对操作分表的范围进行控制,过程如下:首先判断分页命令是否能够直接定位到单张表,若能够直接定位到单张表,则直接根据分页策略获取对应的分页数据;若需要多张分表进行合并查询,则判断是否需要排序,若不需要排序,则根据分表策略,先获取每张分表的查询结果数,然后根据分页命令确定需要从哪几张分表中获取分页数据,并从对应的几张分表中获取分页数据,若需要排序,则需要对每张分表中符合查询条件的所有数据进行排序,然后再根据分页命令获取分页数据。
CN201610617337.6A 2016-07-29 2016-07-29 一种分表数据的分页方法 Active CN106250477B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610617337.6A CN106250477B (zh) 2016-07-29 2016-07-29 一种分表数据的分页方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610617337.6A CN106250477B (zh) 2016-07-29 2016-07-29 一种分表数据的分页方法

Publications (2)

Publication Number Publication Date
CN106250477A CN106250477A (zh) 2016-12-21
CN106250477B true CN106250477B (zh) 2020-04-03

Family

ID=57606861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610617337.6A Active CN106250477B (zh) 2016-07-29 2016-07-29 一种分表数据的分页方法

Country Status (1)

Country Link
CN (1) CN106250477B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016115B (zh) * 2017-04-18 2020-06-19 网易有道信息技术(杭州)有限公司 数据导出方法、装置、计算机可读存储介质及电子设备
CN110019558A (zh) * 2017-12-27 2019-07-16 航天信息股份有限公司 基于Sqoop的数据传输方法、装置、计算机可读存储介质及设备
CN114490737A (zh) * 2021-12-28 2022-05-13 福建天晴数码有限公司 一种提高数据库深度分页查询效率的方法与终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216840A (zh) * 2008-01-21 2008-07-09 金蝶软件(中国)有限公司 一种数据查询方法和一种数据查询***
CN102479234A (zh) * 2010-11-29 2012-05-30 深圳市金蝶中间件有限公司 数据库分页操作方法和装置
CN102880685A (zh) * 2012-09-13 2013-01-16 北京航空航天大学 一种时间密集大数据量的b/s分区间分页查询方法
CN104123340A (zh) * 2014-06-25 2014-10-29 世纪禾光科技发展(北京)有限公司 一种数据库分表分页查询方法及***
CN104657446A (zh) * 2015-02-04 2015-05-27 深圳市汇朗科技有限公司 分表联合统计查询方法、装置和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200627B2 (en) * 2008-10-30 2012-06-12 International Business Machines Corporation Journaling database changes using a bit map for zones defined in each page

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216840A (zh) * 2008-01-21 2008-07-09 金蝶软件(中国)有限公司 一种数据查询方法和一种数据查询***
CN102479234A (zh) * 2010-11-29 2012-05-30 深圳市金蝶中间件有限公司 数据库分页操作方法和装置
CN102880685A (zh) * 2012-09-13 2013-01-16 北京航空航天大学 一种时间密集大数据量的b/s分区间分页查询方法
CN104123340A (zh) * 2014-06-25 2014-10-29 世纪禾光科技发展(北京)有限公司 一种数据库分表分页查询方法及***
CN104657446A (zh) * 2015-02-04 2015-05-27 深圳市汇朗科技有限公司 分表联合统计查询方法、装置和***

Also Published As

Publication number Publication date
CN106250477A (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
US11841963B2 (en) Data aggregation system for enabling query operations on restricted data that originates from multiple independent multiple sources
US9953639B2 (en) Voice recognition system and construction method thereof
US8682875B2 (en) Database statistics for optimization of database queries containing user-defined functions
US20120330924A1 (en) Method and system for querying an on demand database service
CN107679071B (zh) 一种面向关系数据库的通用数据服务定制化封装方法
CN104133772A (zh) 一种自动生成测试数据的方法
WO2015167466A1 (en) Query plan post optimization analysis and reoptimization
CN106156088B (zh) 一种索引数据处理方法、数据查询方法及装置
CN106250477B (zh) 一种分表数据的分页方法
US20190188302A1 (en) Group-by-time operations with returned time context
CN104965735A (zh) 用于生成升级sql脚本的装置
CN107015987B (zh) 一种更新和搜索数据库的方法及设备
CN110457346B (zh) 数据查询方法、装置及计算机可读存储介质
CN105653647B (zh) Sql语句的信息采集方法及***
CN104536987A (zh) 一种查询数据的方法及装置
CN113094162A (zh) 一种任务依赖关系更新方法、装置及存储介质
CN102426612A (zh) 条件对象查询方法及***
CN104050297B (zh) 一种查询事务分配方法及装置
CN107798111B (zh) 一种分布式环境中大批量导出数据的方法
CN101354723B (zh) 一种实现组合字段的方法及装置
CN111339720A (zh) 基于大数据采集的芯片信息生成方法、装置及计算机设备
CN110019306B (zh) 一种基于xml格式文件的sql语句查找方法及***
CN115905298A (zh) 基于http数据源和netty的presto查询引擎
CN112463814A (zh) 一种数据查询方法及装置
CN114328577A (zh) 数据查询方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant