System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于为迁移RDBMS推荐存储格式的方法和系统技术方案_技高网

用于为迁移RDBMS推荐存储格式的方法和系统技术方案

技术编号:40323967 阅读:5 留言:0更新日期:2024-02-09 14:18
本发明专利技术提供了一种为将关系型数据库管理系统(relational database management system,RDBMS)从源服务器系统迁移到目标服务器系统推荐存储格式的方法。所述方法包括:从所述源服务器系统的源数据库中提取SQL查询(302);解析所述SQL查询以识别与列式操作对应的一组查询(304);确定在所述识别出的一组查询中使用的列数(Cn)(306);对于所述多列(Cn)中的每一列(C),确定列记录中的至少部分列记录的值是否相同(308);在确定时,为所述目标服务器系统中的所述RDBMS推荐列存储格式(310)。

【技术实现步骤摘要】
【国外来华专利技术】

本文中描述的本专利技术大体上涉及数据库的存储格式,尤其涉及关系型数据库管理系统(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、 属性 本文档来自技高网...

【技术保护点】

1.一种为将关系型数据库管理系统(relational database management system,RDBMS)从源服务器系统迁移到目标服务器系统推荐存储格式的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述列(C)的所述列记录中的所述部分列记录包括所述列(C)的所述列记录中的至少70%至80%的列记录。

3.根据权利要求1所述的方法,其特征在于,在所述识别出的一组查询中使用的所述列数(Cn)在实际列数的30%至70%之间。

4.根据权利要求1所述的方法,其特征在于,与所述列式操作对应的所述一组查询包括从所述源数据库中提取的所述SQL查询中的至少50%至70%的查询。

5.根据权利要求1所述的方法,其特征在于,所述方法包括:

6.根据权利要求1所述的方法,其特征在于,所述方法包括:如果所述列(C)的所述列记录中的所述部分列记录少于所述列(C)的所述列记录中的70%至80%的列记录,为所述目标服务器系统中的所述RDBMS推荐行存储格式。

7.根据权利要求1所述的方法,其特征在于,所述方法包括:如果在所述识别出的一组查询中使用的所述列数(Cn)小于实际列数的30%至70%,为所述目标服务器系统中的所述RDBMS推荐行存储格式。

8.根据权利要求1所述的方法,其特征在于,所述列存储格式被推荐给与所述列式操作对应的所述确定的多列(Cn)中的列的列记录。

9.根据权利要求8所述的方法,其特征在于,所述行存储格式推荐被推荐给未在与所述列式操作对应的所述识别出的一组查询中使用的其他列的其他列记录。

10.根据权利要求8或9所述的方法,其特征在于,所述目标服务器系统支持所述RDBMS使用混合存储格式。

11.根据权利要求10所述的方法,其特征在于,所述方法包括:推荐在所述目标服务器系统中重新创建表。

12.根据权利要求8或9所述的方法,其特征在于,所述方法包括:推荐在所述目标服务器系统中拆分表。

13.根据权利要求1所述的方法,其特征在于,所述方法还包括:为所述目标服务器系统中的所述RDBMS推荐多模态存储。

14.根据权利要求13所述的方法,其特征在于,所述多模态存储是时间序列模型或KV模型中的至少一种。

15.一种用于为将关系型数据库管理系统(relational database managementsystem,RDBMS)从源服务器系统迁移到目标服务器系统推荐存储格式的系统,其特征在于,所述系统包括:

16.根据权利要求15所述的系统,其特征在于,所述列(C)的所述列记录中的所述部分列记录包括所述列(C)的所述列记录中的至少70%至80%的列记录。

17.根据权利要求15所述的系统,其特征在于,在所述识别出的一组查询中使用的所述列数(Cn)在实际列数的30%至70%之间。

18.根据权利要求15所述的系统,其特征在于,与所述列式操作对应的所述一组查询包括从所述源数据库中提取的所述SQL查询中的至少50%至70%的查询。

19.根据权利要求15所述的系统,其特征在于,所述推荐引擎用于:

20.根据权利要求15所述的系统,其特征在于,所述推荐引擎用于:如果所述列(C)的所述列记录中的所述部分列记录少于所述列(C)的所述列记录的70%至80%的列记录,为所述目标服务器系统中的所述RDBMS推荐行存储格式。

21.根据权利要求15所述的系统,其特征在于,所述推荐引擎用于:如果在所述识别出的一组查询中使用的所述列数(Cn)小于实际列数的30%至70%,为所述目标服务器系统中的所述RDBMS推荐行存储格式。

22.根据权利要求15所述的系统,其特征在于,所述列存储格式被推荐给与所述列式操作对应的所述确定的多列(Cn)中的列的列记录。

23.根据权利要求22所述的系统,其特征在于,所述行存储格式推荐被推荐给未在与所述列式操作对应的所述识别出的一组查询中使用的其他列的其他列记录。

24.根据权利要求22或23所述的系统,其特征在于,所述目标服务器系统的所述数据存储支持所述RDBMS使用混合存储格式。

25.根据权利要求24所述的系统,其特征在于,所述推荐引擎还用于推荐在所述目标服务器系统中重新创建表。

26.根据权利要求22或23所述的系统,其特征在于,所述推荐引擎还用于在所述目标服务器系统中拆分表。

27.根据权利要求15所述的系统,其特征在于,所述推荐引擎还用于为所述目标服务器系统中的所述R...

【技术特征摘要】
【国外来华专利技术】

1.一种为将关系型数据库管理系统(relational database management system,rdbms)从源服务器系统迁移到目标服务器系统推荐存储格式的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述列(c)的所述列记录中的所述部分列记录包括所述列(c)的所述列记录中的至少70%至80%的列记录。

3.根据权利要求1所述的方法,其特征在于,在所述识别出的一组查询中使用的所述列数(cn)在实际列数的30%至70%之间。

4.根据权利要求1所述的方法,其特征在于,与所述列式操作对应的所述一组查询包括从所述源数据库中提取的所述sql查询中的至少50%至70%的查询。

5.根据权利要求1所述的方法,其特征在于,所述方法包括:

6.根据权利要求1所述的方法,其特征在于,所述方法包括:如果所述列(c)的所述列记录中的所述部分列记录少于所述列(c)的所述列记录中的70%至80%的列记录,为所述目标服务器系统中的所述rdbms推荐行存储格式。

7.根据权利要求1所述的方法,其特征在于,所述方法包括:如果在所述识别出的一组查询中使用的所述列数(cn)小于实际列数的30%至70%,为所述目标服务器系统中的所述rdbms推荐行存储格式。

8.根据权利要求1所述的方法,其特征在于,所述列存储格式被推荐给与所述列式操作对应的所述确定的多列(cn)中的列的列记录。

9.根据权利要求8所述的方法,其特征在于,所述行存储格式推荐被推荐给未在与所述列式操作对应的所述识别出的一组查询中使用的其他列的其他列记录。

10.根据权利要求8或9所述的方法,其特征在于,所述目标服务器系统支持所述rdbms使用混合存储格式。

11.根据权利要求10所述的方法,其特征在于,所述方法包括:推荐在所述目标服务器系统中重新创建表。

12.根据权利要求8或9所述的方法,其特征在于,所述方法包括:推荐在所述目标服务器系统中拆分表。

13.根据权利要求1所述的方法,其特征在于,所述方法还包括:为所述目标服务器系统中的所述rdbms推荐多模态存储。

14.根据权利要求13所述的方法,其特征在于,所述多模态存储是时间序列模型或kv模型中的至少一种。

15.一种用于为将关系型数据库管...

【专利技术属性】
技术研发人员:维沙尔·纳维尼特·潘迪亚维内特·库马尔·马赫什瓦里
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1