产品中心

Product Center

神通数据库(openGauss版 V7.0


      神通数据库(openGauss 版)V7.0是一款高性能、高安全、高可靠的企业级关系型数据库,采用客户端/服务器、单进程多线程架构,支持单机和一主多备部署方式,备机可读,支持双机高可用和读扩展,将有力支撑企业数字化转型,助推我国数字经济健康发展。


一、产品特点

      神通数据库(openGauss版)V7.0主要有复合应用场景、高性能和高可用等产品特点。


· 复合应用场景

  - 行存储,支持业务数据频繁更新场景。

  - 列存储,支持业务数据追加和分析场景。

  - 内存表,支持高吞吐,低时延,极高性能场景。

· 高性能

  - 通过多核数据结构,增量检查点,大内存缓冲区管理实现百万级tpmC。

  - 服务端连接池,支持万级并发。

· 高可用

  - 支持主备同步,异步多种部署模式。

  - 数据页CRC校验,损坏数据页通过备机自动修复。

  - 备机并行恢复,10秒内可升主提供服务。


二、基本功能


· 标准SQL支持

      支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。

· 数据库存储管理功能

       支持表空间,可以把不同表规划到不同的存储位置。

· 提供主备双机

      事务支持ACID特性、单节点故障恢复、双机数据同步,双机故障切换等。

· 应用程序接口

      支持标准JDBC 4.0的特性、ODBC 3.5特性。

· 管理工具

      提供安装部署工具、实例启停工具、备份恢复工具。

· 安全管理

      支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。


三、应用场景


· 交易型应用

      大并发、大数据量、以联机事务处理为主的交易型应用,如电商、金融、O2O、电信CRM/计费等,应用可按需选择不同的主备部署模式。


· 物联网数据

     在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。


四、企业级增强特性


· 数据分区

      数据分区是数据库产品普遍具备的功能。在神通数据库openGauss中,数据分区是对数据按照用户指定的策略对数据做的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。

      神通数据库openGauss支持范围分区(Range Partitioning)功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。

    例如,下图描述了一个xDR(详单)场景下,基于时间分片的方式分区后带来的收益。


场景描述

收益

当表中访问率较高的行位于一个单独分区或少数几个分区时。

大幅减少搜索空间,从而提升访问性能。

当需要查询或更新一个分区的大部分记录时。

仅需要连续扫描对应分区,而非扫描整个表,因此可大幅提升性能。

当需要大量加载或者删除的记录位于一个单独分区或少数几个分区时。

可直接读取或删除对应分区,从而提升处理性能;同时由于避免大量零散的删除操作,可减少清理碎片工作量。


数据分区带来的好处在于:

   改善可管理性:利用分区,可以将表和索引划分为一些更小、更易管理的单元。这样,数据库管理员在进行数据管理时就能采取“分而治之”的方法。 有了分区,维护操作可以专门针对表的特定部分执行。

  可提升删除操作的性能:删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。

删除分区表与删除普通表的语法一致,都是通过DROP TABLE语法进行删除。

   改善查询性能:通过限制要检查或操作的数据数量,分区可带来许多性能优势。

   分区剪枝:分区剪枝(也称为分区消除)是神通数据库openGauss在执行时过滤掉不需要扫描的分区,只对相关的分区进行扫描的技术。分区剪枝通常可以将查询性能提高若干数量级。

     智能化分区联接:通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集。


· 向量化执行和行列混合引擎

      在大宽表,数据量比较大、查询经常关注某些列的场景中,行存储引擎查询性能比较差。例如气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。


- 向量化执行

     如下图所示。控制流向下(下图实线)、数据流向上(下图虚线)、上层驱动下层(上层节点调用下层节点要数据)、一次一元组(下层节点每次只返回一条元组给上层节点)。而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。


1-1 向量化执行引擎


- 行列混合存储引擎

      神通数据库openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。


图1-2 行列混存引擎


- 列存下的数据压缩

     对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。

     神通数据库openGauss列存储压缩支持Delta Value Encoding、Dictionary、RLE、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应的选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。


· 高可靠事务处理

    神通数据库openGauss提供事务管理功能,保证事务的ACID特性。为了在主节点出现故障时尽可能地不中断服务,提供了主备双机高可靠机制。通过保护关键用户程序对外不间断提供服务,把因为硬件、软件和人为造成的故障对业务的影响程度降到最低,以保证业务的持续性。


- 故障恢复

     支持节点故障可恢复及恢复后满足ACID特性。节点故障、停止后重启等情况下,神通数据库openGauss能够保证故障之前的数据无丢失,满足ACID特性。


- 事务管理

     支持事务块,用户可以通过start transaction命令显式启动一个事务块。

     支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。


· 高并发&高性能

      神通数据库openGauss通过服务器端的线程池,可以支持1W并发链接。通过NUMA化内核数据结构,支持线程亲核性处理,可以支持百万级tpmC。通过页面的高效冷热淘汰,支持T级别大内存缓冲区管理。通过CSN快照,去除快照瓶颈,实现多版本访问,读写互不阻塞。通过增量检查点,避免全页写导致的性能波动,实现业务性能平稳运行。


· SQL自诊断

     通过执行查询对应的explain performance,获得对应执行计划,是一种十分有效的定位查询性能问题的方法。但是这种方法需要修改业务逻辑,同时输出的日志量大,问题定位的效率依赖于人员的经验。SQL自诊断为用户提供了另一种更为高效易用的性能问题定位方法。

      在执行作业之前,配置GUC参数resource_track_level和resource_track_cost,然后运行用户作业,就可以通过查看相关系统视图,获得执行完成的相关查询作业可能存在的性能问题。系统视图中会给出导致性能问题的可能原因,根据这些“性能告警”,参考《开发者指南》中“性能调优> SQL调优指南>典型SQL调优点> SQL自诊断”章节,就可以对存在性能问题的作业进行调优。

      SQL自诊断可以在不影响用户作业,不修改业务逻辑的情况下,诊断出相对准确的性能问题,为用户提供更为易用的性能调优参考。


· 内存表

     内存表把数据全部缓存在内存中,所有数据访问实现免锁并发,实现数据处理的极致性能,满足实时性严苛要求场景。


· 主备双机

     主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。

     神通数据库openGauss支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。openGauss支持备机并行日志恢复,尽量降低主机宕机时业务不可用的时间。

      同时,如果按照主备模式部署,并打开备机可读功能后,备机将能够提供读操作,但不支持写操作(如建表、插入数据、删除数据等),从而缓解主机上的压力。