CN112148731B - 一种数据分页查询方法、装置及存储介质 - Google Patents

一种数据分页查询方法、装置及存储介质 Download PDF

Info

Publication number
CN112148731B
CN112148731B CN202010811647.8A CN202010811647A CN112148731B CN 112148731 B CN112148731 B CN 112148731B CN 202010811647 A CN202010811647 A CN 202010811647A CN 112148731 B CN112148731 B CN 112148731B
Authority
CN
China
Prior art keywords
page
paging
request
partition table
sub
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
CN202010811647.8A
Other languages
English (en)
Other versions
CN112148731A (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.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies 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 New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN202010811647.8A priority Critical patent/CN112148731B/zh
Publication of CN112148731A publication Critical patent/CN112148731A/zh
Application granted granted Critical
Publication of CN112148731B publication Critical patent/CN112148731B/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

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

Abstract

本公开提供了一种数据分页查询方法、装置及存储介质。本公开技术方案中,通过建立分页表记录分页查询的基本信息,在分页表中指示分页查询的开始分区表以及起始键值,在分页检索时从分页表获取该页起始信息,获取满足页大小的数据返回客户端。本公开在大数据应用场景下,解决了使用原生数据库的查询组件无法实现跨分区表的全局分页查询的技术问题。

Description

一种数据分页查询方法、装置及存储介质
技术领域
本公开涉及技术领域,尤其涉及一种数据分页查询方法、装置及存储介质。
背景技术
HBase作为列式存储数据库,具有高可靠性、扩展性好等优点,在数据存储检索方面占据着重要的地位。
企业每日都在产生海量数据,这些数据蕴含着丰富的信息与商业价值。企业除了要解决数据的存储问题,还要解决数据高效检索和分页展示的问题。 HBase是解决存储问题的绝佳选择,在检索数据时,HBase原生提供了PageFilter 来帮助用户实现分页功能。但是HBase里面Filter状态只是在Region内有效,也就是说,Scan一旦从一个Region切换到另一个Region之后,之前那个Filter 的内部状态就无效了,新Region内用的其实是一个全新的Filter。具体到分页场景来说,因为Filter没有全局的状态,PageFilter内部计数器从一个Region切换到另一个Region之后,计数器已经被清零。即PageFilter并没有实现全局的分页功能,这是HBase的一个缺陷。
另一种方法是使用Redis缓存分页查询结果,服务端接收并执行客户端发送的分页查询请求,首先判断Redis中是否缓存此页数据。若缓存,直接从缓存获取数据返回给客户端,否则,从Redis获取上页的最后一行数据,作为当前页的起始位置从HBase获取数据,将该页数据缓存至Redis并返回给客户端。该方法依赖Redis,需要额外维护Redis环境,且支持单表查询,不支持HBase分区表的分页查询。
发明内容
有鉴于此,本公开提供一种数据分页查询方法、装置及存储介质,用于实现跨分区表全局分页查询。
基于本公开一实施例,本公开提供了一种数据分页查询方法,该方法包括:
接收针对业务表的原始分页查询请求,根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小;
在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容;
在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录;
当通过检索对象完成第N分页的业务数据记录的获取后,若所述分页表中不存在第N+1分页的分页子请求记录,则在分页表中生成第N+1页的分页子请求记录。
基于本公开另一实施例,本公开还提供了一种数据分页查询装置,该装置包括:
请求接收模块,用于接收针对业务表的原始分页查询请求;
分页表建立模块,用于根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小;
子请求处理模块,用于在接收到原始分页查询请求之后,在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容;在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录;以及在获取第N分页的业务数据记录后,若所述分页表中不存在第N+1 分页的分页子请求记录,则在分页表中生成第N+1页的分页子请求记录;
数据获取模块,用于通过检索对象获取每个分页子请求记录对应的业务数据记录并反馈查询结构。
本公开建立分页表记录分页查询的基本信息,在分页表中指示分页查询的开始分区表以及起始键值,分页检索时首先从分页表获取该页起始信息,获取满足页大小的数据返回客户端。本公开在大数据应用场景下,解决了使用原生数据库的查询组件无法实现跨分区表的全局分页查询的技术问题。
附图说明
为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
图1为本公开一实施例提供的一种数据分页查询方法的步骤流程图;
图2为本公开一实施例提供的一种数据分页查询装置结构示意图;
图3为本公开一实施例提供的一种数据分页查询设备结构示意图。
具体实施方式
在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/ 或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在大数据应用场景下,对于由多个分区表构成的业务表进行分页查询时,使用原生数据库的查询组件或接口无法满足跨分区表的全局分页查询的需求,例如使用HBase原生的分页过滤器PageFilter无法实现对HBase中存储的数据进行全局跨分区表的分页查询,因此本公开的目的之一是提供一种数据分页查询方法,以解决满足跨分区表全局分页查询需求的技术问题。
本公开技术方案的核心思想是建立分页表记录分页查询的基本信息,在分页表中指示分页查询的开始分区表以及起始键值,分页检索时首先从分页表获取该页起始信息,获取满足页大小的数据返回客户端。
图1为本公开一实施例提供的一种数据分页查询方法的步骤流程图。本公开实施例的业务场景中,由于数据量较大,一个业务表的数据被分配在多个分区表中进行存储,这些分区表可能存储在一个物理存储区域里,也可能分布在不同的物理存储区域中。例如,用户分页查询Account业务表,但 Account业务表可能实际上是由Account-01、Account-02、…、Account-12等多个分区表组成,分区表中存储有实际的业务数据。因此,就需要对Account 业务表的分区查询请求进行解析处理,将对Account业务表的查询转换为对多个分区表的分页查询。该方法包括:
步骤101、接收针对业务表的原始分页查询请求,根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小。
该步骤中,在所述原始分页查询请求中携带了用于查询数据的必要信息,例如数据源信息、返回列、页大小等信息,若需要对业务数据进行过滤,其中还携带有过滤规则信息等。
本公开在每次接收到新的原始分页查询请求时,为该新的原始分页查询请求建立分页表,并在分页表中记录该原始分页查询请求中携带的业务表的分区表列表、页大小等用于进行分页查询的必要信息。
步骤102、在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容。
在建立分页表后,即刻在分页表中建立第一分页的分页子请求记录,分页子请求记录至少包括起始分区表字段和起始键值字段。第一分页子请求对应的起始分区表字段值为分区表列表中的第1个分区表的索引,起始键值字段的值可置为空NULL,置空表示检索时从该分区表第一条记录开始获取业务数据记录。
步骤103、在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录。
本公开一实施中,分页表中分页子请求记录需按页码顺序先后生成,即只有在前一分页子请求记录生成后,才会根据前一分页子请求记录的内容和页大小生成下一分页的分页子请求记录。
在本公开一实施例中,在进行第N分页的查询时,首先根据分页表中记录的原始分页查询请求构造检索对象,例如HBase客户端提供的Scan对象,检索对象根据分页表中当前分页子请求记录中的起始分区表字段值和起始键值字段的内容到对应的分区表中对应的起始键值位置开始获取业务数据记录,然后通过检索对象将业务数据返回给查询端。
若第N分页子请求获取的业务数据记录不跨分区表,则第N+1分页子请求对应的起始分区表字段值与第N分页子请求记录的相同,起始键值字段值为第N分页的最后一条业务数据记录的下一条记录的键值。
若第N分页子请求获取的业务数据记录跨分区表,则第N+1分页子请求对应的起始分区表字段值为第N分页子请求记录的起始分区表字段值+1,即下一分区表索引值,起始键值字段值相应的为下一分区表中最后一条属于上一分页的业务数据记录之后的下一条业务数据记录的键值。
步骤104、当通过检索对象完成第N分页的业务数据记录的获取后,若所述分页表中不存在第N+1分页的分页子请求记录,则在分页表中生成第 N+1页的分页子请求记录。
以下结合一具体实施例详细描述本公开技术方案的详细处理步骤。该实施例中,分页表存储了原始分页查询请求(简称查询请求)的公共信息与查询具体页的起始信息。同一原始分页查询请求的分页查询子请求必须使用唯一的请求标识RequestId,标识分页查询条件的一致性。分页表的行键RowKey 基于RequestId构造,每个分页的RowKey可使用RequestId与页码的组合形式。本公开中,为了区分用户发送的针对业务表的分页查询请求和基于该分页查询请求分解出来的针对每个具体页的分页查询请求,将用户发送的原始的分页查询请求命名为原始分页查询请求,将分解的与每页对应的查询请求命名为分页查询子请求。
分页表可创建在数据库中也可创建于本地文件或内存中,可设置存活时间TTL设置为24小时,可在老化时间到时自动清除过期分页表,查询过程中产生的分页信息无需长期保存。
公共信息可包括:原始分页查询请求(简称原始请求)、业务表的分区表列表、页大小等。所述原始请求可视为首次查询第一页时的完整请求,该请求包含唯一的RequestId、页大小、待查询的业务表的分区表列表等必要信息,还可以包含业务所需的特定过滤条件。检索数据使用的Scan对象由原始请求构造。以下为原始分页查询请求的示例:
Figure BDA0002631197480000061
原始请求中的表名为业务表名,查询时会转为对子表的查询,由此产生子查询请求的概念。首次请求时根据原始请求中的业务表名,获取所有分区表名,以列表的形式保存到分页表中,后续分页时按分区表列表依次查询,保证查询次序稳定。分页查询时页大小应保持一致,将页大小记录到分页表公共信息中。分页表样例见表1,表中斜线表示该单元格不存储数据。
具体页起始信息包含该页的起始分区表索引位置和分区表内业务数据记录的起始键值StartKey。起始分区表索引位置表示起始查询的分区表在分区表列表中的索引位置,索引位置是从1开始的递增整数,索引位置为1表示查询分区表列表中第一张表。StartKey代表该页数据Scan检索数据时的起始位置。除第一页外的每页起始信息根据前页查询结果进行更新。
表1
Figure BDA0002631197480000071
服务端接收客户端的分页查询请求,首先从分页表检索查询的起始信息,构造Scan对象并按需更新,从起始分区表索引位置开始依次获取分区表中的业务数据记录,返回数据至客户端并更新分页表。
服务端接收到分页查询请求后,以该请求的RequestId作为RowKey从分页表检索公共信息。如果查询结果为空,表示此请求是一个全新的请求;否则,该请求是之前请求的一个后续分页请求。
本公开实施例中,要求按分页顺序依顺序查询,根据分页表中的每一分页子请求记录依序获取每个分页对应的业务数据记录。
步骤S1、对于新的分页查询请求必须从首页开始查询。首先判断页码值,若页码不等于1,返回客户端查询失败。若页码等于1,开始查询首页。
步骤S2、首先解析查询请求,获取业务表的分区表列表、页大小、返回列、查询条件等,用RequestId作为RowKey保存前述解析结果到分页表中。
步骤S3、根据解析结果中的返回列和查询条件构造Scan对象,从分区表列表中获取第一个分区表,此时索引位置N=1,在第一个分区表上执行Scan 检索,获得返回对象。
步骤S4、从返回的Scan对象上按行获取数据,如果能够获取到的业务数据记录个数小于页大小(说明当前页跨 分区表了),此时分区表索引位置加一变为2,从分区表列表获取下一张分区表,在下一张分区表重复执行检索对象的Scan检索及获取业务数据记录的步骤,重复执行上述步骤直至获取到满足页大小的业务数据记录或在没有业务数据记录可取时终止,将查询到的该页数据返回给客户端。
当通过Scan对象检索获取到属于当前页的全部业务数据记录后,将当前页最后一条业务数据记录的下一条记录的行键值作为分页表中第二页的分页查询子请求对应记录的Startkey,更新分页表中第二页的起始信息,页的行键RowKey为RequestId-2表示第二页,分区表索引位置若不跨分区表则仍为 N=1,若跨分区表则N的值需根据页大小及所涉及的分区表中的业务数据记录的个数决定。起始键值StartKey则为属于第一页的最后一条业务数据记录的下一条业务数据记录的行键值。
若获取当前页最后一条记录的下一条记录失败,说明该分区表的数据恰好满足页大小,第二页应该直接从下一分区表开始检索,即下页的分区表起始索引位置为N+1,判断该索引位置是否超过分区表列表的总长度。若不超过,则更新分页表中第二页的起始索引位置为N+1,StartKey置空(空NULL 可表示从首记录开始)。若超过,则表示无后续分区表可供查询,即该页为当前分页查询请求的最后一页,无需在分页表更新下页起始信息。最后记录首页的起始信息,RowKey为RequestId-1,起始信息的索引位置为1,StartKey 为空。至此,结束一个针对分区表的首页请求的分页检索流程。
对于之前请求的后续请求,首先从分页表获取该页起始信息,例如以行键RequestId-3为例,若在分页表中查询结果为空,表示此次查询是该页码的首次查询并且与已查询页码不连续,方案不支持此类查询,返回查询失败给客户端。如果查询结果不为空,则获取到该页的起始信息和请求的公共信息,根据公共信息构造Scan对象。该页起始信息中,如果StartKey不为空,用该值更新Scan对象中的StartKey。然后利用起始信息中分区表的索引位置和公共信息中的分区表列表,获取对应的分区表名,执行Scan操作,获取满足页大小的数据。此处与首页相同,在分区表列表上依次执行scan操作,直至获取到满足页大小的数据或分区表无数据可查。最后按首页的分页表更新策略更新下页起始信息。
回翻查询是指重复查询已请求过的页码。本公开在回翻查询时支持随机查询,因为已查询页码的起始信息保存在分页表中。假设现在按次序查询到第十页,那么前十页的起始信息均已保存到分页表,此时便可以随机检索前十页内的任一页数据。
为了更加清楚的描述本公开的技术方案,以下结合具体的分区表和分页表的示例来描述整个的分页查询过程。假设客户端发起一个分页查询请求,每页请求2行业务数据记录,查询的业务表根据数据的属性被分为三个分区表,分别为T1、T2、T3,各分区表的样例数据见表2。
表2
Figure BDA0002631197480000091
查询第一页的步骤示例:
解析原始分页查询请求,获取到业务表对应的分区表列表【T1,T2,T3】,页大小为2,更新分页表公共信息,RowKey为RequestId。根据原始请求构造Scan对象,从索引位置为1开始从待查分区表列表获取表T1,在T1表执行Scan检索数据,从返回对象中获取到该页数据【Rk1,Rk2】。继续从T1 查询下一行数据得到【Rk3】,说明还有未被获取的业务数据记录,则将键值Rk3作为第二页的起始信息。首先更新分页表中第一页信息的起始信息, RowKey为RequestId-1,起始分区表索引位置为1,StartKey置空;然后更新第二页的起始信息,RowKey为RequestId-2,起始分区表索引位置仍为1, StartKey为【Rk3】,第一页查询后分页表状态见表3。
表3
Figure BDA0002631197480000101
查询第二页的步骤示例:
利用分页表的公共信息构造Scan对象,获取第二页的起始信息,设置 Scan的StartKey为【Rk3】,根据起始分区表索引位置获取到待查询分区表为T1。开始在T1执行Scan,从返回结果获取数据,只得到一行数据【Rk3】,该分区表无剩余可查数据,且未达到页大小。由于当前分区表索引为1,加1 后不大于分区表列表的个数,因此重新构造Scan对象,从待查分区表列表获取下一个分区T2,继续在T2上执行scan,从返回结果获取该页剩余业务数据记录,得到一行数据【Rk4】,与T1查询结果合并作为该页返回结果【Rk3,Rk4】。继续从T2查询下一行数据【Rk5】,作为第三页起始位置。然后更新第三页的起始信息到分页表,RowKey为RequestId-3,起始分区表索引位置增为2,StartKey为【Rk5】。第二页查询后分页表状态见表4。
表4
Figure BDA0002631197480000102
Figure BDA0002631197480000111
查询第三页的步骤示例:
利用分页表的公共信息构造Scan对象,获取第三页的起始信息,设置 Scan的StartKey为【Rk5】,根据索引获取到待查询分区表为T2。开始在 T2执行Scan,从返回结果获取页大小的数据,得到该页返回结果【Rk5,Rk6】。继续从该表查询下一行数据,发现该分区表中已没有未被获取的业务数据记录且还有未被获取的分区表T3,表示第四页从下一张分区表首行开始查询。在分页表记录第四页的起始信息,起始分区表索引位置增为3,StartKey置空。第三页查询后分页表状态见表5。
表5
Figure BDA0002631197480000112
查询第四页的步骤示例:
利用分页表的公共信息构造Scan对象,获取第四页的起始信息。根据分区表索引位置3从待查询列表获取到T3分区表,获取的StartKey为空,使用原始Scan在T3上检索数据,从返回结果获取数据,检索到一行数据【Rk7】, 然后该分区表无数据可查,同时该分区表位于待查询列表末尾,说明第四页为分页查询的末页。第四页最终返回结果为【Rk7】,此时不用更新分页表。
回翻第二页的步骤示例:
回翻与顺序查询流程基本一致,参照顺序查询第二页的查询流程。区别在于回翻查询时不更新分页表。
至此,完成一个完整的分页查询示例。最终分页表状态如表5所示。客户端实际获得的每页数据如下表6所示。
Figure BDA0002631197480000121
使用此方案,客户端可按需分页检索数据,避免一次性返回全量数据,避免造成网络阻塞、客户端内存崩溃甚至系统宕机等问题,导致服务不可用。本公开分页效果稳定高效,支持对分区表上的分页查询,能够保证分页数据跨分区连续完整。在数据分析和检索场景中能发挥较大作用。
图2为本公开一实施例提供的一种数据分页查询装置结构示意图,该装置200中的各功能模块可以采用软件模块形式实现,也可以采用硬件单元方式实现。该装置200的各模块的功能与本公开实施提供的方法中的各步骤具有对应关系。该装置200中的各模块可以在一个硬件设备上执行,也可以由不同的硬件设备分别实施本公开提供的方法中的一个或多个步骤或模块功能。该装置200包括:请求接收模块210、分页表建立模块220、子请求处理模块 230、数据获取模块240。
请求接收模块210,用于接收针对业务表的原始分页查询请求;
分页表建立模块220,用于根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小;
子请求处理模块230,用于在接收到原始分页查询请求之后,在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容;在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录;以及在获取第N分页的业务数据记录后,若所述分页表中不存在第 N+1分页的分页子请求记录,则在分页表中生成第N+1页的分页子请求记录;
数据获取模块240,用于通过检索对象获取每个分页子请求记录对应的业务数据记录并反馈查询结构。
进一步地,子请求处理模块230根据第N分页的分页子请求记录的起始分区表字段中的分区表索引从所述分区表列表中获取对应的分区表名称,根据第N分页的分页子请求记录的起始键值字段的键值从获取的所述分区表名称对应的分区表中获取业务数据记录。
若数据获取模块240通过检索对象能够从对应分区表中获取到的第N分页的业务数据记录个数小于所述页大小且起始分区表字段值+1后不大于分区表列表中的分区表的个数,则继续从下一分区表中获取业务数据记录,重复执行上述步骤直至获取到满足页大小的业务数据记录或在没有业务数据记录可取时终止。
当数据获取模块240通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中还有未被获取的业务数据记录,则子请求处理模块230 将当前分区表中属于第N分页的最后一条业务数据记录的下一条业务数据记录的行键值作为第N+1分页子请求的起始键字段值,起始分区字段值不变;
当数据获取模块240通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中已没有未被获取的业务数据记录且还有未被获取的分区表,则子请求处理模块230将当前分区表索引值+1作为第N+1分页子请求的起始分区表字段值,起始键字段值置空。
图3为本公开一实施例提供的一种数据分页查询设备结构示意图,该设备300包括:诸如中央处理单元(CPU)的处理器310、内部总线320、网络接口340以及计算机可读存储介质330。其中,处理器310与计算机可读存储介质330可以通过内部总线320相互通信。计算机可读存储介质330内可存储本公开提供的用于实施方法的计算机程序,当计算机程序被处理器310 执行时即可实现本公开提供的数据分页查询方法的各步骤功能。
以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种数据分页查询方法,其特征在于,所述方法包括:
接收针对业务表的原始分页查询请求,根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小;
在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容;
在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录;
当通过检索对象完成第N分页的业务数据记录的获取后,若所述分页表中不存在第N+1分页的分页子请求记录,则在分页表中生成第N+1页的分页子请求记录。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述从对应分区表中获取第N分页的业务数据记录步骤具体为:
根据第N分页的分页子请求记录的起始分区表字段中的分区表索引从所述分区表列表中获取对应的分区表名称,根据第N分页的分页子请求记录的起始键值字段的键值从获取的所述分区表名称对应的分区表中获取业务数据记录。
3.根据权利要求2所述的方法,其特征在于,
若所述检索对象能够从对应分区表中获取到的第N分页的业务数据记录个数小于所述页大小且起始分区表字段值+1后不大于分区表列表中的分区表的个数,则继续从下一分区表中获取业务数据记录,重复执行上述步骤直至获取到满足页大小的业务数据记录或在没有业务数据记录可取时终止。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
当通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中还有未被获取的业务数据记录,则将当前分区表中属于第N分页的最后一条业务数据记录的下一条业务数据记录的行键值作为第N+1分页子请求的起始键字段值,起始分区字段值不变;
当通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中已没有未被获取的业务数据记录且还有未被获取的分区表,则将当前分区表索引值+1作为第N+1分页子请求的起始分区表字段值,起始键字段值置空。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述业务表的所有分页子请求记录都已生成后,在接收到针对任何页的分页查询时,根据所请求的页码直接在所述分页表中匹配分页子请求记录,根据匹配的分页子请求记录内容获取所述页码的业务数据记录。
6.一种数据分页查询装置,其特征在于,该装置包括:
请求接收模块,用于接收针对业务表的原始分页查询请求;
分页表建立模块,用于根据所述原始分页查询请求建立分页表,所述分页表中存储有所述业务表的分区表列表、页大小;
子请求处理模块,用于在接收到原始分页查询请求之后,在所述分页表中插入第一分页的分页子请求记录,所述分页子请求记录包括起始分区表字段和起始键值字段的内容;在进行第N分页的查询时,根据所述原始分页查询请求构造检索对象,根据第N分页的分页子请求记录的起始分区表字段和起始键值字段内容及分页大小,从对应分区表中获取第N分页的业务数据记录;以及在获取第N分页的业务数据记录后,若所述分页表中不存在第N+1分页的分页子请求记录,则在分页表中生成第N+1页的分页子请求记录;
数据获取模块,用于通过检索对象获取每个分页子请求记录对应的业务数据记录并反馈查询结构。
7.根据权利要求6所述的装置,其特征在于,
所述子请求处理模块根据第N分页的分页子请求记录的起始分区表字段中的分区表索引从所述分区表列表中获取对应的分区表名称,根据第N分页的分页子请求记录的起始键值字段的键值从获取的所述分区表名称对应的分区表中获取业务数据记录。
8.根据权利要求7所述的装置,其特征在于,
若所述数据获取模块通过检索对象能够从对应分区表中获取到的第N分页的业务数据记录个数小于所述页大小且起始分区表字段值+1后不大于分区表列表中的分区表的个数,则继续从下一分区表中获取业务数据记录,重复执行上述步骤直至获取到满足页大小的业务数据记录或在没有业务数据记录可取时终止。
9.根据权利要求7或8所述的装置,其特征在于,
当所述数据获取模块通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中还有未被获取的业务数据记录,则子请求处理模块将当前分区表中属于第N分页的最后一条业务数据记录的下一条业务数据记录的行键值作为第N+1分页子请求的起始键字段值,起始分区字段值不变;
当所述数据获取模块通过检索对象完成第N分页的业务数据记录的获取后,若当前分区表中已没有未被获取的业务数据记录且还有未被获取的分区表,则子请求处理模块将当前分区表索引值+1作为第N+1分页子请求的起始分区表字段值,起始键字段值置空。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实现如权利要求1至5中任一项的方法步骤功能。
CN202010811647.8A 2020-08-13 2020-08-13 一种数据分页查询方法、装置及存储介质 Active CN112148731B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010811647.8A CN112148731B (zh) 2020-08-13 2020-08-13 一种数据分页查询方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010811647.8A CN112148731B (zh) 2020-08-13 2020-08-13 一种数据分页查询方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112148731A CN112148731A (zh) 2020-12-29
CN112148731B true CN112148731B (zh) 2022-05-27

Family

ID=73888113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010811647.8A Active CN112148731B (zh) 2020-08-13 2020-08-13 一种数据分页查询方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112148731B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749187A (zh) * 2021-02-09 2021-05-04 北京宇信科技集团股份有限公司 数据查询方法、装置、电子设备及计算机存储介质
CN113590623A (zh) * 2021-07-28 2021-11-02 上海万物新生环保科技集团有限公司 一种用于数据深分页查询的方法、装置及设备
CN113590657A (zh) * 2021-08-09 2021-11-02 咪咕文化科技有限公司 基于数据库分片的数据查询方法、装置和服务器
CN114116762A (zh) * 2021-11-23 2022-03-01 天翼数字生活科技有限公司 一种离线数据模糊搜索方法、装置、设备和介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011130706A2 (en) * 2010-04-16 2011-10-20 Salesforce.Com, Inc. Methods and systems for performing cross store joins in a multi-tenant store
CN103886022A (zh) * 2014-02-24 2014-06-25 上海上讯信息技术股份有限公司 一种基于主键字段进行分页查询的查询设备及其方法
CN104102710A (zh) * 2014-07-15 2014-10-15 浪潮(北京)电子信息产业有限公司 一种海量数据查询方法
WO2016180123A1 (zh) * 2015-09-25 2016-11-17 中兴通讯股份有限公司 HBase二级索引创建方法和装置
CN106777343A (zh) * 2017-01-16 2017-05-31 百融(北京)金融信息服务股份有限公司 增量分布式索引系统和方法
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615142B2 (en) * 2018-08-20 2023-03-28 Salesforce, Inc. Mapping and query service between object oriented programming objects and deep key-value data stores

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011130706A2 (en) * 2010-04-16 2011-10-20 Salesforce.Com, Inc. Methods and systems for performing cross store joins in a multi-tenant store
CN103886022A (zh) * 2014-02-24 2014-06-25 上海上讯信息技术股份有限公司 一种基于主键字段进行分页查询的查询设备及其方法
CN104102710A (zh) * 2014-07-15 2014-10-15 浪潮(北京)电子信息产业有限公司 一种海量数据查询方法
WO2016180123A1 (zh) * 2015-09-25 2016-11-17 中兴通讯股份有限公司 HBase二级索引创建方法和装置
CN106777343A (zh) * 2017-01-16 2017-05-31 百融(北京)金融信息服务股份有限公司 增量分布式索引系统和方法
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
异构大数据存储方法研究;单旭;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)》;20140615(第06期);I137-139 *
面向大数据处理的应用性能优化方法研究;华幸成;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑(月刊)》;20190615(第06期);I138-14 *

