Skip to content

Commit d40340c

Browse files
authored
Merge branch 'master' into system_stats_master
2 parents 76fef66 + be0c7b0 commit d40340c

File tree

14 files changed

+531
-9
lines changed

14 files changed

+531
-9
lines changed

CN/modules/ROOT/nav.adoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
*** xref:master/5.4.adoc[pg_cron]
2020
*** xref:master/5.5.adoc[pgsql-http]
2121
*** xref:master/5.6.adoc[plpgsql_check]
22+
*** xref:master/5.7.adoc[pgroonga]
23+
*** xref:master/5.8.adoc[pgaudit]
24+
*** xref:master/5.9.adoc[pgrouting]
2225
*** xref:master/5.10.adoc[system_stats]
2326
** IvorySQL架构设计
2427
*** 查询处理

CN/modules/ROOT/pages/master/5.0.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ IvorySQL 作为一款兼容 Oracle 且基于 PostgreSQL 的高级开源数据库
1717
| xref:master/5.4.adoc[pg_cron]​ | 1.6.0 | 提供数据库内部的定时任务调度功能,支持定期执行SQL语句 | 数据清理、定期统计、自动化维护任务
1818
| xref:master/5.5.adoc[pgsql-http]​ | 1.7.0 | 允许在SQL中发起HTTP请求,与外部Web服务进行交互 | 数据采集、API集成、微服务调用
1919
| xref:master/5.6.adoc[plpgsql_check] | 2.8 | 提供PL/pgSQL代码的静态分析功能,可在开发阶段发现潜在错误 | 存储过程开发、代码质量检查、调试优化
20+
| xref:master/5.7.adoc[pgroonga] | 4.0.4 | 提供​非英语语言全文搜索功能,满足高性能应用的需求 | 中日韩等语言的全文搜索功能
21+
| xref:master/5.8.adoc[pgaudit] | 18.0 | 提供细粒度的审计功能,记录数据库操作日志,便于安全审计和合规性检查 | 数据库安全审计、合规性检查、审计报告生成
22+
| xref:master/5.9.adoc[pgrouting] | 3.8.0 | 提供地理空间数据的路由计算功能,支持多种算法和数据格式 | 地理空间分析、路径规划、物流优化
2023
|====
2124

2225
这些插件均经过 IvorySQL 团队的测试和适配,确保在 IvorySQL 环境下稳定运行。用户可以根据业务需求选择合适的插件,进一步提升数据库系统的能力和灵活性。
2326

