CN108027835A - 用于管理主数据库和副本数据库的存储的装置和方法 - Google Patents

用于管理主数据库和副本数据库的存储的装置和方法 Download PDF

Info

Publication number
CN108027835A
CN108027835A CN201680054660.5A CN201680054660A CN108027835A CN 108027835 A CN108027835 A CN 108027835A CN 201680054660 A CN201680054660 A CN 201680054660A CN 108027835 A CN108027835 A CN 108027835A
Authority
CN
China
Prior art keywords
row
storage
database
data
storage format
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.)
Granted
Application number
CN201680054660.5A
Other languages
English (en)
Other versions
CN108027835B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN108027835A publication Critical patent/CN108027835A/zh
Application granted granted Critical
Publication of CN108027835B publication Critical patent/CN108027835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

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

Abstract

提供了一种系统和方法,用于在数据库管理复制(database managed replication,DMR)系统中为主数据库(110)及其副本数据库(120)使用不同的存储格式,使得这两种格式的优点能够与适当的设计复杂性和实施方式相结合。数据按行序列排列,且以第一存储格式存储到所述主数据库中(110)。所述按行序列排列的数据也以第二存储格式存储到所述副本数据库中(120)。所述行序列根据所述第一存储格式或所述第二存储格式确定。所述第一存储格式为行存储(row store,RS),所述第二存储格式为列存储(column store,CS),反之亦然。确定所述行序列以提高CS的压缩效率。

Description

用于管理主数据库和副本数据库的存储的装置和方法
相关申请的交叉引用
本申请要求于2015年10月1日递交的发明名称为“用于管理主数据库和副本数据库的存储的装置和方法”,申请序列号为14/872,811的美国非临时专利申请的优先权,该在先申请的内容以引入的方式并入本申请。
技术领域
本发明涉及数据库处理,且在特定实施例中涉及使用不同存储格式管理主数据库和副本数据库。
背景技术
数据库服务器通过数据库管理复制(database managed replication,简称DMR)提供数据冗余。在DMR中,主数据库(称为主)被复制到一个或多个副本数据库(称为副本),作为主数据库的备份数据库。数据库复制提供了数据冗余。主数据库及其副本数据库之间的同步由数据库管理系统(database management system,简称DBMS)执行。DMR提供高效的数据复制,其中,物理更改通过物理日志传输,也称日志传送,从主数据库直接传播到副本数据库。副本数据库可以将日志直接应用到物理存储。DMR还支持快速故障转移和健壮的遵从ACID(原子性、一致性、隔离性和持久性)的冗余。通过日志回放,副本数据库保留的数据非常接近主数据库中的最新数据。这比基于磁盘的解决方案实现了更快的故障转移。日志回放协议符合ACID。为了利用物理日志,DMR主数据库和副本数据库使用相同的存储格式,如行存储(row store,简称RS)格式或列存储(column store,简称CS)格式。基于RS格式的存储适用于点式查询,而CS格式适用于分析型复杂查询。由于许多工作负载都与点查询和分析型查询混合在一起,所以选择这两种格式之一可能具有挑战性。另一方面,针对主数据库和副本数据库同时使用这两种格式增加了存储成本。因此需要这样一种方案,该方案可以利用这两种格式的优点来存储主数据库和副本数据库,而不会增加存储成本,例如,而不是同时使用两种格式来存储主数据库和副本数据库。
发明内容
根据一实施例,在数据库系统的计算节点处实现一种用于管理主数据库和副本数据库的存储的方法。所述方法包括:将按行序列排列的数据以第一存储格式存储到主数据库;将所述按行序列排列的数据以第二存储格式存储到副本数据库。所述行序列根据所述第一存储格式和所述第二存储格式之一确定。
根据另一实施例,在数据库系统的计算节点处实现一种用于管理主数据库和副本数据库的存储的方法。所述方法包括:将数据表的多个行中的多个列压缩成用于列存储(column store,简称CS)的压缩单元(compression unit,简称CU)。所述行按照适合所述CS的顺序排序。所述方法还包括:将所述CU的行插入用于行存储(row store,简称RS)的堆文件中。所述行按照所述CS的顺序在所述RS中排序。
根据再一实施例,用于管理主数据库和副本数据库的存储的网络组件包括至少一个处理器和用于存储供所述至少一个处理器执行的程序的非瞬时性计算机可读存储介质。所述程序包括指令,用于:将按行序列排列的数据以第一存储格式存储到主数据库;将所述按行序列排列的数据以第二存储格式存储到副本数据库。所述行序列根据所述第一存储格式和所述第二存储格式之一确定。
上述宽泛地概括了本发明实施例的特征,以便能够更好理解以下本发明的详细描述。下面将对本发明实施例的其它特征和优势进行说明,其也构成了本发明权利要求的主题。本领域的技术人员应当理解,所公开的概念和特定实施例易被用作修改或设计其它实现与本发明相同的目的的结构或过程的基础。本领域的技术人员还应当意识到,这种等同构造不脱离所附权利要求书所阐述的本发明的精神和范围。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1A-1C示出了数据库复制架构的示例;
图2示出了一种具有主数据库和副本数据库的无共享(shared nothing,简称SN)数据库集群的示例;
图3示出了一种堆文件格式的实施例;
图4示出了一种序列图的实施例;
图5示出了一种使用不同存储格式管理主数据库和副本数据库的方法的实施例流程图;
图6为一种能够用于执行不同实施例的处理系统图。
除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
具体实施方式
下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所讨论的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。
本文提供了用于针对DMR系统中的主数据库(或简称主)及其副本数据库使用不同存储格式的系统和方法实施例,使得这两种格式的优点能够与适当的设计复杂性和实施方式相结合。例如,主数据库和副本数据库能分别为RS格式和CS格式,或者分别为CS格式和RS格式。使用此方案的数据库服务器能够支持混合查询工作负载,以获得更好的性能。例如,使用更合适的存储格式能够使得查询跨越多个处理节点,从而降低处理成本。例如,因为已知CS格式具有比RS格式更好的存储效率,所以此方案还提高了存储效率。所述实施例包括使主数据库和副本数据库之间能够同步的设计和算法。虽然所述实施例讨论了CS和RS存储格式,但是此处概念能够扩展到堆、具有索引的堆、覆盖索引或其它格式。
图1A-1C示出了数据库复制架构的示例。图1A示出了非级联复制架构101,其中,主数据库110被独立地或直接地复制为一个或多个副本数据库120。图1B示出了级联复制架构102,其中,主数据库110被复制为第一主数据库120,而第一主数据库120又被复制为第二主数据库120,以此类推。图1C示出了这两种架构的逻辑视图。这两种架构均能够表示为主数据库110和一个或多个副本数据库120的配对之间的映射(复制),不管是直接以非级联方式还是通过副本数据库120的级联进行映射。主数据库和副本数据库各自持有数据库的副本。
图2示出了具有主数据库210和副本数据库210对的无共享(shared nothing,简称SN)数据库集群200的示例。所述SN数据库集群200通过对每个参与的处理节点212应用以上任何复制架构并使用分布式查询处理来处理。节点212是具有CPU和存储器的处理节点,如数据库服务器。每个主数据库210和副本数据库210均由对应节点212处理。在本示例中,所述集群200包括第一对主数据库1和副本数据库1以及第二对主数据库2和副本数据库2,且每对均由一个处理节点212处理。所述处理节点212能通过交换机202或网络连接。跨节点和基于成本的查询规划能够在查询优化程序或数据库引擎中实现。查询优化程序可以是数据库引擎的一部分,是用于管理数据库数据的程序,例如,包括执行查询数据、写入数据、复制数据和/或其它功能。数据统计能够由每个主数据库和副本数据库的节点212收集和保存。每个主数据库的数据统计格式都不同于其副本数据库的数据统计格式。因此,每个副本数据库的节点212也将副本数据库的数据统计报告给副本数据库对应主数据库的节点212。每个主数据库的数据统计也被复制到其副本数据库。因此,当主数据库发生故障转移时,其副本数据库已在上次复制期间收集了此主数据库的统计,反之亦然。
能够在所述SN数据库集群200中处理的示例查询如下:
SELECT T2.v4,COUNT(*)FROM T1,T2
ON T1.v1=T2.v1WHERE T1.v2=136and T2.v3>27
GROUP BY T2.v4;
传统意义上,针对查询执行的规划使用如下的RS格式或CS格式。例如,行存储(rowstore,简称RS)格式的的规划包括:
根据本发明一实施例,不针对主数据库和副本数据库同时使用RS和CS格式来生成规划,如下所示:
SN集群分布查询处理支持跨节点重分配迭代器功能,将数据中继从一个处理节点212(或数据库210)发送到另一节点。重分配迭代器需要将数据从副本数据库(或主数据库)发送到相应的主数据库(或副本数据库)。这能够在SN集群数据库200中得到支持。
能够从主数据库将更改同步传播到相应的副本数据库。现有的RS复制技术能用来处理由数据定义语言(data definition language,简称DDL)、数据控制语言(datacontrol language,简称DCL)和至少一些数据操作语言(data manipulation language,简称DML)造成的目录表更改,因为RS和CS均能使用行格式保存并协调目录数据。使用RS复制来寻址的数据更改涉及一边的RS格式(如在主数据库或副本数据库)和另一边的CS格式(如在副本数据库或主数据库)。这些更改可能包括INSERT操作和DELETE操作,而UPDATE操作能从这两个操作中推导出来。
根据一实施例,为了使得一方使用RS格式、另一方使用CS格式的主数据库和副本数据库之间的更改同步,通过序列保持RS行和CS行对齐。序列是标识一行的唯一编号,且每下一行增加1。序列号不需要全局唯一。只要在表格或数据库的一部分中序列唯一就足够,例如表格和数据库的分区中序列唯一。在INSERT时刻分配和固定序列。DELETE操作不会影响或更改行的序列号。使用序列方法,CS和RS不需要额外的密钥或存储来映射它们之间的每一行。标识行的相同序列以两种格式保存。
在一实施例中,RS格式包括堆页面和附属索引结构,其中,所述附属索引结构包括用于堆页面的一组指针。堆页面是一个文件,例如是长度固定且包含行序列(称为堆记录)的文件。堆页面中第一行的序列号记录在堆页面标题中,如图3所示。在每个堆页面和附属索引结构中使用第一行的序列能够检索堆页面中的任一行。附属索引结构可以为B+树、哈希索引或任何其它合适的索引类型,其中,索引中的每个条目指向一个堆页面或一组堆页面。
附属索引结构被用作序列图来定位堆页面标题中的序列号。这加快了通过行序列号对行(堆页面中的行)的定位。当使用堆页面的起始行序列号(使用附属索引结构)检索堆页面时,能够检索到同一堆页面中的任何后续行(堆记录),例如,根据行在页面中的顺序进行隐式地检索。例如,对于序列号为3456的页面,第一行为3456,第二行为3457,第三行为3458,依此类推。序列图(附属索引结构)能够使用几个字节来记录每个堆页面的起始行序列号。图4示出了一种序列图的实施例,并且示出了将行插入到表格时序列图的大小如何增长。所述序列图用于定位具有起始行序列号的堆页面。最初,所述图设置为初始级别(级别0)。为第一组预定数量的堆页面,如第一个2000堆页面,添加第一个图页面或条目(级0–页0)。所述图页面或条目包括组中第一个堆页面的起始行序列号以及用于定位堆页面的指针。例如,所述图页面能使用大约4个字节来记录起始行序列号。当添加下一个第二组2000堆页面中的下一个堆页面时,通过添加指示第一级别的图页面或条目(级1–页0)来将该图升级到第一级别(级别1)。另外,在该图中添加与下一组中添加的下一堆页面相对应的新的图页面或条目(级0–页1)。该添加的图页面或条目包括该第二组2000堆页面中的第一堆页面的起始行序列号和用于定位相应堆页面的指针。该图能够通过为每个下一组2000堆页面添加类似的更多0级页面(级0–页2,级0–页3……)而增长,直到达到每个级别允许的预定最大组数,例如,每个级别1000组(0到999组)。这样,级别1能容纳大约1000×2000堆页面。级1–页0的图页面或条目包含指向该图中所有0级页面的指针。例如,级1–页0的图页面能使用大约8个字节来记录每个0级页面的起始行序列号。
当超过级别1的最大堆页面数量添加下一堆页面时,通过添加指示下一级别的图页面或条目(级2、页0)将图升级到下一级别(级别2)。下一图页面或条目(级1、页1)也被添加到下一添加的堆页面。该图页面或条目包括超过1000×2000堆页面的组中的第一个堆页面的起始行序列号和用于定位堆页面的指针。级2–页0的图页面包含指向图中所有0级和1级页面的指针。遵循相同的逻辑,图的页面和级别能够继续增加,从而为更多插入行容纳更多堆页面。
在一实施例中,CS格式包括一系列压缩单元(compression unit,简称CU),每个压缩单元存储固定数量(如100,000)的值或表格条目,例如,该数量对应于数据表中的列数。每个CU具有在RS中保留的CU描述符,例如作为元数据,并且能够共享RS中相同的事务保护。例如,若RS使用多版本并发控制(multi-version concurrency control,简称MVCC),则将MVCC应用于所述CU描述符。或者,若RS是基于锁的,则所述存储的CU描述符是基于锁的。所述CU描述符包括指向其CU存储的PointerToCU字段。所述CU描述符可以包括用于标记已删除行的DeletionBitmap字段,其中,每个位代表CU中的一行。所述DeletionBitmap字段可以为游程编码(run-length encoding,RLE)压缩的。所述CU描述符还可以包括指示CU中的行数的NumberOfRows字段。该值在创建CU时就固定了。
为了使得CS格式的压缩高效(例如,更好的压缩比),CS格式的行排序可以具有比RS格式的行排序更高的优先级。因此,将RS行进行排序以匹配CS行的排序。为了保持两种格式的序列对齐,应注意INSERT操作和DELETE操作不会引入两种格式间的序列错位。
在一示例中,主数据库以RS存储,且副本数据库以CS存储。INSERT操作包括插入部分和扫描部分。插入部分的功能是插入行,扫描部分的功能是生成行。一种简单的扫描形式是从逗号分隔值(comma separated value,简称CSV)文件或外表读取。更复杂的扫描形式可能涉及连接多个表。查询处理器能通过在主数据库和副本数据库中均调用查询执行来生成扫描部分。
使用INSERT操作的示例查询如下:
INSERT INTO U SELECT T2.v4,COUNT(*)FROM T1,T2
ON T1.v1=T2.v1 WHERE T1.v2=136and T2.v3>27
GROUP BY T2.v4;
针对查询生成的规划如下:
因此,由查询执行器生成的插入部分如下:
/*主数据库为RS且副本数据库为CS*/
RS Insertion(INPUT:rows in raw format)
1./*首先循环构建CU*/
for(;;)
Compress the inputs into columnar format thus creating a CU;
if(CU.size==0)break;
/*没有当前插入,但可删除/读取。将CU发送到副本数据库。*/
2.Set startSequence=global maintained insertion sequence;
Ship<startSequence,#rows,CU>(referred to as shipment)to replica;
3./*同时,主数据库构建RS,副本数据库写CU*/
Concurrently do:
-In Primary:follows CU’s row ordering,insert into RS.Wait for replicaACK;
-In Replica:receive the shipment and insert into CS.Send ACK;
4./*错误处理*/
If anything fails in the middle,abort the transaction.
5./*主数据库本地提交和后提交*/
When ACK is received,primary commits transaction locally.
global maintained insertion sequence+=#rows;
此外,上面处理的数据表能被锁定,例如,在步骤2之前锁定,且当步骤完成时释放。在另一实现方式中,CS和RS放置在不允许并发插入操作但允许并发读取或删除的关键部分。对于相对较少的插入,锁定时间很短。对于批量插入,RS格式能利用并行插入实现方式来饱和系统资源。因此,不需要并行插入。此插入算法保持序列对齐。
DELETE操作能够类似于INSERT操作来处理。DELETE操作包括删除部分和扫描部分。执行删除查询的扫描部分将会删除序列列表,其中,扫描部分可以跨越主数据库和副本数据库。对于RS格式,在识别合格的记录之后,检查堆页面标题以获得序列号。对于CS,这是通过累加CU描述符的NumberOfRows字段来完成的。
根据RS格式的MVCC规则,行的删除是通过在记录的标题部分中设置一个或多个标志实现,而非真实地从存储中删除该行。在CS中,通过设置CU描述符的DeletionBitmap字段中的相应位来完成该删除操作。若不执行就地更新(覆盖同一存储中目标行的更新),则序列仍然保持不变。当主数据库为CS且副本数据库为RS时,INSERT操作和DELETE操作以类似于上述主数据库为RS和副本数据库为CS时的方式处理。主数据库为CS和副本数据库为RS的情况下,在INSERT期间,主节点首先构建CS,然后将CS发送到副本数据库侧,以便为副本数据库构建与CS序列对齐的RS。
图5示出了一种使用不同存储格式管理主数据库和副本数据库的方法500的实施例流程图。具体地,RS用于主数据库,CS用于副本数据库。所述方法500例如由数据库引擎或DBMS实现,以在主数据库中建立RS,在副本数据库中建立CS。在步骤510中,将数据表中的多个列压缩成适合CS的对应的CU格式。所述列从表中的多个行(例如,连续的行)获得。所述行以适合CS的格式排序,例如,用于提高CS的压缩比或效率。在步骤520中,将CU的相同行插入RS的相应堆页面(或文件)。RS中的行按照插入在CU中的行的相同顺序排序。在步骤530中,将CU插入到CS,其中,所述CS具有指示CU中的第一行的起始序列和压缩行的数量。在步骤540中,将CU描述符添加到CS,其中所述CU描述符具有对应于CU的指针。所述CU描述符可以为RS格式,并指向CS的相应CU且指示行数。重复步骤510到540,直到表中的所有行均被处理并添加到CS和RS。在主数据库中使用CS且在副本数据库中使用RS能够实现一种类似的方法。此时,将CS提交给主数据库之后,可以为副本数据库添加RS。
图6为一种能用于实现包括上述方法的各种实施例的处理系统600的框图。例如,所述处理系统600能为如上所述的DMR或数据库复制架构的一部分。在另一场景中,所述处理系统600能为系统中的计算节点或一组计算节点,例如,数据库服务器。特定设备可以使用所示的所有组件,或所述组件的仅一子集,并且设备之间的集成度可能不同。此外,设备可以包括组件的多个实例,如多个处理单元、处理器、存储器、发射器、接收器等。所述处理系统600可以包括处理单元601,所述处理单元配备一个或多个输入/输出设备,如扬声器、麦克风、鼠标、触摸屏、小键盘、键盘、打印机、显示器等。所述处理单元601可包括中央处理器(central processing unit,简称CPU)610、存储器620、大容量存储设备630、视频适配器640,以及连接到总线的I/O接口660。所述总线可以为任何类型的若干总线架构中的一个或多个,包括内存总线或者内存控制器、外设总线、视频总线等等。
所述CPU 610可包括任何类型的电子数据处理器。所述存储器620可包括任何类型的系统存储器,如静态随机存取存储器(static random access memory,简称SRAM)、动态随机存取存储器(dynamic random access memory,简称DRAM)、同步DRAM(synchronousDRAM,简称SDRAM)、只读存储器(read-only memory,简称ROM)或其组合等。在一实施例中,所述存储器620可包括在开机时使用的ROM,以及在执行程序时使用的存储程序和数据的DRAM。在实施例中,所述存储器620是非瞬时的。所述大容量存储器设备630可包括任意类型的存储设备,用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。所述大容量存储器设备630可包括下列一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。
所述视频适配器640和所述I/O接口660提供接口,以将外部输入和输出设备耦合到所述处理单元。如图所示,输入输出设备的示例包括耦合至所述视频适配器640的显示器690和耦合至所述I/O接口660的鼠标/键盘/打印机670的任意组合。其它设备可以耦合至所述处理单元601,且可以利用额外的或更少的接口卡。例如,串行接口卡(未图示)可用于为打印机提供串行接口。
所述处理单元601还包括一个或多个网络接口650,所述网络接口650可包括以太网电缆等有线链路,和/或到接入节点或者一个或多个网络680的无线链路。所述网络接口650允许所述处理单元601通过所述网络680与远程单元通信。例如,所述网络接口650可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一实施例中,所述处理单元601耦合到局域网或广域网上以用于数据处理以及与远程设备通信,所述远程设备例如其它处理单元、因特网、远程存储设施等。
在一个示例实施例中,用于管理主数据库和副本数据库的存储的处理系统600包括:第一存储模块,用于将按行序列排列的数据以第一存储格式存储到主数据库;第二存储模块,将所述按行序列排列的数据以第二存储格式存储到副本数据库,其中,所述行序列根据所述第一存储格式和所述第二存储格式之一确定。在一些实施例中,所述处理系统600可以包括其它或者附加模块用于执行所述实施例中描述的任一步骤或步骤的组合。
在示例实施例中,用于管理主数据库和副本数据库的存储的所述处理系统600包括:压缩模块,用于将数据表的多个行中的多个列压缩成用于列存储(column store,简称CS)的压缩单元(compression unit,简称CU),其中,所述行以适合CS的顺序排序;插入模块,用于将CU的行插入到用于行存储(row store,简称RS)的堆文件,其中,所述行在RS中按照CS的顺序排序。在一些实施例中,所述处理系统600可以包括其它或者附加模块用于执行所述实施例中描述的任一步骤或步骤的组合。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它改变、替代和更改的示例可以由本领域的技术人员在不脱离本文所公开的精神和范围的情况下确定。