Also Published As

Publication number Publication date
CN112148731A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
CN112148731B (zh) 一种数据分页查询方法、装置及存储介质
US8140495B2 (en) Asynchronous database index maintenance
US8938459B2 (en) System and method for distributed index searching of electronic content
CN109766318B (zh) 文件读取方法及装置
US10997037B1 (en) Method and system for enhanced backup database indexing
CN109299157B (zh) 一种分布式大单表的数据导出方法及装置
US20080155171A1 (en) File system, and method for storing and searching for file by the same
EP2833277B1 (en) Global dictionary for database management systems
WO2000062264A2 (en) Method and system for retrieving data from multiple data sources using a search routing database
CN102737133B (zh) 一种实时搜索的方法
US20080082554A1 (en) Systems and methods for providing a dynamic document index
CN104361038A (zh) 改进的搜索引擎
CN101136027A (zh) 用于数据库索引、搜索和数据检索的系统和方法
JPH0836518A (ja) オブジェクト指向データベース管理システム及びその管理方法
JP2002511169A (ja) データベース照会システムおよび方法
CN114116762A (zh) 一种离线数据模糊搜索方法、装置、设备和介质
CN106161193B (zh) 一种邮件处理方法、装置和系统
CN103186542A (zh) 一种数据查询的方法及装置
CN110825953B (zh) 数据查询方法、装置和设备
CN101770483A (zh) 自适应检索方法、装置及系统
CN112181994B (zh) 运维大数据的分布式内存数据库的刷新方法、装置、介质
CN111061759A (zh) 数据查询方法及装置
CN114996552A (zh) 一种数据获取方法及终端
US20060230054A1 (en) On-line organization of data sets
CN108509585A (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
GR01 Patent grant
GR01 Patent grant