CN106716400B - 一种数据表的分区管理方法及装置 - Google Patents
一种数据表的分区管理方法及装置 Download PDFInfo
- Publication number
- CN106716400B CN106716400B CN201580001180.8A CN201580001180A CN106716400B CN 106716400 B CN106716400 B CN 106716400B CN 201580001180 A CN201580001180 A CN 201580001180A CN 106716400 B CN106716400 B CN 106716400B
- Authority
- CN
- China
- Prior art keywords
- dimensional
- subregion
- copy
- data
- tables
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据表的分区管理方法及装置,包括:确定表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表(S301);根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区(S302)。针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据表的分区管理方法及装置。
背景技术
随着信息化的发展,数据库不仅要求数据的存储效率高,而且要求数据分析的数据源最新,以便提出的结论有参考价值。因此,如图1所示,结合OLTP(Online TransactionProcessing,联机事务处理)和OLAP(Online Analysis Processing,联机分析处理)组成一个新的系统,该系统是一种OLTP和OLAP应用的混合存储数据库,同时支持列存储和行存储功能,因此具有良好的读性能和写性能。其中,OLTP可以及时地处理输入的数据并做出回答,OLAP可以进行复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。对于该新的系统,如何保证OLTP操作的实时性以及OLAP的分析效率和实效性至关重要。
现有技术方案一,如图2所示,存储系统首先对数据进行备份,然后将备份的数据存储到对应的多个物理磁盘中,其中,DSM(Decomposition Storage Model,分解存储模型)是以列存储方式保存数据,NSM(N-ary storage mode,多维存储模式)是以行存储的方式保存数据,并且对于OLAP的请求可以路由到列副本来执行,对于OLTP的请求可以路由到行副本来执行。但是,该方案对于不同类型的查询分别使用不同的副本进行处理,尤其对于多表关联的操作,消耗计算量和数据网络传输开销大。
现有技术方案二,数据库系统在内部分为两个子系统来保存系统数据,一份数据在两个子系统中至少各保存一份,一个子系统将数据保存为非列存储结构,另一个子系统将数据保存为列存储结构。对于不同类型的查询服务,路由到不同的子系统中进行处理。例如:对于增删改的数据操作,路由到非列存储子系统进行处理,列存储子系统定时的从非列存储子系统中请求数据同步。但是,两个子系统是两个相对独立的,无论是对于硬件配置还是系统维护都需要很大开销。
在数据库系统中如何能够既保证OLTP操作的实时性又能够实现OLAP的分析效率和实效性是需要解决的问题。
发明内容
本发明提供了一种数据表的分区管理方法及装置,针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
本发明实施例第一方面提供了一种数据表的分区管理方法,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,包括:
确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;
根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;
将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
结合第一方面的第一种以及第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;
从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;
根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;
对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区包括:
当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;
当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
结合第一方面,在第一方面的第五种可能的实现方式中,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区之后,还包括:
根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列;
根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。
结合第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。
结合第一方面的第五种可能的实现方式,在第一方面的第八种可能的实现方式中,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。
结合第一方面的第五种至第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述主节点包括一维行副本的主节点,所述根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上包括:
通过所述一维行副本的主节点将所述表组中的各数据表发送至所述从节点进行同步。
本发明实施例第二方面提供了一种数据表的分区管理装置,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,所述装置包括:
确定模块,用于确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;
分区模块,用于根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
结合第二方面,在第二方面的第一种可能的实现方式中,所述分区模块具体用于:
当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述分区模块具体用于:
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;
将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
结合第二方面的第一种以及第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述分区模块具体用于:
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;
从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;
根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;
对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述分区模块具体用于:
当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;
当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
结合第二方面,在第二方面的第五种可能的实现方式中,所述装置还包括:
创建模块,用于根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列;
同步模块,用于根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述创建模块具体用于:
当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。
结合第二方面的第五种可能的实现方式,在第二方面的第七种可能的实现方式中,所述创建模块具体用于:
当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。
结合第二方面的第五种可能的实现方式,在第二方面的第八种可能的实现方式中,所述创建模块具体用于:
当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。
结合第二方面的第五种至第八种可能的实现方式,在第二方面的第九种可能的实现方式中,所述主节点包括一维行副本的主节点,所述同步模块具体用于:
通过所述一维行副本的主节点将所述表组中的各数据表发送至所述从节点进行同步。
本发明实施例第三方面提供了另一种数据表的分区管理装置,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,所述装置包括网络接口、存储器以及处理器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于使所述装置执行上述实现方式中的方法。
实施本发明实施例,首先确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;然后根据表组中每个数据表的类型,针对每个数据表中的关联键对每个数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。因此针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明现有技术方案提供的一种数据库结构示意图;
图2是本发明现有技术方案提供的一种数据存储的结构示意图;
图3是本发明第一实施例提出的一种数据表的分区管理方法的示意流程图;
图4A是本发明实施例提供的一种表组的结构示意图;
图4B是本发明实施例提供的另一种表组的结构示意图;
图5A是本发明实施例提供的一种一维维度表的分区示意图;
图5B是本发明实施例提供的一种多维维度表的分区示意图;
图5C是本发明实施例提供的另一种多维维度表的分区示意图;
图5D是本发明实施例提供的一种事实表的分区示意图;
图6是本发明第二实施例提出的一种数据表的分区管理方法的示意流程图;
图7A是本发明实施例提供的一种创建一维维度表的同步队列的示意图;
图7B是本发明实施例提供的一种创建多维维度表的同步队列的示意图;
图7C是本发明实施例提供的一种创建事实表的同步队列的示意图;
图8是本发明实施例提出的一种数据表的分区管理装置的结构示意图;
图9是本发明实施例提供的一种数据库系统的网络结构示意图;
图10是本发明实施例提出的另一种数据表的分区管理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图3,图3是本发明第一实施例提出的一种数据表的分区管理方法的示意流程图。本发明实施例中的执行主体可以为数据库集群中的管理节点,如图所示,本发明实施例中的方法包括:
S301,确定表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表。
具体实现中,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键。在分布式数据库多表管理的业务场景中,数据库保存的表根据保存的内容可以分为事实表和维度表。事实表是多个维度表的一个交点,包含描述业务(如银行事务或产品销售)内特定事件的数据,用于存储至少一个事实记录,每个事实记录对应事实表中的一行。一个事实表可以关联多个维度表,通过维度表来达到分析事实的目的,维度表中的条目用来描述事实表中的数据,记录事实表中的事实记录的维度特性。例如:分析产品销售情况,可以选择按产品类别或销售时间来分析,因此,可以首先创建产品维度表以及时间维度表,然后将产品维度表以及时间维度表分别聚合到一个表中得到事实表,事实表可以包括产品类别、销售时间以及销售总量等等。本实施例中,表组中的事实表与表组中的每个维度表相关联。连接两个数据表的键也常常称为关联键,事实表与维度表通过关联键进行关联。
如图4A所示,表组中包括维度表PART、维度表SUPPLIER、维度表PARTSUPP以及事实表LINEITEM,维度表PART、维度表SUPPLIER、维度表PARTSUPP均为事实表LINEITEM的维度表,其中,维度表PART通过关联键PARTKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表SUPPLIER通过关联键SUPPKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表PART和维度表SUPPLIER均只有一个关联键与事实表相关联,称为一维维度表,维度表PARTSUPP通过关联键PARTKEY以及关联键SUPPKEY与事实表LINEITEM相关联,则维度表PARTSUPP称为二维维度表。需要说明的是,表组中的维度表不局限于包括一维维度表或二维维度表,还可以包括三维维度表、四维维度表等等。
S302,根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
具体实现中,当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。其中,一个维度表的一维行副本分区的区间范围和一维列副本分区的区间范围保持一致。进一步的,可以根据数据量的大小选择行副本分区之间的节点个数,而每个列副本分区的分区区间均作为一个逻辑节点。
例如:如图4A和图5A所示,维度表PART和维度表SUPPLIER为一维维度表,维度表PART的关联键为PARTKEY,维度表SUPPLIER的关联键为SUPPKEY,因此,维度表PART针对关联键PARTKEY进行一维分区得到的维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),维度表SUPPLIER针对关联键SUPPKEY进行一维分区得到的维度表SUPPLIER的一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2)。
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
进一步的,当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
例如:首先,如图4A和图5B所示,维度表PARTSUPP为二维维度表,二维维度表PARTSUPP分别与一维维度表PART以及一维维度表SUPPLIER相关联。由本实施例的上述方法可知,一维维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),一维维度表SUPPLIER一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2),因此可以直接从一维维度表PART和一维维度表SUPPLIER获取得到维度表PARTSUPP中的每个关联键对应的一维列副本分区以及一维行副本分区。或者,如图4B和图5C所示,维度表PARTSUPP为二维维度表,维度表PARTSUPP通过关联键PARTKEY和SUPPKEY与事实表LINEITEM相关联,维度表PARTSUPP并没有与一维维度表相关联。因此,可以针对维度表PARTSUPP的关联键PARTKEY进行一维分区得到一维列副本分区和一维行副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3),针对关联键SUPPKEY进行一维分区得到一维列副本分区和一维行副本分区(S_0,S_1)/(S_1,S_2)。
然后,对一维列副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3)和一维列副本分区(S_0,S_1)/(S_1,S_2)进行组合得到维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),最后,可以选择关联键PARTKEY或关联键SUPPKEY对应的一维行副本分区作为维度表PARTSUPP的一维行副本分区。
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
例如:如图4A和图5D所示,可以首先获取与事实表LINEITEM相关联的维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2);然后将事实表LINEITEM中的ORDERKEY作为分区键,针对分区键ORDERKEY对事实表LINEITEM的列副本空间以及行副本区间进行一维分区得到一维列副本分区(O_0,O_1)/(O_1,O_2)以及一维行副本分区(O_0,O_1)/(O_1,O_2);最后对多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2)与一维列副本分区(O_0,O_1)/(O_1,O_2)进行组合得到如图5C所示的事实表的多维列副本分区,将一维行副本分区(O_0,O_1)/(O_1,O_2)进行再分区得到事实表的一维行副本分区(O_0,O_01)/(O_01,O_02)/(O_02,O_1)/(O_1,O_11)/(O_11,O_12)/(O_12,O_2)。
本发明实施例中,首先确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;然后根据表组中每个数据表的类型,针对每个数据表中的关联键对每个数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。因此针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
请参考图6,图6是本发明第二实施例提出的一种数据表的分区管理方法的示意流程图。本发明实施例中的执行主体可以为数据库集群中的管理节点,如图所示,本发明实施例中的方法包括:
S601,确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表。
具体实现中,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键。在分布式数据库多表管理的业务场景中,数据库保存的表根据保存的内容可以分为事实表和维度表。事实表是多个维度表的一个交点,包含描述业务(如银行事务或产品销售)内特定事件的数据,用于存储至少一个事实记录,每个事实记录对应事实表中的一行。一个事实表可以关联多个维度表,通过维度表来达到分析事实的目的,维度表中的条目用来描述事实表中的数据,记录事实表中的事实记录的维度特性。例如:分析产品销售情况,可以选择按产品类别或销售时间来分析,因此,可以首先创建产品维度表以及时间维度表,然后将产品维度表以及时间维度表分别聚合到一个表中得到事实表,事实表可以包括产品类别、销售时间以及销售总量等等。本实施例中,表组中的事实表与表组中的每个维度表相关联。连接两个数据表的键也常常称为关联键,事实表与维度表通过关联键进行关联。
如图4A所示,表组中包括维度表PART、维度表SUPPLIER、维度表PARTSUPP以及事实表LINEITEM,维度表PART、维度表SUPPLIER、维度表PARTSUPP均为事实表LINEITEM的维度表,其中,维度表PART通过关联键PARTKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表SUPPLIER通过关联键SUPPKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表PART和维度表SUPPLIER均只有一个关联键与事实表相关联,称为一维维度表,维度表PARTSUPP通过关联键PARTKEY以及关联键SUPPKEY与事实表LINEITEM相关联,则维度表PARTSUPP称为二维维度表。需要说明的是,表组中的维度表不局限于包括一维维度表或二维维度表,还可以包括三维维度表、四维维度表等等。
S602,根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
具体实现中,当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。其中,一个维度表的一维行副本分区的区间范围和一维列副本分区的区间范围保持一致。进一步的,可以根据数据量的大小选择行副本分区之间的节点个数,而每个列副本分区的分区区间均作为一个逻辑节点。
例如:如图4A和图5A所示,维度表PART和维度表SUPPLIER为一维维度表,维度表PART的关联键为PARTKEY,维度表SUPPLIER的关联键为SUPPKEY,因此,维度表PART针对关联键PARTKEY进行一维分区得到的维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),维度表SUPPLIER针对关联键SUPPKEY进行一维分区得到的维度表SUPPLIER的一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2)。
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
进一步的,当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
例如:首先,如图4A和图5B所示,维度表PARTSUPP为二维维度表,二维维度表PARTSUPP分别与一维维度表PART以及一维维度表SUPPLIER相关联。由本实施例的上述方法可知,一维维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),一维维度表SUPPLIER一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2),因此可以直接从一维维度表PART和一维维度表SUPPLIER获取得到每个关联键对应的一维列副本分区以及一维行副本分区。或者,如图4B和图5C所示,维度表PARTSUPP为二维维度表,维度表PARTSUPP通过关联键PARTKEY和SUPPKEY与事实表LINEITEM相关联,维度表PARTSUPP并没有与一维维度表相关联,因此,可以针对维度表PARTSUPP的关联键PARTKEY进行一维分区得到一维列副本分区和一维行副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3),针对关联键SUPPKEY进行一维分区得到一维列副本分区和一维行副本分区(S_0,S_1)/(S_1,S_2)。
然后,对一维列副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3)和一维列副本分区(S_0,S_1)/(S_1,S_2)进行组合得到维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),最后,可以选择关联键PARTKEY或关联键SUPPKEY对应的一维行副本分区作为维度表PARTSUPP的一维行副本分区。
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
例如:如图4A和图5D所示,可以首先获取与事实表LINEITEM相关联的维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2);然后将事实表LINEITEM中的ORDERKEY作为分区键,针对分区键ORDERKEY对事实表LINEITEM的列副本空间以及行副本区间进行一维分区得到一维列副本分区(O_0,O_1)/(O_1,O_2)以及一维行副本分区(O_0,O_1)/(O_1,O_2);最后对多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2)与一维列副本分区(O_0,O_1)/(O_1,O_2)进行组合得到如图5C所示的事实表的多维列副本分区,将一维行副本分区(O_0,O_1)/(O_1,O_2)进行再分区得到事实表的一维行副本分区(O_0,O_01)/(O_01,O_02)/(O_02,O_1)/(O_1,O_11)/(O_11,O_12)/(O_12,O_2)。
S603,根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列。
具体实现中,当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。进一步的,可以将所述一维维度表的一维行副本分区或一维列副本分区中的每一个分区作为同步队列中的一个成员。
例如:如图7A所示,维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),可以创建同步队列(P_0,P_1)、(P_1,P_2)、(P_2,P_3)。
可选的,当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。进一步的,可以将所述多维维度表的多维列副本分区中的每一个分区作为同步队列中的一个成员。
例如:如图7B所示,维度表PARTSUPP的多维列副本分区为(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),可以创建如图10所示的同步队列。
可选的,当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。进一步的,可以将与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区进行组合得到的每个分区作为同步队列中的一个成员。
例如:如图7C所示,与所述事实表相关联的二维维度表PARTSUPP的多维列副本分区为(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),事实表的一维行副本分区为(O_0,O_01)/(O_01,O_02)/(O_02,O_1)/(O_1,O_11)/(O_11,O_12)/(O_12,O_2),组合得到如图7C所示的同步队列。
S604,根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
具体实现中,如图8所示,数据库集群是由一个manager节点和若干个cluster节点构成。其中,cluster节点是master节点(主节点)和slave节点(从节点)的统称,manager节点负责管理系统的表组,对全局路由的变化负责更新和同步。所述主节点包括一维行副本的主节点和一维列副本的主节点,可以通过所述一维行副本的主节点将所述表组发送至所述从节点进行同步。进一步的,通过一维行副本的主节点向从节点发起数据同步请求,在从节点返回应答响应后,将表组中的各数据表分别同步到从节点的行副本空间和列副本空间。
本发明实施例中,首先确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;然后根据表组中每个数据表的类型,针对每个数据表中的关联键对每个数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。因此针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
请参考图8,图8是本发明实施例提出的一种数据表的分区管理装置的结构示意图。如图所示,本发明实施例中的装置包括:
确定模块801,用于确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表。
具体实现中,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键。在分布式数据库多表管理的业务场景中,数据库保存的表根据保存的内容可以分为事实表和维度表。事实表是多个维度表的一个交点,包含描述业务(如银行事务或产品销售)内特定事件的数据,用于存储至少一个事实记录,每个事实记录对应事实表中的一行。一个事实表可以关联多个维度表,通过维度表来达到分析事实的目的,维度表中的条目用来描述事实表中的数据,记录事实表中的事实记录的维度特性。例如:分析产品销售情况,可以选择按产品类别或销售时间来分析,因此,可以首先创建产品维度表以及时间维度表,然后将产品维度表以及时间维度表分别聚合到一个表中得到事实表,事实表可以包括产品类别、销售时间以及销售总量等等。本实施例中,表组中的事实表与表组中的每个维度表相关联。连接两个数据表的键也常常称为关联键,事实表与维度表通过关联键进行关联。
如图4A所示,表组中包括维度表PART、维度表SUPPLIER、维度表PARTSUPP以及事实表LINEITEM,维度表PART、维度表SUPPLIER、维度表PARTSUPP均为事实表LINEITEM的维度表,其中,维度表PART通过关联键PARTKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表SUPPLIER通过关联键SUPPKEY与维度表PARTSUPP、事实表LINEITEM相关联,维度表PART和维度表SUPPLIER均只有一个关联键与事实表相关联,称为一维维度表,维度表PARTSUPP通过关联键PARTKEY以及关联键SUPPKEY与事实表LINEITEM相关联,则维度表PARTSUPP称为二维维度表。需要说明的是,表组中的维度表不局限于包括一维维度表或二维维度表,还可以包括三维维度表、四维维度表等等。
分区模块802,用于根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
具体实现中,当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。其中,一个维度表的一维行副本分区的区间范围和一维列副本分区的区间范围保持一致。进一步的,可以根据数据量的大小选择行副本分区之间的节点个数,而每个列副本分区的分区区间均作为一个逻辑节点。
例如:如图4A和图5A所示,维度表PART和维度表SUPPLIER为一维维度表,维度表PART的关联键为PARTKEY,维度表SUPPLIER的关联键为SUPPKEY,因此,维度表PART针对关联键PARTKEY进行一维分区得到的维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),维度表SUPPLIER针对关联键SUPPKEY进行一维分区得到的维度表SUPPLIER的一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2)。
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
进一步的,当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
例如:首先,如图4A和图5B所示,维度表PARTSUPP为二维维度表,二维维度表PARTSUPP分别与一维维度表PART以及一维维度表SUPPLIER相关联。由本实施例的上述方法可知,一维维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),一维维度表SUPPLIER一维行副本分区和一维列副本分区均为(S_0,S_1)/(S_1,S_2),因此可以直接从一维维度表PART和一维维度表SUPPLIER获取得到每个关联键对应的一维列副本分区以及一维行副本分区。或者,如图4B和图5C所示,维度表PARTSUPP为二维维度表,维度表PARTSUPP通过关联键PARTKEY和SUPPKEY与事实表LINEITEM相关联,维度表PARTSUPP并没有与一维维度表相关联。因此,可以针对维度表PARTSUPP的关联键PARTKEY进行一维分区得到一维列副本分区和一维行副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3),针对关联键SUPPKEY进行一维分区得到一维列副本分区和一维行副本分区(S_0,S_1)/(S_1,S_2)。
然后,对一维列副本分区(P_0,P_1)/(P_1,P_2)/(P_2,P_3)和一维列副本分区(S_0,S_1)/(S_1,S_2)进行组合得到维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),最后,可以选择关联键PARTKEY或关联键SUPPKEY对应的一维行副本分区作为维度表PARTSUPP的一维行副本分区。
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
例如:如图4A和图5D所示,可以首先获取与事实表LINEITEM相关联的维度表PARTSUPP的多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2);然后将事实表LINEITEM中的ORDERKEY作为分区键,针对分区键ORDERKEY对事实表LINEITEM的列副本空间以及行副本区间进行一维分区得到一维列副本分区(O_0,O_1)/(O_1,O_2)以及一维行副本分区(O_0,O_1)/(O_1,O_2);最后对多维列副本分区(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2)与一维列副本分区(O_0,O_1)/(O_1,O_2)进行组合得到如图5C所示的事实表的多维列副本分区,将一维行副本分区(O_0,O_1)/(O_1,O_2)进行再分区得到事实表的一维行副本分区(O_0,O_01)/(O_01,O_02)/(O_02,O_1)/(O_1,O_11)/(O_11,O_12)/(O_12,O_2)。
可选的,如图8所示,装置还可以进一步包括:
创建模块803,用于根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列。
具体实现中,当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。进一步的,可以将所述一维维度表的一维行副本分区或一维列副本分区中的每一个分区作为同步队列中的一个成员。
例如:如图7A所示,维度表PART的一维行副本分区和一维列副本分区均为(P_0,P_1)/(P_1,P_2)/(P_2,P_3),可以创建同步队列(P_0,P_1)、(P_1,P_2)、(P_2,P_3)。
可选的,当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。进一步的,可以将所述多维维度表的多维列副本分区中的每一个分区作为同步队列中的一个成员。
例如:如图7B所示,维度表PARTSUPP的多维列副本分区为(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),可以创建如图10所示的同步队列。
可选的,当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。进一步的,可以将与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区进行组合得到的每个分区作为同步队列中的一个成员。
例如:如图7C所示,与所述事实表相关联的二维维度表PARTSUPP的多维列副本分区为(P_0,P_1)(S_0,S_1)/(P_0,P_1)(S_1,S_2)/(P_1,P_2)(S_0,S_1)/(P_1,P_2)(S_1,S_2)/(P_2,P_3)(S_0,S_1)/(P_2,P_3)(S_1,S_2),事实表的一维行副本分区为(O_0,O_01)/(O_01,O_02)/(O_02,O_1)/(O_1,O_11)/(O_11,O_12)/(O_12,O_2),组合得到如图7C所示的同步队列。
同步模块804,用于根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
具体实现中,如图9所示,数据库集群是由一个manager节点和若干个cluster节点构成。其中,cluster节点是master节点(主节点)和slave节点(从节点)的统称,manager节点负责管理系统的表组,对全局路由的变化负责更新和同步。所述主节点包括一维行副本的主节点和一维列副本的主节点,可以通过所述一维行副本的主节点将所述表组发送至所述从节点进行同步。进一步的,通过一维行副本的主节点向从节点发起数据同步请求,在从节点返回应答响应后,将表组中的各数据表分别同步到从节点的行副本空间和列副本空间。
本发明实施例中,首先确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;然后根据表组中每个数据表的类型,针对每个数据表中的关联键对每个数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。因此针对不同类型以及不同维度的数据表采用不同的分区管理方法,从而在一个系统里高效的实现OLTP和OLAP的数据处理机制,节省了资源消耗。
图10是本发明实施例提出的一种数据表的分区管理装置的结构示意图。如图所示,该装置可以包括:至少一个处理器1001,例如CPU,至少一个接收器1003,至少一个存储器1004,至少一个发送器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,本发明实施例中装置的接收器1003和发送器1005可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他节点设备进行信令或数据的通信。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1004可选的还可以是至少一个位于远离前述处理器1001的存储装置。存储器1004中存储一组程序代码,且处理器1001用于调用存储器中存储的程序代码,用于使所述装置执行上述实现方式中的方法。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例所提供的内容下载方法及相关设备、系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (21)
1.一种数据表的分区管理方法,其特征在于,表组中包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,所述方法包括:
确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;
根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
2.如权利要求1所述的方法,其特征在于,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。
3.如权利要求2所述的方法,其特征在于,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;
将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
4.如权利要求2或3所述的方法,其特征在于,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区包括:
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;
从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;
根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;
对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
5.如权利要求3所述的方法,其特征在于,所述获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区包括:
当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;
当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
6.如权利要求1所述的方法,其特征在于,所述根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区之后,还包括:
根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列;
根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
7.如权利要求6所述的方法,其特征在于,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。
8.如权利要求6所述的方法,其特征在于,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。
9.如权利要求6所述的方法,其特征在于,所述根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列包括:
当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。
10.如权利要求6~9任意一项所述的方法,其特征在于,所述主节点包括一维行副本的主节点,所述根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上包括:
通过所述一维行副本的主节点将所述表组中的各数据表发送至所述从节点进行同步。
11.一种数据表的分区管理装置,其特征在于,表组中包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,所述装置包括:
确定模块,用于确定所述表组中每个数据表的类型以及关联键,所述数据表的类型包括一维维度表、多维维度表或事实表;
分区模块,用于根据所述表组中每个所述数据表的类型,针对每个所述数据表中的关联键对每个所述数据表的行副本空间进行一维分区以及列副本空间进行一维或多维分区。
12.如权利要求11所述的装置,其特征在于,所述分区模块具体用于:
当所述数据表为一维维度表时,针对所述一维维度表的单个关联键分别对所述一维维度表的列副本空间以及行副本空间进行一维分区得到所述一维维度表的一维列副本分区以及一维行副本分区。
13.如权利要求12所述的装置,其特征在于,所述分区模块具体用于:
当所述数据表为多维维度表时,获取所述多维维度表的多个关联键中的每个关联键分别对应的一维列副本分区以及一维行副本分区;
将所述多个关联键对应的多个一维列副本分区进行组合得到所述多维维度表的多维列副本分区,并从所述多个关联键中选择一个关联键对应的一维行副本分区作为所述多维维度表的一维行副本分区。
14.如权利要求12或13所述的装置,其特征在于,所述分区模块具体用于:
当所述数据表为事实表时,获取与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区;
从所述事实表中选择一个除所述关联键之外的其他字段作为分区键,并针对所述分区键对所述事实表的列副本空间以及行副本区间进行一维分区得到一维列副本分区以及一维行副本分区;
根据所述分区键对应的一维列副本分区以及所述与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,组合得到所述事实表的多维列副本分区;
对所述分区键对应的一维行副本分区进行一维分区得到所述事实表的一维行副本分区。
15.如权利要求13所述的装置,其特征在于,所述分区模块具体用于:
当所述表组中存在与所述多维维度表相关联的一维维度表时,获取每个所述相关联的一维维度表中的单个关联键对应的一维列副本分区以及一维行副本分区;
当所述表组中不存在与所述多维维度表相关联的一维维度表时,针对所述多维维度表的多个关联键中的每个关联键分别对所述多维维度表的列副本空间以及行副本空间进行一维分区得到所述每个关联键对应的一维列副本分区以及一维行副本分区。
16.如权利要求11所述的装置,其特征在于,所述装置还包括:
创建模块,用于根据得到的所述数据表的一维行副本分区,或得到的所述数据表的一维或多维列副本分区,创建同步队列;
同步模块,用于根据所述同步队列,将主节点上的所述表组中的各数据表同步到从节点上。
17.如权利要求16所述的装置,其特征在于,所述创建模块具体用于:
当所述数据表为一维维度表时,根据所述一维维度表的一维行副本分区或一维列副本分区,创建一维同步队列。
18.如权利要求16所述的装置,其特征在于,所述创建模块具体用于:
当所述数据表为多维维度表时,根据所述多维维度表的多维列副本分区创建多维同步队列。
19.如权利要求16所述的装置,其特征在于,所述创建模块具体用于:
当所述数据表为事实表时,根据与所述事实表相关联的一维维度表的一维列副本分区和/或多维维度表的多维列副本分区,以及所述事实表的一维行副本分区,创建多维同步队列。
20.如权利要求16~19任意一项所述的装置,其特征在于,所述主节点包括一维行副本的主节点,所述同步模块具体用于:
通过所述一维行副本的主节点将所述表组中的各数据表发送至所述从节点进行同步。
21.一种数据表的分区管理装置,其特征在于,表组包括一个事实表和至少一个维度表,所述事实表不是所述表组中任一数据表的维度表,每个所述维度表为所述事实表相关联的维度表,所述每个维度表与所述事实表相关联的字段作为所述事实表与所述每个维度表之间的关联键,所述装置包括网络接口、存储器以及处理器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于使所述装置执行如权利要求1-10中所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/082513 WO2016206100A1 (zh) | 2015-06-26 | 2015-06-26 | 一种数据表的分区管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106716400A CN106716400A (zh) | 2017-05-24 |
CN106716400B true CN106716400B (zh) | 2019-09-27 |
Family
ID=57584634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580001180.8A Active CN106716400B (zh) | 2015-06-26 | 2015-06-26 | 一种数据表的分区管理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11226986B2 (zh) |
CN (1) | CN106716400B (zh) |
WO (1) | WO2016206100A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491294B (zh) * | 2018-03-15 | 2022-11-25 | 中国银行股份有限公司 | 一种数据库备份方法、装置及系统 |
US11016969B1 (en) * | 2020-11-25 | 2021-05-25 | Coupang Corp. | Systems and methods for managing a highly available distributed hybrid transactional and analytical database |
CN112905596B (zh) * | 2021-03-05 | 2024-02-02 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN115292360A (zh) * | 2022-09-29 | 2022-11-04 | 北京迪力科技有限责任公司 | 一种副本的数据分区方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931390B1 (en) * | 2001-02-27 | 2005-08-16 | Oracle International Corporation | Method and mechanism for database partitioning |
US7035851B1 (en) * | 2001-12-07 | 2006-04-25 | Ncr Corp. | Reorganization of database records using partition merging |
EP1716505B1 (en) | 2004-02-21 | 2018-01-10 | Microsoft Technology Licensing, LLC | Ultra-shared-nothing parallel database |
US8782075B2 (en) | 2007-05-08 | 2014-07-15 | Paraccel Llc | Query handling in databases with replicated data |
US20110157194A1 (en) * | 2009-12-31 | 2011-06-30 | Omri Eisenbach | System, data structure, and method for processing multi-dimensional video data |
GB2480599A (en) | 2010-05-17 | 2011-11-30 | Tech Universit T Muenchen | Hybrid OLTP and OLAP database |
WO2012072879A1 (en) * | 2010-11-30 | 2012-06-07 | Nokia Corporation | Method and apparatus for updating a partitioned index |
US8874505B2 (en) | 2011-01-11 | 2014-10-28 | Hitachi, Ltd. | Data replication and failure recovery method for distributed key-value store |
WO2012119442A1 (zh) * | 2011-09-06 | 2012-09-13 | 华为技术有限公司 | 一种消息发送方法和装置 |
CN103440245A (zh) * | 2013-07-15 | 2013-12-11 | 西北工业大学 | 数据库系统的行列混合存储方法 |
CN103942342B (zh) * | 2014-05-12 | 2017-02-01 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
WO2016183539A1 (en) * | 2015-05-14 | 2016-11-17 | Walleye Software, LLC | Data partitioning and ordering |
-
2015
- 2015-06-26 CN CN201580001180.8A patent/CN106716400B/zh active Active
- 2015-06-26 WO PCT/CN2015/082513 patent/WO2016206100A1/zh active Application Filing
-
2017
- 2017-12-25 US US15/853,952 patent/US11226986B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN106716400A (zh) | 2017-05-24 |
US20180121532A1 (en) | 2018-05-03 |
US11226986B2 (en) | 2022-01-18 |
WO2016206100A1 (zh) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102307371B1 (ko) | 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 | |
US11580070B2 (en) | Utilizing metadata to prune a data set | |
US10915528B2 (en) | Pluggable storage system for parallel query engines | |
US9037677B2 (en) | Update protocol for client-side routing information | |
US9081837B2 (en) | Scoped database connections | |
US9767149B2 (en) | Joining data across a parallel database and a distributed processing system | |
JP6697392B2 (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
JP7263297B2 (ja) | ハイブリッドクラウド弾性スケーリングおよび高性能データ仮想化のためのリアルタイムクロスシステムデータベースレプリケーション | |
CN108351900A (zh) | 用于分片的关系数据库组织 | |
US10929361B2 (en) | Rule-based data source selection | |
Mazumder | Big data tools and platforms | |
CN106716400B (zh) | 一种数据表的分区管理方法及装置 | |
US20160162611A1 (en) | Modeling and simulation of infrastructure architecture for big data | |
US20160179836A1 (en) | Method for updating data table of keyvalue database and apparatus for updating table data | |
US20190361999A1 (en) | Data analysis over the combination of relational and big data | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
US20140229429A1 (en) | Database management delete efficiency | |
US8260761B2 (en) | Detecting performance degrading design and algorithm issues in database applications | |
US10860584B2 (en) | Method and system for performing inner-joins on a sharded data set | |
US20230081067A1 (en) | System and method for query acceleration for use with data analytics environments | |
US11960488B2 (en) | Join queries in data virtualization-based architecture | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
CN113326335A (zh) | 数据存储系统、方法、装置、电子设备及计算机存储介质 | |
US11561974B2 (en) | Cross-datasource querying using composite shapes | |
CN107169098A (zh) | 数据搬运方法、数据搬运装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |