# 海量数据 Vastbase E100 企业级关系型数据库技术指南

> **数据来源**：北京海量数据技术股份有限公司官方技术文档中心（[docs.vastdata.com.cn](https://docs.vastdata.com.cn/zh_CN)）  
> **文档版本覆盖**：Vastbase E100 V5.0.0 最新版  
> **整理原则**：保留官方文档技术严谨度、底层进程模型、极限值规格、高级索引、高可用流复制机制与安全增强选件。

---

## 目录
- [一、产品定位与核心优势](#一产品定位与核心优势)
- [二、关键技术指标与系统极限值](#二关键技术指标与系统极限值)
- [三、软件架构与运行模型](#三软件架构与运行模型)
- [四、存储与高级索引体系（11 种专业索引）](#四存储与高级索引体系11-种专业索引)
- [五、查询执行与优化机制](#五查询执行与优化机制)
  - [5.1 多表连接（Join）算法](#51-多表连接join算法)
  - [5.2 并行查询（Parallel Query）与参数调优](#52-并行查询parallel-query与参数调优)
  - [5.3 即时编译（JIT, Just-In-Time）加速](#53-即时编译jit-just-in-time加速)
  - [5.4 表分区（Partitioning）](#54-表分区partitioning)
- [六、高可用集群组件与流复制体系](#六高可用集群组件与流复制体系)
  - [6.1 基于日志的流复制传输原理](#61-基于日志的流复制传输原理)
  - [6.2 多副本与多级级联容灾架构](#62-多副本与多级级联容灾架构)
- [七、Oracle 深度兼容性与异构替换](#七oracle-深度兼容性与异构替换)
- [八、企业级安全增强选件与加密体系](#八企业级安全增强选件与加密体系)
  - [8.1 强制访问控制（MAC）与安全标签](#81-强制访问控制mac与安全标签)
  - [8.2 独立安全审计库（auditdb）](#82-独立安全审计库auditdb)
  - [8.3 多层级数据加密机制](#83-多层级数据加密机制)
- [九、多模引擎与企业级扩展能力](#九多模引擎与企业级扩展能力)
- [十、系统运维与备份恢复指南](#十系统运维与备份恢复指南)

---

## 一、产品定位与核心优势

**Vastbase E100** 是海量数据面向企业级通用业务场景研发的高性能关系型数据库系统，具有以下核心产品特征：

1. **通用性与标准规范**：
   - 严格遵循事务 ACID 特性，完全支持 ANSI SQL-2011 规范。
   - 具备丰富的数据类型和数据对象，全面适配 Java、Python、C/C++、Go、.NET 等开发语言及 JDBC、ODBC、OCI、libpq 等开发接口；深度兼容 Hibernate、MyBatis 等主流 ORM 框架。
2. **Oracle 高度兼容性**：
   - 广泛兼容 Oracle SYS 系统视图、数据类型、高级系统函数、PL/SQL、存储过程、包、触发器及空值语义（`''` 视同 `NULL`）。企业现有的 Oracle 业务应用无需修改或仅做极少量调整即可稳定迁移平替。
3. **混合负载处理能力（HTAP）**：
   - 搭载先进的 SQL 执行内核与强大的成本基（CBO）查询优化器。
   - 兼具超高并发的联机交易处理（OLTP）性能与海量数据的联机分析运算（OLAP）吞吐能力。
4. **分布式集群扩展能力**：
   - 支持分布式集群部署形态，将数据均匀分布在各节点上，协同利用分布式节点的计算与存储资源；在 32 节点以下规模横向扩容时，性能增幅可保持极佳的线性度（$\delta \approx 0$）。
5. **多层级安全防护体系**：
   - 遵循《GB/T 20273-2006 信息安全技术数据库管理系统安全技术要求》设计，具备数据安全标签、三权分立审计库与全链路加密机制。

---

## 二、关键技术指标与系统极限值

官方文档明确列出的 Vastbase E100 极限值与规格指标如下：

| 规格/指标项 | 官方极限值 / 限制 | 补充说明 |
| :--- | :--- | :--- |
| **单个数据库大小** | **不限** | 取决于底层物理存储与文件系统限制 |
| **单个数据表大小** | **128 TB** | 大表存储能力强劲 |
| **单条记录大小** | **1.6 TB** | 包含 TOAST 超大行扩展 |
| **单字段大小** | **1 GB** | 单个文本或二进制字段容量 |
| **单表记录数** | **不限** | 无硬编码行数上限 |
| **单表字段数** | **1600 列** | 表宽度支持广泛 |
| **单表索引数** | **不限** | 取决于物理存储与性能考量 |
| **高可用集群节点数** | **1024 节点** | 支持超大规模多节点部署 |
| **分布式集群节点数** | **1024 节点** | 32 节点内线性加速度极佳（$\delta \approx 0$） |
| **流复制副本数** | **1024 副本** | 满足多地多中心读扩展与灾备 |
| **流复制级联层级** | **不限** | 支持构建灵活的多级树状级联备库 |

---

## 三、软件架构与运行模型

### 1. 客户端/服务器（C/S）多进程并发模型
- Vastbase E100 采用成熟稳定的客户端/服务器（C/S）多进程服务架构，客户端与服务端节点通过 TCP/IP 网络协议连接。
- 服务端后台常驻守护主进程（Postmaster 进程），监听客户端连接请求；
- 每当新的客户端接入时，守护进程会为其 Fork 派生一个独立的后端服务工作进程（Backend Process）与该客户端进行点对点专属通信，后台进程异常不会导致全服崩溃，进程间资源完全物理隔离。

### 2. 对象组织层级
```
Database Cluster（数据库集簇）
 ├── Global Roles & Users（全局用户/角色权限）
 ├── Tablespaces（物理文件目录存储空间）
 └── Databases（逻辑相互隔离的独立数据库）
      └── Schemas（模式命名空间）
           ├── Tables & Partitions（表与物理分区）
           ├── Indexes（11 种专业索引）
           ├── Views（普通视图与物化视图）
           ├── Sequences（序列）
           └── Functions / Procedures（函数与存储过程）
```
- **集簇与库隔离**：一个集簇包含多个数据库，数据库之间逻辑隔离，无法直接进行无特权的跨库对象访问。
- **模式（Schema）**：数据库下的二级命名空间，所有的表、视图、存储过程都归属于特定模式。

---

## 四、存储与高级索引体系（11 种专业索引）

Vastbase E100 提供了业内极具深度的 11 种专业级索引类型，应对不同维度的业务检索场景：

| 索引类型 | 底层数据结构与原理 | 适用业务场景与操作符 |
| :--- | :--- | :--- |
| **B-Tree** | 多路平衡查找树 | 默认索引类型，适用于排序检索、等值及范围查找（`<`, `<=`, `=`, `>=`, `>`, `BETWEEN`, `IN`），支持前缀模式匹配（`LIKE 'abc%'`）及 `IS NULL` 检索。 |
| **Hash** | 基于哈希散列桶与链表冲突解决 | 仅支持长字符串或复杂标识符的**精确等值比较（`=`）**，体积极其紧凑且单点哈希定位极快。 |
| **GIN** | 倒排索引（Generalized Inverted Index） | 多值列字段检索，适用于全文检索、数组（Array）、JSON/JSONB 成员包含判断。 |
| **RUM** | GIN 索引的高阶增强扩展 | 专为全文检索深度设计，在倒排项中记录词频与精确位置信息，加速短语查询、邻近词查找与评分排序。 |
| **GiST** | 通用搜索树（Generalized Search Tree） | 适合多维几何空间数据（PostGIS）、IP 范围、区间数据及非严格点对点几何重叠相交检测。 |
| **SP-GiST** | 空间分区通用搜索树 | 适合非平衡空间数据结构，如四叉树、前缀树（Trie），加速空间点与不平衡前缀检索。 |
| **BRIN** | 块范围索引（Block Range Index） | 针对高度物理有序的海量时序数据、自增日志数据，按连续物理数据页块范围记录 Min/Max，占用磁盘空间微乎其微。 |
| **Bloom** | 布隆过滤器索引（Lossy Index） | 基于签名位图构建，支持包含大量列的宽表任意列组合等值查询。 |
| **Zombodb** | 数据库与 Elasticsearch 对接索引 | 让 Vastbase E100 支持原生 SQL 接口透明读写外部 ES 集群，实现海量文本的高性能分布式全文搜索引擎能力。 |
| **表达式索引** | 基于函数或算式计算结果建索引 | 如 `CREATE INDEX idx ON tab (lower(name));`，大幅提升复杂函数查询性能。 |
| **部分/条件索引** | 带有 WHERE 过滤条件的局部索引 | 如 `CREATE INDEX idx ON orders (status) WHERE status = 'unpaid';`，仅为热点数据建索引，极大减少磁盘占用。 |

---

## 五、查询执行与优化机制

### 5.1 多表连接（Join）算法
优化器基于 CBO（成本模型）自动评估并选择最优执行路径：
1. **Nested Loop Join（嵌套循环连接）**：
   - 遍历外表每一行，利用内表关联字段上的索引去内表查找匹配项。适合外表数据子集较小且内表有高效索引的 OLTP 事务场景。
2. **Hash Join（哈希连接）**：
   - 优化器选用较小的表在内存中构建 Hash 散列表，随后全表扫描大表并探测散列表匹配行。
   - 大数据集连接的首选（“Join 的重型升降机”），仅适用于等值连接；当表过大超出内存时自动进入多批次分段磁盘临时存储。
3. **Merge Join（排序合并连接）**：
   - 先对两张表分别全表扫描并按连接键排序，再进行线性归并匹配。
   - 适用于两张表本身已有物理序（如走索引扫描）或进行非等值不等式 Join（`>`, `<`, `>=`, `<=`，但不包括 `!=`）。

### 5.2 并行查询（Parallel Query）与参数调优
支持对大规模 `SELECT` 顺序扫描、并行索引扫描、并行 Bitmap Heap 扫描以及大表数据处理进行多核并发加速：

- `max_worker_processes`：系统支持的最大后台工作进程总数（默认值：8，修改需重启生效）。
- `max_parallel_workers`：系统允许并发执行并行查询的进程上限（默认值：8）。
- `max_parallel_workers_per_gather`：单个 Gather 算子允许派生的并行查询子工作进程数（默认：2，设置为 0 则禁用并行）。
- `parallel_setup_cost`：优化器评估启动并行子进程的固定启动代价成本（默认值：1000）。
- `parallel_tuple_cost`：并行子进程间传递单行元组的评估开销（默认值：0.1）。
- `min_parallel_table_scan_size`：触发并行表扫描的最小表大小阈值（默认：8MB，小于该值不走并行）。
- `min_parallel_index_scan_size`：触发并行索引扫描的最小索引大小阈值（默认：512KB）。
- `force_parallel_mode`：强制启动并行模式（通常用于测试与验证评估）。

### 5.3 即时编译（JIT, Just-In-Time）加速
- 内置基于 LLVM 的即时编译器。在处理复杂表达式求值、复杂聚合运算以及大数据量分析查询时，将 SQL 算子动态编译为机器原生指令执行，消除解释器执行循环开销，计算性能可大幅提升数倍。

### 5.4 表分区（Partitioning）
支持对超大单表进行物理水平切片：
- **范围分区（Range）**：按时间周期（如月份、年份）或递增 ID 分段。
- **列表分区（List）**：按预定义的一组固定枚举值（如地区、分支机构代码）切分。
- **哈希分区（Hash）**：通过哈希函数对数据均匀打散。
- **复合分区（Composite）**：如 Range-Hash 或 Range-List 二级甚至三级嵌套分区。

---

## 六、高可用集群组件与流复制体系

### 6.1 基于日志的流复制传输原理
Vastbase E100 提供基于预写日志（WAL）的原生流复制高可用能力：
1. **工作流程**：
   - 客户端在 Master 主库提交写事务，`walwriter` 进程周期性将产生的 WAL 物理页刷入磁盘；
   - 主库的 `walsender` 后台进程持续将 WAL 日志通过网络流式推送给备库；
   - 备库的 `walreceiver` 进程接收网络流并直接写入备库本地磁盘；
   - 备库的 `startup` 辅助进程不断重放（Apply）XLOG 日志，修改本地数据块，实现主备数据完全同步。
2. **复制模式支持**：
   - **同步复制（Synchronous Replication）**：确保事务至少在备库持久化后才返回客户端成功，保证零数据丢失（RPO=0）；
   - **异步复制（Asynchronous Replication）**：主库写入即可返回，最大化降低事务提交延迟。

### 6.2 多副本与多级级联容灾架构
- **读写分离与读扩展**：备库可配置为以只读模式（Hot Standby）对外开放，承担统计报表、批量抽取和只读业务，分摊主库负载。
- **最大支持 1024 个副本**：单主库可向多达 1024 个备库广播日志；
- **无限级级联备库**：备库可同时作为下游级联备库的日志数据源，避免跨机房多备库直接消耗主库网络带宽。

---

## 七、Oracle 深度兼容性与异构替换

Vastbase E100 在内核层深度集成 Oracle 兼容性能力：
- **系统字典视图**：全面兼容 `DBA_TABLES`、`USER_TAB_COLUMNS`、`ALL_OBJECTS`、`V$SESSION`、`V$SQL` 等常用管理视图。
- **PL/SQL 存储过程**：兼容 Oracle 自治事务、游标（REF CURSOR）、包（Package）、触发器、用户自定义异常处理。
- **高级系统包**：内置 `DBMS_OUTPUT`、`DBMS_LOB`、`DBMS_SQL`、`DBMS_JOB`、`UTL_FILE` 等核心业务包。
- **常用语法**：外连接简写法 `(+)`、`ROWNUM` 伪列、`SYSDATE` 表达式、层次化查询 `CONNECT BY PRIOR`。
- **空值语义**：严格支持 Oracle 空字符串 `''` 等价于 `NULL` 的语义判断规则。

---

## 八、企业级安全增强选件与加密体系

### 8.1 强制访问控制（MAC）与安全标签
为满足《GB/T 20273-2006 信息安全技术数据库管理系统安全技术要求》：
- **数据安全标签**：基于主体和客体的安全级别标记实施强制访问控制。
- 只有具备“**数据库安全员**”特权角色的用户才能配置安全策略与标签；
- 支持表级、行级、列级以及混合维度的安全标签，即便是超级管理员（DBA）也无法越权读取被打上高密标签的用户隐私数据。

### 8.2 独立安全审计库（auditdb）
- Vastbase E100 安全增强选件配置了独立的审计数据库 `auditdb`。
- 记录所有被审计用户的 DDL、DML 及特权操作，专设“审计管理员”进行日常追溯，实现“系统管理员、安全员、审计员”职权分离。

### 8.3 多层级数据加密机制
1. **密码哈希保护**：支持国际最高标准的 SCRAM 身份认证算法（替代弱 MD5），密码在网络传输与落盘存储中全程哈希化。
2. **列级数据加密（pgcrypto 选件）**：针对身份证号、银行卡号等局部敏感列调用加密函数，数据仅在客户端解密。
3. **透明存储加密（TDE）**：支持文件系统级（eCryptfs/EncFS）与块设备级（dm-crypt LUKS）全盘底层加密，防止服务器被盗或物理磁盘被非法读取。

---

## 九、多模引擎与企业级扩展能力

1. **GIS 空间地理信息（PostGIS）**：
   - 深度兼容国际 OpenGIS 规范及 PostGIS 语法标准，支持高维空间拓扑运算、几何图形构造与空间索引。
2. **JSON/JSONB 半结构化数据**：
   - 支持结构化行表与 JSON 文档混合存储，支持针对 JSON 属性的高速抽取、路径表达式查找与 GIN 索引覆盖。
3. **全文检索与流计算**：
   - 内置多语言分词组件与向量倒排检索；
   - 具备流式计算插件与实时物化视图，满足流式实时数据指标统计。

---

## 十、系统运维与备份恢复指南

### 1. 服务控制命令
在操作系统安装用户下执行：
```bash
# 初始化数据库集群数据目录（指定编码）
initdb -D /data/vastbase/data -E UTF8

# 启动数据库实例（后台守护运行，指定日志文件）
pg_ctl -D /data/vastbase/data -l /data/vastbase/logfile start

# 安全停止实例（-m fast 强制中断会话并刷盘）
pg_ctl -D /data/vastbase/data -m fast stop

# 在线重载参数配置（免重启生效）
pg_ctl -D /data/vastbase/data reload

# 检查服务运行状态
pg_ctl -D /data/vastbase/data status
```

### 2. 备份恢复策略
1. **SQL 逻辑转储**：
   - `pg_dump`：导出单个数据库结构和数据（支持自定义压缩归档格式 `-F c`）；
   - `pg_dumpall`：导出所有库及全局角色权限、表空间定义。
2. **物理文件级备份与连续归档（WAL Archiving）**：
   - 配置 `wal_level = replica`，启用归档 `archive_mode = on` 与 `archive_command`。
   - 使用 `pg_basebackup` 执行实例级全量物理快照。
   - 基于归档日志实现秒级基于时间点的不完全恢复（PITR）。