Claims (20)

1.一种在数据库系统的计算节点处用于管理主数据库和副本数据库的存储的方法,其特征在于,所述方法包括:
将按行序列排列的数据以第一存储格式存储到所述主数据库;
将所述按行序列排列的数据以第二存储格式存储到所述副本数据库,其中,所述行序列根据所述第一存储格式和所述第二存储格式之一确定。
2.根据权利要求1所述的方法,其特征在于,所述第一存储格式为行存储(RS),所述第二存储格式为列存储(CS),确定所述行序列以提高CS的压缩效率。
3.根据权利1-2任一项所述的方法,其特征在于,所述将数据存储到所述主数据库包括将所述数据中的多个行组中的每一行组存储到固定长度的堆文件中,所述将数据存储到所述副本数据库包括将每一行组中的固定数量的列存储到具有固定数量条目的相应压缩单元(CU)中。
4.根据权利要求3所述的方法,其特征在于,所述堆文件包括指示所述行组中的第一行的序列号。
5.根据权利要求3所述的方法,其特征在于,存储所述行组的所述堆文件包括或者与指向存储所述行组的所述相应CU的CU描述符相关联。
6.根据权利要求5所述的方法,其特征在于,所述CU描述符包括用于标记已删除行的删除位图字段,其中,每个位代表所述CU中的一行。
7.根据权利要求5所述的方法,其特征在于,所述CU描述符指示所述相应CU中的总行数。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一存储格式为列存储(CS),所述第二存储格式为行存储(RS),确定所述行序列以提高CS的压缩效率。
9.一种在数据库系统的计算节点处用于管理主数据库和副本数据库的存储的方法,其特征在于,所述方法包括:
将数据表的多个行中的多个列压缩成用于列存储(CS)的压缩单元(CU),其中,所述多个行按照适合所述CS的顺序排序;
将所述CU的行插入用于行存储(RS)的堆文件中,其中,所述行按照所述CS的顺序在所述RS中排序。
10.根据权利要求9所述的方法,其特征在于,还包括在所述CS中的所述CU中插入指示所述CU中的第一行的起始序列以及所述CU中的行数。
11.根据权利要求9-10任一项所述的方法,其特征在于,还包括将具有堆文件的CU描述符添加到所述CS,其中,所述CU描述符指向所述CS中的所述CU,并指示所述CU中的行数。
12.根据权利要求9-11任一项所述的方法,其特征在于,还包括重复所述压缩和插入步骤,直到所述数据表中的所有行都以所述CS和所述RS进行了存储。
13.根据权利要求9-12任一项所述的方法,其特征在于,所述CS在所述主数据库维护,所述RS在所述副本数据库维护。
14.根据权利要求9-13任一项所述的方法,其特征在于,所述RS在所述主数据库维护,所述CS在所述副本数据库维护。
15.一种用于管理主数据库和副本数据库的存储的网络组件,其特征在于,所述网络组件包括:
与存储器耦合的至少一个处理器;
非瞬时性计算机可读存储介质,用于存储供所述至少一个处理器执行的程序,其中,所述程序包括指令,用于:
将按行序列排列的数据以第一存储格式存储到所述主数据库;
将所述按行序列排列的数据以第二存储格式存储到所述副本数据库,其中,所述行序列根据所述第一存储格式和所述第二存储格式之一确定。
16.根据权利要求15所述的网络组件,其特征在于,所述第一存储格式为行存储(RS),所述第二存储格式为列存储(CS),确定所述行序列以提高CS的压缩效率。
17.根据权利要求16所述的网络组件,其特征在于,所述将数据存储到所述主数据库的指令包括将所述数据中的多个行组中的每一行组存储到固定长度的相应堆文件的指令,所述将数据存储到所述副本数据库的指令包括将每一行组中的固定数量的列存储到具有固定数量条目的相应压缩单元(CU)的指令。
18.根据权利要求17所述的网络组件,其特征在于,所述堆文件包括指示所述行组中的第一行的序列号。
19.根据权利要求17所述的网络组件,其特征在于,存储所述行组的所述堆文件包括或者与指向存储所述行组的所述相应CU的CU描述符相关联,所述CU描述符包括用于标记已删除行的删除位图字段并指示所述相应CU中的总行数,其中,每个位代表所述CU中的一行。
20.根据权利要求15-19任一项所述的网络组件,其特征在于,所述第一存储格式为列存储(CS),所述第二存储格式为行存储(RS),确定所述行序列以提高CS的压缩效率。
CN201680054660.5A 2015-10-01 2016-09-20 用于管理主数据库和副本数据库的存储的装置和方法 Active CN108027835B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/872,811 2015-10-01
US14/872,811 US11403318B2 (en) 2015-10-01 2015-10-01 Apparatus and method for managing storage of a primary database and a replica database
PCT/CN2016/099478 WO2017054662A1 (en) 2015-10-01 2016-09-20 Apparatus and method for managing storage of primary database and replica database

