用于为迁移RDBMS推荐存储格式的方法和系统与流程

文档序号:36997237发布日期:2024-02-09 12:39阅读:16来源:国知局
用于为迁移RDBMS推荐存储格式的方法和系统与流程

本文中描述的本发明大体上涉及数据库的存储格式,尤其涉及关系型数据库管理系统(relational database management system,rdbms)的存储优化和工作负载序列优化。


背景技术:

1、关系型数据库管理系统(relational database management system,rdbms或简称rdb)是一种常见的数据库类型,它将数据存储在表中,因此可以与其他存储的数据集进行关联使用。目前企业使用的大多数数据库都是关系型数据库,而不是平面文件或分层数据库。当前大多数it系统和应用都基于关系型dbms。关系型数据库具有处理大量数据和复杂查询的能力。数据通常存储在许多表中,这些表也称为“关系”。

2、这些表分为行(也称为记录)和列(称为字段)。数据库中可能有数百万行。列由一种特定的数据类型组成,例如,名称或值。关系型数据库有两种组织方式:

3、·面向行的方式

4、·面向列的方式(也称为列式或列存储)

5、面向行的数据库是按记录整理数据的数据库,以将与记录相关联的相互紧挨着的所有数据保存在内存中。面向行的数据库是整理数据的传统方式,在快速存储数据方面仍然提供一些关键优势。优化面向行的数据库,以高效读取和写入行。常见的面向行的数据库有postgres和mysql。

6、面向列的数据库是按字段整理数据的数据库,以将与字段相关联的相互紧挨着的所有数据保存在内存中。列式数据库越来越受欢迎,为查询数据提供了性能优势。优化面向列的数据库,以高效读取和计算列。常见的面向列的数据库有redshift、bigquery和snowflake。

7、为了了解基于行的存储和基于列的存储的优缺点,以下面的表1为例:

8、

9、这些数据可以在面向行的数据库(也称为“基于行的存储”)中存储在磁盘上,如下所示逐行存储:

10、 印度 alpha 1200 中国 beta 2500 uk alpha 700 jp alpha 450

11、如果想要添加一条新记录,只需要将该新纪录附加到当前数据的末尾即可。

12、面向行的数据库可以很好地管理对数据库的写入,因此仍然常用于联机事务处理(online transactional processing,oltp)风格的应用。然而,数据库的另一个用例是分析其中的数据。这些联机分析处理(online analytical processing,olap)用例需要一个能够支持即席(ad hoc)数据查询的数据库。这就是面向行的数据库比列存储数据库慢的地方。面向行的数据库在检索一行或一组行时速度很快,但在执行聚合时会将额外的数据(列)加载到内存中,这比只选择要执行聚合的列要慢。另外,面向行的数据库可能需要访问的磁盘通常很多。假设想要从表1数据中获取销售额的总和。为此,需要将所有12条数据(参见基于行的存储格式)加载到内存中,然后取出相关数据进行聚合。这就浪费了计算时间。为了了解被访问的磁盘的数量,假设一个磁盘只能容纳足够用于在每个磁盘中存储三列的数据字节。在面向行的数据库中,上述表的存储格式如下:

13、

14、

15、

16、

17、为了计算所有国家销售额的总和,计算机需要查看所有四个磁盘,并且跨越每个磁盘中的所有三列才能进行此查询。因此,可以看到,虽然向面向行的数据库添加数据既快速又简单,但从中获取数据却需要使用额外的内存和访问多个磁盘。

18、创建数据仓库是为了支持分析数据。这些类型的数据库都经过读取优化。在列存储、列式或面向列的数据库中,数据的存储方式是,一列的每一行都与同一列的其他行紧挨着。再次查看表1中的相同数据集,看看它在面向列的数据库(也称为“基于列的存储”或“列存储”)中的存储方式:

19、 印度 中国 uk jp alpha beta alpha alpha 1200 2500 700 450

20、如果想要添加一条新记录,就必须浏览数据,将每一列插入到它应该在的位置上。

21、如果数据存储在单个磁盘中,这就会面临与面向行的数据库相同的额外内存问题,因为这需要将所有内容加载到内存中。然而,面向列的数据库存储在单独的磁盘中会带来显著的优势。如果将上表放入数据磁盘的四个受限列中,它们的存储方式如下所示:

22、

23、

24、

25、为了计算国家销售额的总和,计算机只需要访问一个磁盘(磁盘3)并对其内部的所有值求和。不需要额外的内存加载,并且访问尽可能少的磁盘。虽然这有点过于简化,但它说明了,通过按列整理数据,需要访问的磁盘会变少,必须保存在内存中的额外数据量也会降到最低。这大大提高了计算的整体速度。面向列的数据库还可以通过其他方式提高性能。此外,如果每条数据的比特数相同,则所有数据都可以进一步压缩,压缩后的大小为数据条数乘以单条数据的比特数。假设有一个包括一百万行的表。大多数列可能只有几百或最多几千个唯一值。压缩可确保节省磁盘空间,而索引可确保更快地查找数据。这就为客户优化了云存储成本。因此,行存储格式与列存储格式可以汇总如下:

26、 属性 行存储 列存储 内存使用率 较高 较低 事务 较快 较慢 分析 较慢(即使建立了索引) 较快

27、从目前的市场趋势来看,云数据库的采用率正在上升。作为这一趋势的一部分,数据库供应商的关键机会领域之一是将本地数据库迁移到云数据库。此外,除了传统的关系型数据库系统之外,还出现了kv存储、文档存储以及时间序列和图形数据库等专用数据库管理系统。这些专用数据库系统针对特定问题域都提供了方案,并且具有特定的用例。这些专用数据库管理系统解决了数据量大、数据源(iot、网络日志等)增多的问题,这些数据源在本质上不一定是事务性的,因此称为大数据源。

