CN116450607A - 数据处理方法、设备及存储介质 - Google Patents

数据处理方法、设备及存储介质 Download PDF

Info

Publication number
CN116450607A
CN116450607A CN202310360157.4A CN202310360157A CN116450607A CN 116450607 A CN116450607 A CN 116450607A CN 202310360157 A CN202310360157 A CN 202310360157A CN 116450607 A CN116450607 A CN 116450607A
Authority
CN
China
Prior art keywords
partition
key
target column
database
database table
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
CN202310360157.4A
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310360157.4A priority Critical patent/CN116450607A/zh
Publication of CN116450607A publication Critical patent/CN116450607A/zh
Pending legal-status Critical Current

Links

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/21Design, administration or maintenance of databases
    • 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/2453Query optimisation
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (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

数据处理方法、设备及存储介质
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据处理方法、设备及存储介质。
背景技术
互联网应用的快速提升带来了数据库单表数据量的大幅增长,传统的RDS(Relational Database Service,关系型数据库服务)数据表由于本地磁盘空间的大小的限制,即使采用共享存储方式,仍然解决不了上层执行器计算能力的限制。为了解决上层执行器计算能力的限制,从而过早地采用了分库分表的方式,和上层临时搭建第三方的分布式优化器来解决执行计划和多机并发的场景。
新一代关系型云原生数据库PolarDB产品中的关系型数据库管理***MySQL由于支持ePQ(elastic parallel query,弹性并行查询)、支持单机并行和跨机并行,大大缓解了用户分库分表的需求,而采用了集中式的简便方案。然而,对于过大的数据量的单表,当数据量达到一定程度之后,单表的性能就会遇到瓶颈开始下降,单一堆表和单一聚簇索引、二级索引等数据都难以管理。如何高效的进行数据的分而治之、弹性扩展,而不失交易和分析的性能就是一个亟待解决的问题。
分区表是数据库中常用的数据切分手段,相比分库分表,更能让客户通过标准数据库的使用模式来简化应用,而非依赖于特定的SQL(Structured Query Language,结构化查询语言)或者驱动使用方式。
发明内容
本申请实施例提出了本申请以提供一种数据处理方法、设备及存储介质。
于是,在本申请的一个实施例中,提供了一种数据处理方法。该方法包括:
在本申请的又一实施例中,提供了一种数据处理方法。该方法,包括:
确定待分区的数据库表及其主键;
从所述数据库表中确定区别于所述主键的第一目标列;
若所述主键到以所述第一目标列为分区键的分区函数存在映射关系,则根据以所述第一目标列为分区键的分区函数,对所述数据库表进行分区,得到多个分区;其中,所述分区的主键与所述数据库表的主键保持一致。
在本申请的又一实施例中,提供了一种数据处理方法。该方法,包括:
从数据库表中确定出区别于所述数据库表的分区键的第二目标列;所述数据库表对应有多个分区;所述多个分区是根据关于所述分区键的分区函数对所述数据库表进行分区得到的;
若所述第二目标列到关于所述分区键的所述分区函数存在映射关系,则确定所述第二目标列到关于所述分区键的所述分区函数的映射关系;
根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件;
根据所述查询条件以及所述第二目标列到关于所述分区键的所述分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
在本申请的又一实施例中,提供了一种电子设备。该电子设备,包括:存储器和处理器,其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现上述任一项所述的数据处理方法。
在本申请的又一实施例中,提供了一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述任一项所述的数据处理方法。
本申请实施例提供的技术方案中,从数据库表中查找区别于主键的第一目标列;若主键到以第一目标列为分区键的分区函数存在映射关系,则将第一目标列确定为分区键;后续根据以该第一目标列作为分区键的分区函数对数据库表进行分区。由于主键到关于分区键的分区函数存在映射关系,也就是说,相同主键值会对应于同一个分区函数值;同一个分区函数值必然对应于同一个分区。那么,具有相同主键值的数据库表记录会被分配到同一个分区。那么,如果先后重复出现两个相同主键值的数据库表记录,按照本方案,这两个相同主键值的数据库表记录会被分配到同一分区,在同一分区内,由于主键的唯一性,是无法重复***同一主键值的数据库表记录的。这样一来,就保证了主键的全局唯一性。采用本申请实施例提供的技术方案,能够在保证主键的全局唯一性的同时,消除现有技术中主键必须包含分区键的限制,为用户提供更多的便捷性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据处理方法的流程示意图;
图2为本申请一实施例提供的数据处理方法的示例图一;
图3为本申请一实施例提供的数据处理方法的示例图二;
图4为本申请一实施例提供的数据处理方法的示例图三;
图5为本申请一实施例提供的数据处理方法的流程示意图;
图6为本申请一实施例提供的电子设备的结构框图。
具体实施方式
目前,使用分区表最大的问题在于以下两点:
一、分区表定义和单表定义不同,突出在主键必须包含分区键,以保证分区数据的全局唯一性。
正因这个限制,导致用户只能使用主键,例如:自增主键ID(Identity document,身份标识号)来作为分区键。这样,才能减少对主键的改变,从而不影响二级索引等。注:二级索引中的每个叶子节点中需要包含主键。
从这里可以看出,用户如果想用区别于单表的主键的其他列,如时间列作为分区键,就需要在单表的主键中添加分区键,重新定义主键。
二、由于区别于主键的分区键的存在,必须修改用户的结构化查询语句SQL,以使其中包含分区键的查询条件,才可以提高性能,导致不能平滑将用户的访问对象从单表转为分区表。
为了解决上述第一个问题,本申请实施例提出:利用分区键和主键的关联关系或者用户应用保证数据进入分区的主键数据的唯一性,解耦主键和分区键的包含关系,保持单表的主键定义,减少主键和二级索引的空间占用和查询效率。
为了解决上述第二个问题,利用分区键和查询列(可以是主键、二级索引列或普通列)的关联关系,解耦用户SQL与分区键的包含关系,解决用户SQL必须包含分区键才能优化查询和***、更新和删除数据的效率这个问题,这样,用户无需改变自己的应用。
为了使本技术领域的人员更好地理解本申请方案,下面将根据本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
图1示出了本申请一实施例提供的数据处理方法的流程示意图。该方法的执行主体可以为客户端,也可以为服务端。其中,所述客户端可以是集成在终端上的一个具有嵌入式程序的硬件,也可以是安装在终端中的一个应用软件,还可以是嵌入在终端操作***中的工具软件等,本申请实施例对此不作限定。该终端可以为包括手机、平板电脑等任意终端设备。其中,服务端可以是常用服务器、云端或虚拟服务器等,本申请实施例对此不作具体限定。如图1所示,该方法包括:
101、确定待分区的数据库表及其主键。
102、从所述数据库表中确定区别于所述主键的第一目标列。
103、若所述主键到以所述第一目标列为分区键的分区函数存在映射关系,则根据以所述第一目标列为分区键的分区函数,对所述数据库表进行分区,得到多个分区。
其中,所述分区的主键与所述数据库表的主键保持一致。
上述101中,上述待分区的数据库表可以是由用户根据实际需要来指定。或者,根据某种筛选策略自动从多个数据库表中筛选出来的,本申请实施例对此不作具体限定。
在实际应用中,当某个数据库表的数据库表记录的数量超过预设数量阈值时,可将该数据库表确定为待分区的数据库表。
主键一般指主关键字(primary key)。主关键字是数据库表中的一个或多个字段(或称列)的组合,它的值用于唯一的标识数据库表中的某一条记录。
上述102中,第一目标列区别于主键,指的是第一目标列不包含于主键内。也就是说,第一目标列不是主键内的任意一列。
上述第一目标列可以是由用户根据实际需要指定的,也可以是根据某种策略自动确定的,本申请实施例对此不作具体限定。
上述103中,上述分区函数可以由用户根据实际需要来指定,本申请实施例对此不作具体限定。
主键到以所述第一目标列为分区键的分区函数的映射关系可以是一对一或多对一的映射关系。其中,多对一的映射关系是指:多个不同的主键值,对应同一分区函数值。主键到以所述第一目标列为分区键的分区函数的映射关系可用数学表达式来表示:f(主键)=g(分区键),其中,g(分区键)是分区函数,f()是主键到以所述第一目标列为分区键的分区函数的映射关系。
下面将举例介绍主键到以所述第一目标列为分区键的分区函数的映射关系:
假设数据库表中包括:身份标识号列和地区列,注:一般证件标识号中特定序位的数字是用来表明用户所属的地区,例如:车牌号。其中,身份标识号列为主键。如果分区函数是按照地区来划分,那么,身份标识号列与以地区列为分区键的分区函数存在映射关系。
假设数据库表中包括:学生编号列和班级列,注:一般学生编号中特定序位的数字是用来表明学生所属的班级的。其中,学生编号列为主键。如果分区函数是按照班级来划分,那么,学生编号列与以班级列为分区键的分区函数存在映射关系。
假设数据库表中包括:记录号列和记录创建时间列。其中,记录号列可以是自增ID(Identity document,身份标识号)列。记录号列和记录创建时间列都属于单调递增列,也即,后创建记录的记录号肯定大于先创建记录的记录号,后创建记录的记录创建时间肯定晚于先创建记录的记录创建时间。注:任意两个记录的创建时间都是不同的。如果分区函数是按照时间区间来划分,那么,记录号列与以记录创建时间列为分区键的分区函数也是存在映射关系的。
当主键到以所述第一目标列为分区键的分区函数存在映射关系,则将第一目标列作为目标分区键,根据有关所述目标分区键的分区函数,对数据库表进行分区,得到多个分区。
实际应用中,具有相同分区函数值的数据库表记录会划分到同一分区。可以认为:一个分区函数值对应一个分区,不同分区函数值对应不同的分区。也就是说,多个分区函数值与多个分区一一对应,这个对应关系可事先建立并保存,后续根据该对应关系,将数据库表中的数据库表记录划分到对应分区即可。对应关系可保存在内存中。
本申请实施例中,多个分区中各分区的主键与数据库表的主键保持一致,未发生变化。
本申请实施例提供的技术方案中,从数据库表中查找区别于主键的第一目标列;若主键到以第一目标列为分区键的分区函数存在映射关系,则将第一目标列确定为分区键;后续根据以该第一目标列作为分区键的分区函数对数据库表进行分区。由于主键到关于分区键的分区函数存在映射关系,也就是说,相同主键值会对应于同一个分区函数值;同一个分区函数值必然对应于同一个分区。那么,具有相同主键值的数据库表记录会被分配到同一个分区。那么,如果先后重复出现两个相同主键值的数据库表记录,按照本方案,这两个相同主键值的数据库表记录会被分配到同一分区,在同一分区内,由于主键的唯一性,是无法重复***同一主键值的数据库表记录的。这样一来,就保证了主键的全局唯一性。采用本申请实施例提供的技术方案,能够在保证主键的全局唯一性的同时,消除现有技术中主键必须包含分区键的限制,为用户提供更多的便捷性。
为了避免全表扫描,现有技术提出分区剪枝方案。分区剪枝是指对于分区表或分区索引来说,优化器可以自动根据SQL语句中FROM子句或WHERE子句中携带的分区键的查询条件,提取出需要扫描的分区,从而避免全表扫描,减少扫描的数据块,提高性能。该分区剪枝方案要求SQL语句中必须携带有分区键的查询条件,这样才能够实现分区剪枝。现有技术中,基于主键查询的SQL语句中,由于携带有主键的查询条件,而主键包含分区键,因此,是可以确定出分区键的查询条件的。但是,对于主键不包含分区键时,就需要在SQL语句中额外添加分区键的查询条件。也就是说,需要用户适应性修改其应用逻辑,使得其SQL语句中携带分区键的查询条件。
为了在不更改用户的应用逻辑的前提下,实现分区剪枝,本申请实施例提出:根据主键到以第一目标列为分区键的分区函数的映射关系,针对数据库操作请求,执行分区剪枝操作。具体地,上述方法,还可包括:
104、确定所述主键到以所述第一目标列为分区键的分区函数的映射关系。
105、根据有关所述数据库表的第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件。
106、根据所述主键查询条件以及所述主键到以所述第一目标列为分区键的分区函数的映射关系,从所述多个分区中确定所述第一数据操作请求所需访问的第一目标分区。
上述104中,在实际应用中,若主键到以所述第一目标列为分区键的分区函数存在映射关系,则可确定出所述主键到以所述第一目标列为分区键的分区函数的映射关系,并保存该映射关系。
上述105中,在一实例中,有关所述数据库表的第一数据库操作请求中携带有主键查询条件。
在另一实例中,所述第一数据库操作请求是有关所述数据库表和其他数据库表的连接查询请求。上述105中“根据有关所述数据库表的所述第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件”,可包括:
1051a、根据所述连接查询请求中携带的针对所述其他数据库表的查询条件,查询所述其他数据库表,以确定所述第一数据库操作请求针对所述数据库表的主键查询条件。
根据所述连接查询请求中携带的针对所述其他数据库表的查询条件,查询所述其他数据库表,得到第一查询结果;根据第一查询结果,确定所述第一数据库操作请求针对所述数据库表的主键查询条件。
在又一实例中,所述第一数据库操作请求包括:主查询以及嵌套在所述主查询内部的关联子查询;上述105中“根据有关所述数据库表的所述第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件”,可包括:
1051b、根据所述主查询,执行相应查询,以确定所述子查询针对所述数据库表的主键查询条件。
1052b、将所述子查询针对所述数据库表的主键查询条件确定为所述第一数据库操作请求针对所述数据库表的主键查询条件。
具体地,根据主查询中携带的主查询条件,查询目标数据库表,得到第二查询结果;根据第二查询结果,确定子查询的主键查询条件。其中,目标数据库表可以是所述数据库表或其他数据库表。
上述106中,根据所述主键查询条件以及所述主键到以所述第一目标列为分区键的分区函数的映射关系,从所述多个分区中确定所述第一数据操作请求所需访问的第一目标分区。
主键查询条件中会携带有主键值和/或主键值范围区间。按照上述映射关系,将主键查询条件中携带的主键值,映射成第一目标分区函数值;按照上述映射关系,将主键查询条件中携带的主键值范围区间,映射成至少一个第二目标分区函数值。
根据第一目标分区函数值和/或至少一个第二目标分区函数值,从多个分区中确定第一数据操作请求所需访问的第一目标分区。第一目标分区的数量可以是一个或多个。
若请求中携带有主键查询条件,则在执行查询之前就可以进行剪枝,称为静态剪枝;
若请求中未携带有主键查询条件,则需要先执行查询,然后才能够进行剪枝,称为动态剪枝。
在一实例中,在确定出第一目标分区之后,上述方法,还可包括:
107a、根据所述第一目标分区,改写所述第一数据操作请求,以在所述第一数据操作请求中添加分区键对应的查询条件,得到改写后第一数据操作请求。
108a、根据所述改写后第一数据操作请求,执行相应的数据操作。
在本实施例中,通过改写第一数据操作请求,得到包含分区键对应的查询条件的改写后第一数据操作请求。根据改写后第一数据操作请求,再执行对数据库表的数据操作。
在另一实例中,在确定出第一目标分区之后,上述方法,还可包括:
107b、确定出所述第一目标分区后,修改分区剪枝读取位图,以将所述分区剪枝读取位图中对应于所述第一目标分区的数位置为第一值以及将所述分区剪枝读取位图中对应于其他分区的数位置为第二值。
108b、根据所述第一数据操作请求和修改后的所述分区剪枝读取位图,执行相应的数据操作。
上述分区剪枝读取位图的位数为多个,多个位数与多个分区一一对应。第一值和第二值不同。例如:第一值可以为1,第二值可以为0。第一值和第二值的具体数值可根据实际需要来设置,本申请实施例对此不作任何限定。
可选地,所述第一数据库操作请求中携带有分区键查询条件。上述方法,还可包括:
109、根据所述分区键查询条件,从所述多个分区中确定出所述第一数据操作请求所需访问的第三目标分区。
110、若所述第一目标分区和所述第三目标分区之间不存在交集,则针对所述第一数据操作请求返回空结果集。
在本实施例中,第一数据库操作请求中携带有分区键查询条件。
根据分区键查询条件,从所述多个分区中确定出所述第一数据操作请求所需访问的第三目标分区。如果所述第一目标分区和所述第三目标分区之间不存在交集,那么就无需扫码,即可针对所述第一数据操作请求返回空结果集。
在本实施例中,无需扫描某一个分区就可以返回最终查询结果。
在实际应用中,需要判断主键到以第一目标列为分区键的分区函数是否存在映射关系。在一种可实现的方案中,上述方法,还可包括:
111、判断所述主键和所述第一目标列是否为递增列。
112、若所述主键和所述第一目标列同时为递增列,则判定所述主键到以所述第一目标列为分区键的分区函数存在映射关系。
在实际应用中,记录号列和记录创建时间列都是递增列。其中,记录号列通常为自增列。
一旦判定主键和第一目标列同时为递增列,那么,就可以判定主键到以第一目标列为分区键的分区函数存在映射关系。
在本实施例中,判定过程简单有效。
进一步的,所述分区函数为按照所述第一目标列的取值范围进行分区的函数;所述分区函数的输入为所述数据库表的数据库表记录中所述第一目标列的列值;所述分区函数的输出为所述数据库表记录所属分区的分区标识。在本实施例中,将分区函数的输出也即分区函数值直接作为分区标识。
上述104中“确定所述主键到以所述第一目标列为分区键的分区函数的映射关系”,可采用如下步骤来实现:
1041、确定所述多个分区中各分区的主键数值范围。
1042、建立所述多个分区中各分区的主键数值范围与其分区标识之间的对应关系,以作为所述主键到以所述第一目标列为分区键的分区函数的映射关系。
这样,后续根据该映射关系,可以确定出每个主键值对应的分区标识。
如图2所示,数据库表t1对应多个分区201,其对应的映射关系为主键的取值范围与分区标识之间的对应关系表200,图2中对应关系表200中,第一行中的每个元素对应的是主键的取值范围,取值范围为当前元素的元素值到下一个元素的元素值之间的范围。第一数据库操作请求对应的SQL语句:Select*from t1 where id=45000。其中,id=45000为主键查询条件。根据SQL语句中的主键查询条件先查询对应关系表200,进而确定出目标分区p2112。
如图3所示,连接查询请求对应的SQL语句为:select*FROM t1,t2 where t1.id=t2.t1_id and t2.name=“BOB”。其中,t1是上述的数据库表,t2是上述的其他数据库表。其中,t2.name=“BOB”是针对其他数据库表t2的查询条件,根据该查询条件,查询出t1_id=70000;因此,针对数据库表t1的主键查询条件也即t1_id=70000。根据主键查询条件查询上述对应关系表200,进而确定出目标分区p2201。
如图2所示,SQL语句为:Select*from t1 where id=45000and created_at>=‘20220201’and created_at>=‘20220228’。根据id=45000,查询对应关系表200,确定出目标分区p2112,;根据“created_at>=‘20220201’and created_at>=‘20220228’”,确定出目标分区p2202。这两个目标分区不存在任何交集,因此可直接返回空结果集,无需扫描分区。
如图4所示,本方案的查询语句还可以是聚合查询语句,例如:Select count(*)from t1having id>43000and id<55000。根据该聚合查询语句中的主键查询条件查询对应关系表200,进而确定出目标分区。
可选地,上述方法,还可包括:
113、从所述数据库表中确定出第二目标列。
其中,所述第二目标列区别于作为分区键的所述第一目标列。
114、若所述第二目标列到以所述第一目标列为分区键的所述分区函数存在映射关系,则确定所述第二目标列到以所述第一目标列为分区键的所述分区函数的映射关系。
115、根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件。
116、根据所述查询条件以及所述第二目标列到以所述第一目标列为分区键的所述分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
上述113中,第二目标列不是分区键。第二目标列也可由用户根据实际需要来指定。
上述各步骤的具体实现将在下述实施例中详细介绍。
利用本方案所提及的分区键和主键的关联关系或者用户应用保证应用数据进入分区的主键数据的唯一性,可解耦主键和分区键的包含关系,保持单表的主键定义,减少主键和二级索引的空间占用和查询效率。利用分区键和查询列(例如:上述的主键或第二目标列)的关联关系,解耦用户SQL和分区键的包含关系,解决用户SQL必须包含分区键才能优化查询和***、更新和删除数据的效率这个问题,用户无需改变应用逻辑。
本方案可应用在关系型数据库管理***MySQL使用分区表的场景下,用户应用逻辑不做修改的情况下,平滑从单表转为分区表而提升性能。
图5示出了本申请又一实施例提供的数据处理方法的流程示意图。该方法的执行主体可以为客户端,也可以为服务端。其中,所述客户端可以是集成在终端上的一个具有嵌入式程序的硬件,也可以是安装在终端中的一个应用软件,还可以是嵌入在终端操作***中的工具软件等,本申请实施例对此不作限定。该终端可以为包括手机、平板电脑等任意终端设备。其中,服务端可以是常用服务器、云端或虚拟服务器等,本申请实施例对此不作具体限定。如图5所示,该方法包括:
501、从所述数据库表中确定出区别于所述数据库表的分区键的第二目标列;所述数据库表对应有多个分区。
其中,所述多个分区是根据关于所述分区键的分区函数对所述数据库表进行分区得到的。
502、若所述第二目标列到关于所述分区键的所述分区函数存在映射关系,则确定所述第二目标列到关于所述分区键的所述分区函数的映射关系。
503、根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件。
504、根据所述查询条件以及所述第二目标列到关于所述分区键的所述分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
上述501中,第二目标列区别于数据库表的分区键。
上述第二目标列可以是由用户根据实际需要指定的,也可以是根据某种策略自动确定的,本申请实施例对此不作具体限定。
上述分区函数可以由用户根据实际需要来指定,本申请实施例对此不作具体限定。
第二目标列到以所述第一目标列为分区键的分区函数的映射关系可以是一对一或多对一的映射关系。其中,多对一的映射关系是指:多个不同的第二目标列值,对应同一分区函数值。第二目标列到以所述第一目标列为分区键的分区函数的映射关系可用数学表达式来表示:f(第二目标列)=g(分区键),其中,g(分区键)是分区函数,f()是第二目标列到以所述第一目标列为分区键的分区函数的映射关系。
上述502中,若第二目标列到以所述第一目标列为分区键的分区函数存在映射关系,则可确定出所述第二目标列到以所述第一目标列为分区键的分区函数的映射关系,并保存该映射关系。
上述503中,在一实例中,有关所述数据库表的第二数据库操作请求中携带有有关第二目标列的查询条件。
在另一实例中,所述第一数据库操作请求是有关所述数据库表和其他数据库表的连接查询请求。上述503中“根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件”,可包括:
5031a、根据所述连接查询请求中携带的针对所述其他数据库表的查询条件,查询所述其他数据库表,以确定所述第二数据库操作请求针对所述数据库表的有关第二目标列的查询条件。
根据所述连接查询请求中携带的针对所述其他数据库表的查询条件,查询所述其他数据库表,得到第三查询结果;根据第三查询结果,确定所述第二数据库操作请求针对所述数据库表的有关第二目标列的查询条件。
在又一实例中,所述第二数据库操作请求包括:主查询以及嵌套在所述主查询内部的关联子查询;上述503中“根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件”,可包括:
5031b、根据所述主查询,执行相应查询,以确定所述子查询针对所述数据库表的有关第二目标列的查询条件。
5032b、将子查询针对数据库表的有关第二目标列的查询条件确定为所述第二数据库操作请求针对所述数据库表的有关第二目标列的查询条件。
根据所述主查询中携带的主查询条件,查询目标数据库表,得到第四查询结果;根据所述第四查询结果,确定子查询针对数据库表的有关第二目标列的查询条件。所述目标数据库表可以是所述数据库表,还可以是其他数据库表,本申请实施例对此不作具体限制。
上述504中,根据有关第二目标列的查询条件以及所述第二目标列到以所述第一目标列为分区键的分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
有关第二目标列的查询条件中会携带有第二目标列值和/或第二目标列的取值范围。按照上述映射关系,将有关第二目标列的查询条件中携带的第二目标列值,映射成第三目标分区函数值;按照上述映射关系,将有关第二目标列的查询条件中携带的第二目标列的取值范围,映射成至少一个第四目标分区函数值。
根据第三目标分区函数值和/或至少一个第四目标分区函数值,从多个分区中确定第二数据操作请求所需访问的第二目标分区。第二目标分区的数量可以是一个或多个。
在一实例中,在确定出第二目标分区之后,上述方法,还可包括:
根据所述第二目标分区,改写所述第二数据操作请求,以在所述第二数据操作请求中添加分区键对应的查询条件,得到改写后第二数据操作请求。
根据所述改写后第二数据操作请求,执行相应的数据操作。
在本实施例中,通过改写第二数据操作请求,得到包含分区键对应的查询条件的改写后第二数据操作请求。根据改写后第二数据操作请求,再执行对数据库表的数据操作。
在另一实例中,在确定出第二目标分区之后,上述方法,还可包括:
确定出所述第二目标分区后,修改分区剪枝读取位图,以将所述分区剪枝读取位图中对应于所述第二目标分区的数位置为第一值以及将所述分区剪枝读取位图中对应于其他分区的数位置为第二值。
根据所述第二数据操作请求和修改后的所述分区剪枝读取位图,执行相应的数据操作。
上述分区剪枝读取位图的位数为多个,多个位数与多个分区一一对应。第一值和第二值不同。例如:第一值可以为1,第二值可以为0。第一值和第二值的具体数值可根据实际需要来设置,本申请实施例对此不作任何限定。
可选地,所述第二数据库操作请求中携带有分区键查询条件。上述方法,还可包括:
根据所述分区键查询条件,从所述多个分区中确定出所述第二数据操作请求所需访问的第四目标分区。
若所述第二目标分区和所述第四目标分区之间不存在交集,则针对所述第二数据操作请求返回空结果集。
在本实施例中,第二数据库操作请求中携带有分区键查询条件。
根据分区键查询条件,从所述多个分区中确定出所述第二数据操作请求所需访问的第三目标分区。如果所述第二目标分区和所述第三目标分区之间不存在交集,那么就无需扫码,即可针对所述第二数据操作请求返回空结果集。
在本实施例中,无需扫描某一个分区就可以返回最终查询结果。
在实际应用中,需要判断第二目标列到以第一目标列为分区键的分区函数是否存在映射关系。在一种可实现的方案中,上述方法,还可包括:
判断所述第二目标列和所述第一目标列是否为递增列。
若所述第二目标列和所述第一目标列同时为递增列,则判定所述第二目标列到以所述第一目标列为分区键的分区函数存在映射关系。
一旦判定第二目标列和第一目标列同时为递增列,那么,就可以判定第二目标列到以第一目标列为分区键的分区函数存在映射关系。
在本实施例中,判定过程简单有效。
进一步的,所述分区函数为按照所述第一目标列的取值范围进行分区的函数;所述分区函数的输入为所述数据库表的数据库表记录中所述第一目标列的列值;所述分区函数的输出为所述数据库表记录所属分区的分区标识。在本实施例中,将分区函数的输出也即分区函数值直接作为分区标识。
可选地,上述502中“确定所述第二目标列到以所述第一目标列为分区键的分区函数的映射关系”,可采用如下步骤来实现:
5021、确定所述多个分区中各分区的第二目标列的数值范围。
5022、建立所述多个分区中各分区的第二目标列的数值范围与其分区标识之间的对应关系,以作为第二目标列到以所述第一目标列为分区键的分区函数的映射关系。
这样,后续根据该映射关系,可以确定出每个第二目标列的值对应的分区标识。
在一实例中,上述方法,还可包括:
针对所述数据库表的数据库操作请求,对所述数据库表执行相应的数据操作后,根据所述多个分区中各分区当前的主键的数值范围,更新所述多个分区中各分区的主键的数值范围与其分区标识之间的对应关系,和/或,根据所述多个分区中各分区当前的第二目标列的数值范围,更新所述多个分区中各分区的第二目标列的数值范围与其分区标识之间的对应关系。
上述数据库操作请求可包括上述第一数据库操作请求和所述第二数据库操作请求。第一数据库操作请求和第二数据库操作请求可以是增删改查中的任一操作请求。
更新对应关系,本质上也即更新对应关系中的数值范围,实现了对应关系的自适应修改。
这里需要说明的是:本申请实施例提供的所述方法中各步骤未尽详述的内容可参见上述实施例中的相应内容,此处不再赘述。此外,本申请实施例提供的所述方法中除了上述各步骤以外,还可包括上述各实施例中其他部分或全部步骤,具体可参见上述各实施例相应内容,在此不再赘述。
图6示出了本申请一实施例提供的电子设备的结构示意图。如图6所示,所述电子设备包括存储器1101以及处理器1102。存储器1101可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器1101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static RandomAccess Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable read only memory),EEPROM),可擦除可编程只读存储器(Electrical Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器1101,用于存储程序;
所述处理器1102,与所述存储器1101耦合,用于执行所述存储器1101中存储的所述程序,以实现上述各方法实施例提供的方法。
进一步,如图6所示,电子设备还包括:通信组件1103、显示器1104、电源组件1105、音频组件1106等其它组件。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各方法实施例提供的方法的步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM(Read Only Memory,只读存储器)/RAM(RandomAccess Memory,随机存取存储器)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (11)

1.一种数据处理方法,其特征在于,包括:
确定待分区的数据库表及其主键;
从所述数据库表中确定区别于所述主键的第一目标列;
若所述主键到以所述第一目标列为分区键的分区函数存在映射关系,则根据以所述第一目标列为分区键的分区函数,对所述数据库表进行分区,得到多个分区;其中,所述分区的主键与所述数据库表的主键保持一致。
2.根据权利要求1所述的方法,其特征在于,还包括:
确定所述主键到以所述第一目标列为分区键的分区函数的映射关系;
根据有关所述数据库表的第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件;
根据所述主键查询条件以及所述主键到以所述第一目标列为分区键的分区函数的映射关系,从所述多个分区中确定所述第一数据操作请求所需访问的第一目标分区。
3.根据权利要求2所述的方法,其特征在于,所述第一数据库操作请求是有关所述数据库表和其他数据库表的连接查询请求;
根据有关所述数据库表的所述第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件,包括:
根据所述连接查询请求中携带的针对所述其他数据库表的查询条件,查询所述其他数据库表,以确定所述第一数据库操作请求针对所述数据库表的主键查询条件。
4.根据权利要求2所述的方法,其特征在于,所述第一数据库操作请求包括:主查询以及嵌套在所述主查询内部的关联子查询;
根据有关所述数据库表的所述第一数据库操作请求,确定所述第一数据库操作请求针对所述数据库表的主键查询条件,包括:
根据所述主查询,执行相应查询,以确定所述子查询针对所述数据库表的主键查询条件;
将所述子查询针对所述数据库表的主键查询条件确定为所述第一数据库操作请求针对所述数据库表的主键查询条件。
5.根据权利要求2至4中任一项所述的方法,其特征在于,还包括:
判断所述主键和所述第一目标列是否为递增列;
若所述主键和所述第一目标列同时为递增列,则判定所述主键到以所述第一目标列为分区键的分区函数存在映射关系。
6.根据权利要求5所述的方法,其特征在于,所述分区函数为按照所述第一目标列的取值范围进行分区的函数;所述分区函数的输入为所述数据库表的数据库表记录中所述第一目标列的列值;所述分区函数的输出为所述数据库表记录所属分区的分区标识;
确定所述主键到以所述第一目标列为分区键的分区函数的映射关系,包括:
确定所述多个分区中各分区的主键数值范围;
建立所述多个分区中各分区的主键数值范围与其分区标识之间的对应关系,以作为所述主键到以所述第一目标列为分区键的分区函数的映射关系。
7.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
从所述数据库表中确定出第二目标列;所述第二目标列区别于作为分区键的所述第一目标列;
若所述第二目标列到以所述第一目标列为分区键的所述分区函数存在映射关系,则确定所述第二目标列到以所述第一目标列为分区键的所述分区函数的映射关系;
根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件;
根据所述查询条件以及所述第二目标列到以所述第一目标列为分区键的所述分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
8.根据权利要求2至4中任一项所述的方法,其特征在于,所述第一数据库操作请求中携带有分区键查询条件;所述方法,还包括:
根据所述分区键查询条件,从所述多个分区中确定出所述第一数据操作请求所需访问的第三目标分区;
若所述第一目标分区和所述第三目标分区之间不存在交集,则针对所述第一数据操作请求返回空结果集。
9.一种数据处理方法,其特征在于,包括:
从数据库表中确定出区别于所述数据库表的分区键的第二目标列;所述数据库表对应有多个分区;所述多个分区是根据关于所述分区键的分区函数对所述数据库表进行分区得到的;
若所述第二目标列到关于所述分区键的所述分区函数存在映射关系,则确定所述第二目标列到关于所述分区键的所述分区函数的映射关系;
根据有关所述数据库表的第二数据库操作请求,确定所述第二数据库操作请求针对所述数据库表的有关所述第二目标列的查询条件;
根据所述查询条件以及所述第二目标列到关于所述分区键的所述分区函数的映射关系,从所述多个分区中确定所述第二数据操作请求所需访问的第二目标分区。
10.一种电子设备,其特征在于,包括:存储器和处理器,其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现权利要求1至9中任一项所述的数据处理方法。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被计算机执行时能够实现权利要求1至9中任一项所述的数据处理方法。
CN202310360157.4A 2023-03-31 2023-03-31 数据处理方法、设备及存储介质 Pending CN116450607A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310360157.4A CN116450607A (zh) 2023-03-31 2023-03-31 数据处理方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310360157.4A CN116450607A (zh) 2023-03-31 2023-03-31 数据处理方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116450607A true CN116450607A (zh) 2023-07-18

Family

ID=87126640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310360157.4A Pending CN116450607A (zh) 2023-03-31 2023-03-31 数据处理方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116450607A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117827849A (zh) * 2024-03-04 2024-04-05 支付宝(杭州)信息技术有限公司 数据字典的维护方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117827849A (zh) * 2024-03-04 2024-04-05 支付宝(杭州)信息技术有限公司 数据字典的维护方法及装置

Similar Documents

Publication Publication Date Title
CN108874971B (zh) 一种应用于海量标签化实体数据存储的工具和方法
CN110321344B (zh) 关联数据的信息查询方法、装置、计算机设备及存储介质
CN110413611B (zh) 数据存储、查询方法及装置
CN108427684B (zh) 数据查询方法、装置及计算设备
CN107818115B (zh) 一种处理数据表的方法及装置
CN111930780A (zh) 数据查询方法及***
CN106407360B (zh) 一种数据的处理方法及装置
CN111221840B (zh) 数据处理方法及装置、数据缓存方法、存储介质、***
US10296497B2 (en) Storing a key value to a deleted row based on key range density
CN104239377A (zh) 跨平台的数据检索方法及装置
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN114020790A (zh) 一种数据查询的方法及装置
WO2023083237A1 (zh) 图数据的管理
CN116450607A (zh) 数据处理方法、设备及存储介质
CN110162540B (zh) 区块链账本数据的查询方法、电子装置及存储介质
CN114925041A (zh) 一种数据查询方法及装置
CN114840487A (zh) 分布式文件***的元数据管理方法和装置
CN113849499A (zh) 数据的查询方法、装置、存储介质及电子装置
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
CN113360551B (zh) 一种靶场中时序数据的存储与快速统计方法及***
CN114116723A (zh) 快照处理方法、装置及电子设备
CN114064729A (zh) 一种数据检索方法、装置、设备及存储介质
CN108984720B (zh) 基于列存储的数据查询方法、装置、服务器及存储介质
CN112835873A (zh) 电网调控异构***服务化访问方法、***、设备及介质
CN115809268B (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