diff --git "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md" "b/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md"
index dd9cd04294edde1ecc629738dc6a0fccc3f286d7..7fd9ffdbe8a07cf8148c342532d015cf4d31948a 100644
--- "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md"
+++ "b/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md"
@@ -2,36 +2,35 @@
-- [面向应用开发的基本功能](#面向应用开发的基本功能a-namezh-cn_concept_0252569319a)
-- [高性能](#高性能a-namezh-cn_concept_0252569351a)
- - [CBO优化器](#cbo优化器a-namesection191361958173919a)
- - [行列混合存储](#行列混合存储a-namesection238822244016a)
- - [自适应压缩](#自适应压缩a-namesection165674464017a)
- - [分区](#分区a-namesection179995312414a)
- - [SQL by pass](#sql-by-passa-namesection35179210428a)
- - [鲲鹏NUMA架构优化](#鲲鹏numa架构优化a-namesection1133517227426a)
-- [高扩展](#高扩展a-namezh-cn_concept_0252569367a)
-- [高可用](#高可用a-namezh-cn_concept_0252569372a)
- - [主备机](#主备机a-namesection3473135114413a)
- - [逻辑备份](#逻辑备份a-namesection11293115015445a)
- - [物理备份](#物理备份a-namesection1370220278457a)
-- [可维护性](#可维护性a-namezh-cn_concept_0252569383a)
- - [支持WDR诊断报告](#支持wdr诊断报告a-namesection16308432469a)
- - [慢SQL诊断](#慢sql诊断a-namesection11920121884711a)
- - [支持一键式收集诊断信息](#支持一键式收集诊断信息a-namesection38495113486a)
-- [数据库安全](#数据库安全a-namezh-cn_concept_0252569391a)
- - [访问控制](#访问控制a-namesection1518355319485a)
- - [控制权和访问权分离](#控制权和访问权分离a-namesection74261220114919a)
- - [数据库加密认证](#数据库加密认证a-namesection5666740124910a)
- - [数据库审计](#数据库审计a-namesection1544614711502a)
- - [网络通信安全特性](#网络通信安全特性a-namesection12318192310500a)
- - [行级访问控制](#行级访问控制a-namesection135874520509a)
+- [面向应用开发的基本功能](#面向应用开发的基本功能)
+- [高性能](#高性能)
+ - [CBO优化器](#cbo优化器)
+ - [行列混合存储](#行列混合存储)
+ - [自适应压缩](#自适应压缩)
+ - [分区](#分区)
+ - [SQL by pass](#sql-by-pass)
+ - [鲲鹏NUMA架构优化](#鲲鹏numa架构优化)
+- [高扩展](#高扩展)
+- [高可用](#高可用)
+ - [主备机](#主备机)
+ - [逻辑备份](#逻辑备份)
+ - [物理备份](#物理备份)
+- [可维护性](#可维护性)
+ - [支持WDR诊断报告](#支持wdr诊断报告)
+ - [慢SQL诊断](#慢sql诊断)
+ - [支持一键式收集诊断信息](#支持一键式收集诊断信息)
+- [数据库安全](#数据库安全)
+ - [访问控制](#访问控制)
+ - [控制权和访问权分离](#控制权和访问权分离)
+ - [数据库加密认证](#数据库加密认证a)
+ - [数据库审计](#数据库审计)
+ - [网络通信安全特性](#网络通信安全特性)
+ - [行级访问控制](#行级访问控制)
-## 面向应用开发的基本功能
-
+## 面向应用开发的基本功能
- 支持标准SQL
openGauss数据库支持标准的SQL。SQL标准是一个国际性的标准,定期会进行刷新。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。遗憾的是,SQL特性的构筑成为了数据库厂商吸引用户和提高应用迁移成本的手段,新的SQL特性在厂商之间差异越来越大,目前还没有机构来进行权威的SQL标准度的测试。
@@ -107,15 +106,15 @@
openGauss提供用户封装好的Copy错误表创建函数,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。
-## 高性能
+## 高性能
-### CBO优化器
+### CBO优化器
openGauss优化器是典型的基于代价的优化 \(Cost-Based Optimization,简称CBO\)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价\(cost\),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。
CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。
-### 行列混合存储
+### 行列混合存储
openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。
@@ -162,7 +161,7 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。
-### 自适应压缩
+### 自适应压缩
当前主流数据库通常都会采用数据压缩技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适用压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。
@@ -241,7 +240,7 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
例如,支持类手机号字符串的大整数压缩、支持numeric类型的大整数压缩、支持对压缩算法进行不同压缩水平的调整。
-### 分区
+### 分区
在openGauss系统中,数据分区是在一个实例内部对数据按照用户指定的策略对数据做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。
@@ -260,11 +259,11 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。
-### SQL by pass
+### SQL by pass
在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL-BY-PASS框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。
-### 鲲鹏NUMA架构优化
+### 鲲鹏NUMA架构优化
鲲鹏NUMA架构优化图如下。
@@ -275,7 +274,7 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
2. openGauss基于鲲鹏芯片所使用的ARMv8.1架构,利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升多线程间同步性能,XLog写入性能等。
3. openGauss基于鲲鹏芯片提供的更宽的L3缓存cacheline,针对热点数据访问进行优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。
-## 高扩展
+## 高扩展
**线程池高并发**
@@ -285,9 +284,9 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
因此,需要通过线程资源池化复用的技术来解决该问题。线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接session,这样把session和thread进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。
-## 高可用
+## 高可用
-### 主备机
+### 主备机
为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。主备环境可以支持主备和一主多备两种模式。主备模式下,备机需要重做日志,可以升主。在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备主要用于一般可靠性的OLTP系统能够节省一定的存储资源。而一主多备提供更高的容灾能力,适合于更高可靠性事务处理的OLTP系统。
@@ -295,19 +294,19 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应
初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。Build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。
-### 逻辑备份
+### 逻辑备份
openGauss提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件、,并在同构/异构数据库中恢复该用户表的数据。
-### 物理备份
+### 物理备份
openGauss提供物理备份能力,可以将整个实例的数据以数据库内部格式备份到本地磁盘文件、中,并在同构数据库中恢复整个实例的数据。
物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。当前openGauss只支持全量备份。
-## 可维护性
+## 可维护性
-### 支持WDR诊断报告
+### 支持WDR诊断报告
WDR\(Workload Diagnosis Report\)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。
@@ -432,7 +431,7 @@ WDR主要依赖两个组件:
- WDR报表是长期性能问题最主要的诊断手段。基于SNAPSHOT的性能基线,从多维度做性能分析,能帮助DBA 掌握系统负载繁忙程度,各个组件的性能表现,性能瓶颈。
- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。
-### 慢SQL诊断
+### 慢SQL诊断
慢SQL诊断分为两部分:实时慢SQL 和历史慢SQL。
@@ -446,7 +445,7 @@ WDR主要依赖两个组件:
- 实时的慢SQL提供给用户管理尚未执行完毕的作业的接口,用户可以手动结束异常的,消耗过多资源的作业。
- 历史慢SQL提供给用户对于慢SQL诊断所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和文件接口方便用户统计慢SQL指标,对接第三方平台。
-### 支持一键式收集诊断信息
+### 支持一键式收集诊断信息
提供多种套件用于捕获、收集、分析诊断数据,使问题可以诊断,加速诊断过程。能根据开发和定位人员的需要,从生产环境中将必要的数据库日志、集群管理日志、堆栈信息等提取出来,定位人员根据获得信息进行问题的定界定位。
@@ -462,9 +461,9 @@ WDR主要依赖两个组件:
- 数据库产生的redo日志文件xlog
- 计划复现信息
-## 数据库安全
+## 数据库安全
-### 访问控制
+### 访问控制
管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。
@@ -474,7 +473,7 @@ WDR主要依赖两个组件:
默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。
-### 控制权和访问权分离
+### 控制权和访问权分离
针对系统管理员用户,实现表对象的控制权和访问权分离,提高普通用户数据安全性,限制管理员对象访问权限。
@@ -482,7 +481,7 @@ WDR主要依赖两个组件:
系统管理员可以在创建用户时指定INDEPENDENT属性,表示该用户为私有用户。针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。
-### 数据库加密认证
+### 数据库加密认证
采用基于RFC5802机制的口令加密认证方法。
@@ -492,7 +491,7 @@ WDR主要依赖两个组件:
统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者口令的正确性。
-### 数据库审计
+### 数据库审计
审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。
@@ -502,7 +501,7 @@ WDR主要依赖两个组件:
数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。
-### 网络通信安全特性
+### 网络通信安全特性
支持通过SSL加密客户端和服务器之间的通信数据,保证客户的客户端与服务器通信安全。
@@ -590,12 +589,10 @@ WDR主要依赖两个组件:
-### 行级访问控制
+### 行级访问控制
行级访问控制特性将数据库访问粒度控制到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,按照行访问控制策略,读取到的结果可能是不同的。
用户可以在数据表创建行访问控制\(Row Level Security\)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性\(PERMISSIVE | RESTRICTIVE\)类型,通过AND或OR方式拼接,应用到执行计划上。
行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前行级访问控制支持的SQL语句包括SELECT,UPDATE,DELETE。
-
-
\ No newline at end of file