28、关系型数据库供应商为适应这种情况,引入了处理这类数据的能力并且适应这些数据的存储需求,以实现高效的数据检索。具有这些能力的数据库系统现在称为多模态数据库系统。多模型数据库的设计目的是针对单一集成后端支持多个数据模型。文档模型、图形模型、关系型模型和键值模型是多模型数据库可能支持的数据模型的示例。此外,多模型数据库使用高度成熟的sql帮助查询不同类型的数据模型。云供应商已经为这类专用和多模态数据库系统提供了支持,作为他们方案的一部分(例如,dbaas)。业务原因是,云数据库系统越来越多地采用云,满足了客户的各种特定需求,特别是他们的数据库迁移和应用迁移需求。

29、数据库迁移并非易事,需要仔细规划。典型的数据库迁移流程包括:

30、模式迁移(schema migration)

31、数据迁移

32、应用迁移

33、图1是从源数据库迁移到目标数据库的过程的示意图。图1还包括以下过程步骤:

34、1.源模式和数据评估

35、数据映射、字段填充不足、要删除的对象/字段、不准确性等。

36、2.迁移设计和定义

37、一次性或分阶段

38、3.迁移方案

39、开发方案

40、4.测试

41、使用真实数据测试迁移设计

42、5.生产

43、6.审计

44、确保迁移的准确性

45、在现有技术中,参见图1,通过以下方法执行模式和数据库迁移:

46、1.源数据库结构到选定的目标数据库结构的模式转换

47、转换机制基于regex或基于语法

48、在基于解析器的方法中,将源结构提取到数据模型中,然后使用该数据模型形成目标数据库句法。

49、2.如果需要,还转换一个或多个应用查询以与选定的目标数据库系统兼容,这是应用迁移的一部分。

50、3.首先执行模式转换/迁移,然后执行应用迁移或工作负载查询转换。

51、在现有模式迁移方案中发现的技术问题至少包括以下几个方面:

52、1.在考虑迁移到云数据库系统时,没有专门可用的推荐方法,因为云数据库系统与源系统不同,具有不同的处理引擎和存储引擎或存储格式(行存储格式与列存储格式)、多模型数据库。

53、2.出于性能考虑,现有方案都没有推荐行存储/列存储或存储与专用数据库系统(例如,多模型)兼容的数据。

54、3.当前的源系统经过多年发展,当前性能可能不适合目标数据库或要在目标上运行的应用查询。

55、4.转换大多是一比一进行,没有考虑查询优化和存储优化。

56、因此,当从源迁移到不同的目标系统时,需要在各个层面提供推荐,特别是在数据的存储层面。


技术实现思路

1、本
技术实现要素:
是为了介绍在从源服务器系统迁移到目标服务器系统时为关系型数据库管理系统(relational database management system,rdbms)推荐存储格式的相关概念。

2、本发明的主要目的是为将关系型数据库管理系统(relational databasemanagement system,rdbms)从源服务器系统迁移到目标服务器系统提供存储格式的推荐。为了实现这个主要目的,分析使用源服务器系统中的rdbms的应用的工作负载查询。此外,还可以分析源对象的数据定义语言(data definitional language,ddl)。通过对工作负载查询或至少一组工作负载查询以及ddls进行分析,当rdbms中的表要从源服务器系统迁移到目标服务器系统时,提供存储格式的推荐,即基于列的存储、列存储或基于行的存储。除了rdbms中的表的存储格式之外,还可以提供数据库的存储模型的额外推荐,例如,多模型rdbms,或者目标rdbms中的纯时间序列模型、键值(kv模型)或者图形模型。本发明公开的方案的许多技术优点之一是,当迁移到目标服务器系统时,可以根据目标服务器系统的能力来提高选择查询的性能。例如,通过在目标中推荐列存储格式,而源中的rdbms表只支持行存储格式,可以提高性能并且可以优化资源使用。此外,在一些情况下,当工作负载查询和ddl中使用的列只包括几个不同值时,通过推荐列存储可以实现高压缩率。

3、在第一种实现方式中,本发明提供了一种为将关系型数据库管理系统(relational database management system,rdbms)从源服务器系统迁移到目标服务器系统推荐存储格式的方法。所述方法包括:从所述源服务器系统的源数据库中提取sql查询。此外,所述方法还包括:解析所述sql查询以识别出与基于列的操作对应的一组查询;确定在所述识别出的一组查询中使用的列数(cn);对于所述多列(cn)中的每一列(c),确定列记录中的至少部分列记录的值是否相同。在确定时,所述方法还包括:为所述目标服务器系统中的所述rdbms推荐列存储格式。

4、在第二种实现方式中,公开了一种用于为将关系型数据库管理系统(relationaldatabase management system,rdbms)从源服务器系统迁移到目标服务器系统推荐存储格式的系统。所述系统包括源服务器系统、目标服务器系统和推荐平台。所述源服务器系统至少包括所述源服务器系统中的rdbms的源数据库,所述目标服务器系统包括与所述目标服务器系统中的rdbms的一个或多个存储格式对应的数据存储,所述推荐平台包括用于与所述源服务器系统的所述源数据库连接的第一接口和用于与所述目标服务器系统连接的第二接口。此外,所述推荐平台还包括sql解析器和推荐引擎。所述sql解析器用于经由所述第一接口从所述源服务器系统的所述源数据库中提取sql查询,解析所述sql查询以识别出与基于列的操作对应的一组查询。所述推荐引擎用于:确定在所述识别出的一组查询中使用的列数(cn);对于所述多列(cn)中的每一列(c),确定列记录中的至少部分列记录的值是否相同;在确定时,为所述目标服务器系统中的所述rdbms推荐列存储格式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1