24-
我们也将持续扩展和丰富 IvorySQL 的插件生态,欢迎社区开发者提交新的插件适配建议或代码贡献。如需了解更多每个插件的详细使用方法和最新兼容版本,请参阅各插件对应的文档章节。
27+
我们也将持续扩展和丰富 IvorySQL 的插件生态,欢迎社区开发者提交新的插件适配建议或代码贡献。如需了解更多每个插件的详细使用方法和最新兼容版本,请参阅各插件对应的文档章节。
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
2+
:sectnums:
3+
:sectnumlevels: 5
4+
5+
= PGroonga
6+
7+
== 概述
8+
PostgreSQL 内置了全文搜索功能,但在处理​​大规模数据​​、​​复杂查询​​以及​​非英语语言(特别是中日韩等 CJK 语言)​​ 时,其功能和性能可能无法满足高性能应用的需求。
9+
10+
PGroonga 应运而生,它是一个 PostgreSQL 的扩展插件,将 ​​Groonga​​ 这款高性能的全功能全文搜索引擎与 PostgreSQL 数据库深度融合。Groonga 本身是一个优秀的开源搜索引擎,以其极致的速度和丰富的功能著称,尤其擅长处理多语言文本。PGroonga 的使命就是将 Groonga 的强大能力无缝地带入 PostgreSQL 的世界,为用户提供远超原生全文搜索的体验。
11+
12+
== 安装
13+
[NOTE]
14+
IvorySQL的安装包里已经集成了PGroonga插件,如果使用安装包安装的IvorySQL,通常不需要再手动安装PGroonga,直接跳过安装步骤即可。
15+
16+
用户可从 https://pgroonga.github.io/install[PGroonga package安装] 页面选择适合自己的方式进行PGroonga安装。
17+
18+
IvorySQL社区提供了源码安装步骤,下面以PGroonga v4.0.4为例进行演示。
19+
20+
=== 安装依赖
21+
22+
环境
23+
```
24+
操作系统:Ubuntu 24.04
25+
CPU架构:x86_64
26+
IvorySQL: v5.0
27+
```
28+
29+
==== 安装 msgpack-c
30+
31+
编译PGroonga,有个配置选项:HAVE_MSGPACK=1,它是用于支持WAL,使用这个选项需要安装msgpack-c 1.4.1或者更高版本。
32+
33+
```
34+
sudo apt install libmsgpack-dev
35+
```
36+
==== 安装 Groonga
37+
38+
确保Groonga >= 14.0.0
39+
40+
```
41+
sudo apt install groonga libgroonga-dev
42+
```
43+
验证Groonga安装成功
44+
```bash
45+
highgo@ubuntu:~/work/IvorySQL/inst$ groonga --version
46+
Groonga 15.1.7 [Linux,x86_64,utf8,match-escalation-threshold=0,nfkc,mecab,message-pack,mruby,onigmo,zlib,lz4,zstandard,epoll,apache-arrow,xxhash,blosc,h3,simdjson,llama.cpp]
47+
```
48+
49+
50+
=== 编译安装PGroonga
51+
52+
==== 下载解压源码
53+
54+
```bash
55+
wget https://packages.groonga.org/source/pgroonga/pgroonga-4.0.4.tar.gz
56+
tar xvf pgroonga-4.0.4.tar.gz
57+
cd pgroonga-4.0.4
58+
```
59+
==== 编译
60+
运行make前确保`pg_config`命令的路径在`PATH`环境变量里,例如IvorySQL安装的路径是`~/work/IvorySQL/inst`,则环境变量设置如下:
61+
62+
```bash
63+
export PGHOME=~/work/IvorySQL/inst
64+
export PGDATA=$PGHOME/data
65+
export PATH=$PGHOME/bin:$PATH
66+
```
67+
然后执行以下命令进行编译和安装:
68+
```bash
69+
make HAVE_MSGPACK=1
70+
make install
71+
```
72+
73+
== 创建Extension并确认PGroonga版本
74+
75+
76+
psql 连接到数据库的pg模式下,执行命令:
77+
```sql
78+
postgres=# CREATE extension pgroonga;
79+
CREATE EXTENSION
80+
postgres=# SELECT * FROM pg_available_extensions WHERE name = 'pgroonga';
81+
name | default_version | installed_version | comment
82+
----------+-----------------+-------------------+--------------------------------------------------------------------------------
83+
pgroonga | 4.0.4 | 4.0.4 | Super fast and all languages supported full text search index based on Groonga
84+
(1 row)
85+
86+
postgres=# select version();
87+
version
88+
--------------------------------------------------------------------------------
89+
PostgreSQL (IvorySQL 5.0) 18.0 on x86_64-linux, compiled by gcc-13.3.0, 64-bit
90+
(1 row)
91+
```
92+
93+
== 使用
94+
关于PGroonga的使用,请参阅 https://pgroonga.github.io/tutorial[PGroonga官方文档]
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
2+
:sectnums:
3+
:sectnumlevels: 5
4+
5+
= PgAudit
6+
7+
== 概述
8+
9+
PgAudit 是一个审计扩展,可以为 DDL、DML、DCL 等关键操作生成可追溯的日志记录。通过审计日志,数据库管理员能够满足合规要求、及时发现异常行为,并在出现问题时快速定位责任主体与影响范围。
10+
11+
== 功能特点
12+
13+
* *全面审计能力*:记录 `SELECT`、`INSERT`、`UPDATE`、`DELETE`、DDL 命令以及权限变更等操作,帮助构建完整的操作轨迹。
14+
* *灵活的审计维度*:支持全局审计、角色审计与对象审计,可按用户、角色、模式或具体操作类型进行精细化配置。
15+
* *平滑集成*:复用 PostgreSQL 标准日志子系统,可与 `syslog`、`logrotate` 等工具联动,兼容现有日志采集与分析方案。
16+
* *合规支撑*:提供结构化审计日志,便于生成符合金融、政企等行业规范的审计报告。
17+
* *安全增强*:通过记录和分析数据库活动,及时发现未授权访问、异常 DML 或潜在数据泄露风险。
18+
* *运维优化*:辅助回放操作行为、定位性能瓶颈,支撑 SQL 优化与问题排查。
19+
20+
== 安装部署
21+
22+
=== 环境准备
23+
24+
* 已安装的 IvorySQL 数据库。
25+
* 编译工具链:`gcc`、`make`、`tar` 等。
26+
* 数据库管理员权限,用于修改 `ivorysql.conf` 并重启数据库实例。
27+
28+
=== 编译安装 PgAudit
29+
30+
以 PgAudit 18.0 为例:
31+
32+
[source,shell]
33+
----
34+
wget https://github.com/pgaudit/pgaudit/archive/refs/tags/18.0.tar.gz
35+
tar -xf 18.0.tar.gz
36+
cd pgaudit-18.0
37+
make install USE_PGXS=1 PG_CONFIG=$PGHOME/bin/pg_config
38+
----
39+
40+
上述命令依赖环境变量 `PGHOME` 指向安装好的 IvorySQL 主目录。安装成功后,`pgaudit.so` 会被放置到 IvorySQL 的扩展目录中。
41+
42+
=== 注册扩展前的基础配置
43+
44+
修改 `ivorysql.conf`,启用插件并设置常用参数:
45+
----
46+
shared_preload_libraries = 'pgaudit' # 需实例重启生效
47+
pgaudit.log = 'read, write, ddl' # 审计范围示例,可按需调整
48+
----
49+
50+
重启数据库实例,使共享库配置生效。
51+
52+
=== 创建扩展并验证
53+
54+
[source,sql]
55+
----
56+
CREATE EXTENSION IF NOT EXISTS pgaudit;
57+
SELECT name,
58+
default_version,
59+
installed_version,
60+
comment
61+
FROM pg_available_extensions
62+
WHERE name = 'pgaudit';
63+
----
64+
65+
若返回的 `installed_version` 与期望版本一致,说明扩展安装成功。
66+
67+
== 使用
68+
69+
执行如下sql示例:
70+
71+
[source,sql]
72+
----
73+
CREATE TABLE audit_demo(id serial PRIMARY KEY, info text);
74+
INSERT INTO audit_demo(info) VALUES ('pgaudit test');
75+
SELECT * FROM audit_demo;
76+
UPDATE audit_demo SET info = 'pgaudit update' WHERE id = 1;
77+
DELETE FROM audit_demo WHERE id = 1;
78+
----
79+
80+
在数据库服务器上查看审计日志:
81+
82+
[source,shell]
83+
----
84+
tail -f $PGDATA/log/*.log | grep 'AUDIT:'
85+
----
86+
87+
[source,text]
88+
----
89+
2025-10-31 15:56:32.113 CST [11451] LOG: AUDIT: SESSION,1,1,DDL,CREATE SEQUENCE,SEQUENCE,public.audit_demo_id_seq,"CREATE TABLE audit_demo(id serial PRIMARY KEY, info text)",<not logged>
90+
2025-10-31 15:56:32.113 CST [11451] LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,TABLE,public.audit_demo,"CREATE TABLE audit_demo(id serial PRIMARY KEY, info text)",<not logged>
91+
2025-10-31 15:56:32.113 CST [11451] LOG: AUDIT: SESSION,1,1,DDL,CREATE INDEX,INDEX,public.audit_demo_pkey,"CREATE TABLE audit_demo(id serial PRIMARY KEY, info text)",<not logged>
92+
2025-10-31 15:56:32.113 CST [11451] LOG: AUDIT: SESSION,1,1,DDL,ALTER SEQUENCE,SEQUENCE,public.audit_demo_id_seq,"CREATE TABLE audit_demo(id serial PRIMARY KEY, info text)",<not logged>
93+
2025-10-31 15:56:32.117 CST [11451] LOG: AUDIT: SESSION,2,1,WRITE,INSERT,,,INSERT INTO audit_demo(info) VALUES ('pgaudit test'),<not logged>
94+
2025-10-31 15:56:32.121 CST [11451] LOG: AUDIT: SESSION,3,1,READ,SELECT,,,SELECT * FROM audit_demo,<not logged>
95+
2025-10-31 15:56:32.122 CST [11451] LOG: AUDIT: SESSION,4,1,WRITE,UPDATE,,,UPDATE audit_demo SET info = 'pgaudit update' WHERE id = 1,<not logged>
96+
2025-10-31 15:56:32.127 CST [11451] LOG: AUDIT: SESSION,5,1,WRITE,DELETE,,,DELETE FROM audit_demo WHERE id = 1,<not logged>
97+
----
98+
99+
若想记录参数的值,打开`pgaudit.log_parameter = 'on'`,效果如下:
100+
[source,text]
101+
----
102+
ivorysql=# SHOW pgaudit.log_parameter;
103+
pgaudit.log_parameter
104+
-----------------------
105+
on
106+
(1 row)
107+
----
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
:sectnums:
3+
:sectnumlevels: 5
4+
5+
= pgRouting
6+
7+
== 概述
8+
pgRouting 是一个基于 PostgreSQL/PostGIS 数据库构建的开源地理空间路由扩展库。它为数据库赋予了强大的网络分析功能,使其能够处理复杂的路径规划与图论计算问题,例如计算两点之间的最短路径、执行旅行推销员(TSP)分析或计算服务区范围等。它将路由算法直接嵌入到数据库中,从而避免了在应用层进行复杂的数据传输与计算。
9+
10+
该扩展的核心优势在于能够利用 PostgreSQL 强大的数据管理能力和 PostGIS 丰富的空间函数,直接在数据库内部对空间网络数据执行高效计算。这不仅简化了应用程序的开发流程,还通过减少数据移动大幅提升了大规模网络分析的性能。
11+
12+
pgRouting 广泛应用于物流配送、交通导航、网络分析、城市规划及供应链管理等多个领域。其开源特性吸引了全球开发者持续的贡献与完善,使其成为空间数据库领域进行路径分析和网络求解的首选工具之一。
13+
14+
== 安装
15+
16+
[TIP]
17+
环境中已经安装了IvorySQL5.0及以上版本,安装路径为/usr/local/ivorysql/ivorysql-5
18+
19+
=== 源码安装
20+
21+
** 安装依赖
22+
23+
对perl有依赖,perl一般在装IvorySQL时已经装上了,这里不用再装。
24+
CMake版本要求 >= 3.12, Boost版本 >= 1.56
25+
```
26+
#安装依赖
27+
sudo apt install cmake libboost-all-dev
28+
```
29+
30+
** 编译安装
31+
```
32+
wget https://github.com/pgRouting/pgrouting/releases/download/v3.8.0/pgrouting-3.8.0.tar.gz
33+
tar xvf pgrouting-3.8.0.tar.gz
34+
cd pgrouting-3.8.0
35+
mkdir build
36+
cd build
37+
cmake .. -DPOSTGRESQL_PG_CONFIG=/path/to/pg_config # eg: /usr/local/ivorysql/ivorysql-5/bin/pg_config
38+
make
39+
sudo make install
40+
```
41+
42+
== 创建Extension并确认ddlx版本
43+
44+
psql 连接到数据库,执行如下命令:
45+
```
46+
ivorysql=# CREATE extension pgrouting;
47+
CREATE EXTENSION
48+
49+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'pgrouting';
50+
name | default_version | installed_version | comment
51+
-----------+-----------------+-------------------+---------------------
52+
pgrouting | 3.8.0 | | pgRouting Extension
53+
(1 row)
54+
```
55+
56+
== 使用
57+
关于pgRouting的使用,请参阅 https://docs.pgrouting.org/[pgRouting官方文档]

CN/modules/ROOT/pages/master/6.4.1.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
= **功能概述**
77

8-
IvorySQL提供兼容Oracle内置函数`SYS_CONTEXT('namespace', 'parameter' [, length ])`,
8+
IvorySQL提供兼容Oracle内置函数 ```SYS_CONTEXT('namespace', 'parameter' [, length ])``` ,
99
返回当前时刻与给定上下文关联参数的值,可以在SQL和PLSQL语言中使用。
1010

1111
提供以下命名空间:
@@ -16,8 +16,8 @@ IvorySQL提供兼容Oracle内置函数`SYS_CONTEXT('namespace', 'parameter' [, l
1616

1717
== 实现原理
1818

19-
SYS_CONTEXT的实现原理是通过动态查询系统表与postgres的内置函数,确保结果的实时性,
20-
使用 SECURITY INVOKER 确保函数以调用者的权限执行,避免权限提升问题。
19+
`SYS_CONTEXT` 的实现原理是通过动态查询系统表与postgres的内置函数,确保结果的实时性,
20+
使用 `SECURITY INVOKER` 确保函数以调用者的权限执行,避免权限提升问题。
2121
该方法的实现逻辑如下:
2222
```sql
2323
CREATE OR REPLACE FUNCTION sys.sys_context(a varchar2, b varchar2)

CN/modules/ROOT/pages/master/6.4.2.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
= **功能概述**
77

8-
IvorySQL提供兼容Oracle内置函数`USERENV('parameter')`,用于返回当前会话的相关信息。
9-
这是一个遗留函数,建议使用 SYS_CONTEXT 函数及其内置的 USERENV 命名空间来获取当前功能。
8+
IvorySQL提供兼容Oracle内置函数 ```USERENV('parameter')``` ,用于返回当前会话的相关信息。
9+
这是一个遗留函数,建议使用 `SYS_CONTEXT` 函数及其内置的 `USERENV` 命名空间来获取当前功能。
1010

1111
== 实现原理
1212

EN/modules/ROOT/nav.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@
1212
** xref:master/4.4.adoc[Operation Management]
1313
** xref:master/4.5.adoc[Migration]
1414
* IvorySQL Ecosystem
15-
** xref:master/5.0.adoc[Overview]
15+
** xref:master/5.0.adoc[Overview]
1616
** xref:master/5.2.adoc[pgvector]
1717
** xref:master/5.3.adoc[pgddl(DDL Extractor)]
1818
** xref:master/5.4.adoc[pg_cron]
1919
** xref:master/5.5.adoc[pgsql-http]
2020
** xref:master/5.6.adoc[plpgsql_check]
21+
** xref:master/5.7.adoc[pgroonga]
22+
** xref:master/5.8.adoc[pgaudit]
23+
** xref:master/5.9.adoc[pgrouting]
2124
** xref:master/5.10.adoc[system_stats]
2225
* IvorySQL Architecture Design
2326
** Query Processing

EN/modules/ROOT/pages/master/5.0.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ IvorySQL, as an advanced open-source database compatible with Oracle and based o
1717
| xref:master/5.4.adoc[pg_cron]​ | 1.6.0 | Provides database-internal scheduled task scheduling functionality, supports regular SQL statement execution | Data cleanup, regular statistics, automated maintenance tasks
1818
| xref:master/5.5.adoc[pgsql-http]​ | 1.7.0 | Allows HTTP requests to be initiated in SQL, interacting with external web services | Data collection, API integration, microservice calls
1919
| xref:master/5.6.adoc[plpgsql_check] | 2.8 | Provides static analysis functionality for PL/pgSQL code, can detect potential errors during development | Stored procedure development, code quality checking, debugging and optimization
20+
| xref:master/5.7.adoc[pgroonga] | 4.0.4 | Provides full-text search functionality for non-English languages, meeting the needs of high-performance applications | Full-text search capabilities for languages like Chinese, Japanese, and Korean
2021
|====
2122

2223
These plugins have all been tested and adapted by the IvorySQL team to ensure stable operation in the IvorySQL environment. Users can select appropriate plugins based on business needs to further enhance the capabilities and flexibility of the database system.

0 commit comments

Comments
 (0)