Publications (2)

Publication Number Publication Date
CN108027835A true CN108027835A (zh) 2018-05-11
CN108027835B CN108027835B (zh) 2021-05-14

Family

ID=58422664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680054660.5A Active CN108027835B (zh) 2015-10-01 2016-09-20 用于管理主数据库和副本数据库的存储的装置和方法

Country Status (6)

Country Link
US (1) US11403318B2 (zh)
EP (2) EP3345107B1 (zh)
CN (1) CN108027835B (zh)
AU (2) AU2016333236A1 (zh)
CA (1) CA3000042C (zh)
WO (1) WO2017054662A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021218280A1 (en) * 2020-04-28 2021-11-04 Huawei Technologies Co., Ltd. Data storage and data retrieval methods and devices
CN112527836B (zh) * 2020-12-08 2022-12-30 航天科技控股集团股份有限公司 一种基于t-box平台的大数据查询方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158852A1 (en) * 2000-08-14 2003-08-21 William Zoltan System and method of synchronizing replicated data
US20080168071A1 (en) * 2007-01-08 2008-07-10 Pernell James Dykes Storing Data in Predicted Formats
US8032491B1 (en) * 2005-04-22 2011-10-04 Symantec Operating Corporation Encapsulating information in a storage format suitable for backup and restore
CN102999519A (zh) * 2011-09-15 2013-03-27 上海盛付通电子商务有限公司 一种数据库的读写方法及系统
CN103177058A (zh) * 2011-12-22 2013-06-26 Sap股份公司 存储为行存储和列存储二者的混合数据库表
CN103440245A (zh) * 2013-07-15 2013-12-11 西北工业大学 数据库系统的行列混合存储方法
US20150074151A1 (en) * 2013-09-11 2015-03-12 Microsoft Corporation Processing datasets with a dbms engine
CN104462169A (zh) * 2013-09-16 2015-03-25 西门子公司 将数据导入到数据库表中的方法和系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884325A (en) * 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US7024414B2 (en) 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
US7953749B2 (en) 2004-05-11 2011-05-31 Oracel International Corporation Providing the timing of the last committed change to a row in a database table
US8706727B2 (en) 2009-06-19 2014-04-22 Sybase, Inc. Data compression for reducing storage requirements in a database system
US8880508B2 (en) * 2010-12-30 2014-11-04 Sap Se Processing database queries using format conversion
US20140114952A1 (en) * 2012-10-23 2014-04-24 Microsoft Corporation Optimizing queries of parallel databases
US9766987B2 (en) * 2013-01-11 2017-09-19 Commvault Systems, Inc. Table level database restore in a data storage system
US9342557B2 (en) * 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US9292564B2 (en) * 2013-09-21 2016-03-22 Oracle International Corporation Mirroring, in memory, data from disk to improve query performance
US9128972B2 (en) 2013-09-21 2015-09-08 Oracle International Corporation Multi-version concurrency control on in-memory snapshot store of oracle in-memory database
US9613082B2 (en) 2013-09-30 2017-04-04 International Business Machines Corporation Database auditing for bulk operations
US9477731B2 (en) * 2013-10-01 2016-10-25 Cloudera, Inc. Background format optimization for enhanced SQL-like queries in Hadoop
US10235377B2 (en) 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases
US9607073B2 (en) * 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US9959306B2 (en) * 2015-06-12 2018-05-01 International Business Machines Corporation Partition-based index management in hadoop-like data stores
US9817882B2 (en) * 2016-03-30 2017-11-14 Sas Institute Inc. Dynamic distributed generation of data representations from highly condensed data

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158852A1 (en) * 2000-08-14 2003-08-21 William Zoltan System and method of synchronizing replicated data
US8032491B1 (en) * 2005-04-22 2011-10-04 Symantec Operating Corporation Encapsulating information in a storage format suitable for backup and restore
US20080168071A1 (en) * 2007-01-08 2008-07-10 Pernell James Dykes Storing Data in Predicted Formats
CN102999519A (zh) * 2011-09-15 2013-03-27 上海盛付通电子商务有限公司 一种数据库的读写方法及系统
CN103177058A (zh) * 2011-12-22 2013-06-26 Sap股份公司 存储为行存储和列存储二者的混合数据库表
CN103440245A (zh) * 2013-07-15 2013-12-11 西北工业大学 数据库系统的行列混合存储方法
US20150074151A1 (en) * 2013-09-11 2015-03-12 Microsoft Corporation Processing datasets with a dbms engine
CN104462169A (zh) * 2013-09-16 2015-03-25 西门子公司 将数据导入到数据库表中的方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANURADHA S. KANADE等: "Choosing right database system: Row or column-store", 《2013 INTERNATIONAL CONFERENCE ON INFORMATION COMMUNICATION AND EMBEDDED SYSTEMS (ICICES)》 *
邢露露: "《混合存储下的MapReduce启发式多表连接优化研究与实现》", 《万方学位论文》 *

