达梦数据库

English

高性能分析组件

  传统的关系数据库技术已经无法满足大数据分析的需要。为了适应这一要求与趋势,达梦数据库有限公司推出的具有完全自主知识产权、基于云架构的分析型数据库产品——达梦高性能分析组件(DM High Performance Analysis Component,缩写为DMHPA),支持“大数据”应用,采用列存储技术、粗粒度智能索引、巨型文件系统HFS、高性能查询处理、I/O性能优化、并发处理、大规模并行计算等先进技术,满足分析领域TB/PB级海量数据联机分析处理(OLAP)的需求,可广泛应用于安全、金融、电信、银行、证券、零售等重大行业的核心领域,为用户提供良好的数据分析服务支撑。

  DMHPA的设计融入了专为海量数据分析的顶尖技术。这些技术分别从IO效率、CPU 缓存效率、表达式计算及高性能并行计算等方面提升系统性能,为用户在通用硬件上构建海量数据分析平台提供了一个高性能、低成本的解决方案。结合达梦大规模并行处理集群组件(DMMPP),用户可以获得几乎无限的扩展能力。

产品特点

列式存储

  • 不读取无效列数据,查询语句通常只涉及表的一小部分列。只有引用到的列的数据包才有可能被访问到。其他列的数据是不需要读取的。因此提高了数据访问效率,减少了不必要的I/O,相对于传统行式数据存储,极大地提高了查询性能。

智能索引

  • 不读取无效数据包,每个数据包,系统都维护了一个基本的统计描述信息记录,并以智能索引形式组织存储。在扫描数据包前,系统会检查这些信息,和扫描条件进行比较,从而快速跳过不合条件的数据包,进一步减小不必要的磁盘IO,加速查询速度。智能索引的建立、维护对用户而言是自动化、不可见的。

高效的透明压缩

  • DMHPA采用以数据包为单位的列存储模式,因为包内数据的数据类型完全相同,非常便于数据压缩。系统采用智能压缩策略,根据采样值特性,自动选择最合适的压缩算法进行数据压缩。采用压缩技术后的列存储,可以进一步减少查询的实际I/O规模,压缩空间通常能节省 1~20倍。这能够在磁盘 I/O 和 Cache I/O 上同时提升数据库的性能,使DMHPA在某些场景下的运算性能比传统数据库快 100 倍以上。

数据分区

  • DMHPA支持表的水平分区和垂直分区功能。

  • DMHPA提供以下三种水平分区方式:范围水平分区、哈希水平分区、列表水平分区。

  • 对于水平分区表,系统还支持多级分区。比如在哈希分区的基础上,再进行范围分区,进一步细分数据,提升数据管理的灵活性和查询性能。

  • 对于垂直分区表,则将表按列分拆为多个分区,每个分区子表只需包含较少的列。如果查询表上的某些列,并且这些列都在一个分区中,那么只要扫描这个分区子表即可。

批量数据处理

  • 批量数据处理的目的是提升CPU 二级缓存的利用率。当数据读入内存后,按照传统策略,需要经过逐行过滤、连接、计算等操作处理后,才能生成最终结果集。在海量的数据处理场景下,必然产生大量重复的函数调用及数据的反复拷贝与计算代价。批量处理的思想就是读取一批,计算一批,传递一批。

批量表达式计算

  • DMHPA从设计之初就非常注重表达式计算的性能优化。系统内部的虚拟机执行引擎支持大量的批量运算指令。每种数据类型的不同运算,系统都为其配置了各自的运算函数,这些函数以数组为单位进行,在一个简单循环内进行计算。这种模式避免了传统表达式计算中对每个表达式都进行递归函数调用的巨大代价,利用了CPU 二级缓存的效率,也能充分利用现代CPU单指令流多数据流的计算能力,几乎达到C语言的性能,获得成百倍的性能提升。

高度并行的查询技术

  • DMHPA采用了对称并行执行技术。在获得了并行执行线程资源以后,把并行计划分发给所有的线程,同时开始执行同一个计划,只是在执行并行通讯操作符时进行必要的同步和数据交换。结合列存储或者分区表技术,这一对称并行执行的效率非常高,在内存充足的情况下,单个查询几乎可以利用全部的计算资源,高效处理HASH连接,分类汇总等计算密集型查询。

任意复杂查询的并行支持

  • 很多分析型系统的并行查询有很大的局限性,比如要求必须是单表查询,或者不能有子查询又或是不能有相关子查询等等。DMHPA的并行查询技术完全没有这些限制,支持任意复杂SQL的并行查询。任意复杂查询的并行支持,将极大简化系统调优中SQL改写的工作量,减少维护成本,减少应用范围限制,提升即席查询的效率,提供更佳的用户体验。

批量数据加载

  • DMHPA提供能够快速在文本数据与达梦数据库之间载入载出的工具DMFLDR,可以在极短的时间内装载海量文本数据。用户通过使用DMFLDR工具能够将按照一定格式存放的文本数据以简单、快速、高效的方式载入到达梦数据库中。针对不同装载环境,用户还可以通过指定不同的参数选项组合来提升装载的速度,并且可以让用户在数据加载完成后,马上开始使用数据,无需再消耗额外的手工创建索引的时间成本,极大缩短了数据准备的时间。同时提供了对外接口,方便用户集成到自己的应用中。