Also Published As

Publication number Publication date
EP4057159A1 (en) 2022-09-14
CA3000042C (en) 2022-05-31
AU2016333236A1 (en) 2018-04-26
EP3345107A1 (en) 2018-07-11
AU2020200649B2 (en) 2022-02-10
CA3000042A1 (en) 2017-04-06
AU2020200649A1 (en) 2020-02-20
EP3345107A4 (en) 2018-07-11
EP3345107B1 (en) 2022-05-25
US20170097972A1 (en) 2017-04-06
WO2017054662A1 (en) 2017-04-06
CN108027835B (zh) 2021-05-14
US11403318B2 (en) 2022-08-02

Similar Documents

Publication Publication Date Title
US9589041B2 (en) Client and server integration for replicating data
CN103678556B (zh) 列式数据库处理的方法和处理设备
CN107818115B (zh) 一种处理数据表的方法及装置
US8738568B2 (en) User-defined parallelization in transactional replication of in-memory database
US10657116B2 (en) Create table for exchange
US7734581B2 (en) Vector reads for array updates
US20060224626A1 (en) Versioned file group repository
US20220035786A1 (en) Distributed database management system with dynamically split b-tree indexes
US8380663B2 (en) Data integrity in a database environment through background synchronization
US11868330B2 (en) Method for indexing data in storage engine and related apparatus
CN107025242A (zh) 数据库间数据的复制方法及装置
CN103176988A (zh) 基于SaaS的数据迁移系统
CN108369588B (zh) 数据库级别自动存储管理
WO2022063223A1 (zh) 数据校验方法、装置和系统
CN102890678A (zh) 一种基于格雷编码的分布式数据布局方法及查询方法
WO2020096823A1 (en) Static data masking
AU2020200649B2 (en) Apparatus and method for managing storage of primary database and replica database
US9965535B2 (en) Client-side handling of transient duplicates for row-level replication
CN105723365B (zh) 用于优化索引、主数据库节点和订户数据库节点的方法
US10366067B2 (en) Adaptive index leaf block compression
US20180096007A1 (en) Leveraging sql with user defined aggregation to efficiently merge inverted indexes stored as tables
CN104765748B (zh) 一种将复制表转换为分片表的方法及装置
US20230409601A1 (en) Apparatus and Method for Managing Storage of a Primary Database and a Replica Database
JP2007310845A (ja) データ処理システム
CN117131023B (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