Skip to content

Commit bde2f63

Browse files
committed
Add English documents of extension overview part and 3 extensions
1 parent ac66cac commit bde2f63

File tree

6 files changed

+277
-2
lines changed

6 files changed

+277
-2
lines changed

CN/modules/ROOT/pages/v1.17/35.adoc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11

22
:sectnums:
33
:sectnumlevels: 5
4-
:pgddl-version: 0.20
54

65
= pgddl (DDL Extractor)
76

@@ -22,7 +21,7 @@ IvorySQL的安装包里已经集成了pgddl插件,如果使用安装包安装
2221
从https://github.com/lacanoid/pgddl/releases/tag/0.20 下载pgddl-0.20.tar.gz,解压缩。
2322

2423
----
25-
cd pgddl-{pgddl-version}
24+
cd pgddl-0.20
2625
# 设置PG_CONFIG环境变量值为pg_config路径,eg:/usr/local/ivorysql/ivorysql-1/bin/pg_config
2726
make PG_CONFIG=/path/to/pg_config
2827
make PG_CONFIG=/path/to/pg_config install

EN/modules/ROOT/nav.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@
1010
** xref:v1.17/7.adoc[Developer]
1111
** xref:v1.17/8.adoc[Operation Management]
1212
* IvorySQL Ecosystem
13+
** xref:v1.17/33.adoc[Overview]
1314
** xref:v1.17/9.adoc[PostGIS]
1415
** xref:v1.17/10.adoc[pgvector]
1516
** xref:v1.17/34.adoc[PGroonga]
1617
** xref:v1.17/35.adoc[pgddl (DDL Extractor)]
1718
** xref:v1.17/36.adoc[pgRouting]
1819
** xref:v1.17/37.adoc[pg_cron]
20+
** xref:v1.17/38.adoc[pgsql-http]
21+
** xref:v1.17/39.adoc[vectorchord]
22+
** xref:v1.17/40.adoc[pgvectorscale]
1923
* List of Oracle compatible features
2024
** xref:v1.17/11.adoc[1、Ivorysql frame design]
2125
** xref:v1.17/12.adoc[2、GUC Framework]
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
:sectnums:
2+
:sectnumlevels: 5
3+
4+
5+
[discrete]
6+
== IvorySQL Ecosystem Plugin Compatibility List
7+
8+
IvorySQL, as an advanced open-source database compatible with Oracle and based on PostgreSQL, has powerful extension capabilities and supports a rich ecosystem of plugins. These plugins can help users enhance database functionality in different scenarios, including geospatial information processing, vector retrieval, full-text search, data definition extraction, and path planning. The following is a list of major plugins currently officially compatible with and supported by IvorySQL:
9+
10+
+
11+
12+
[cols="2,1,3,3"]
13+
|====
14+
|*Plugin Name*|*Version*|*Function Description*|*Use Cases*
15+
| xref:v1.17/9.adoc[PostGIS] | 3.4.0 | Provides geospatial data support for IvorySQL, including spatial indexes, spatial functions, and geographic object storage | Geographic Information Systems (GIS), map services, location data analysis
16+
| xref:v1.17/10.adoc[pgvector] | 0.8.0 | Supports vector similarity search, can be used to store and retrieve high-dimensional vector data| AI applications, image retrieval, recommendation systems, semantic search
17+
| xref:v1.17/34.adoc[PGroonga] | 4.0.1 | Provides multilingual full-text search functionality, supports ultra-fast text retrieval and fuzzy matching | Log analysis, multilingual content search, real-time search engines
18+
| xref:v1.17/35.adoc[pgddl (DDL Extractor)] | 0.20 | Extracts DDL (Data Definition Language) statements from databases, facilitating version management and migration | Database version control, CI/CD integration, structure comparison and synchronization
19+
| xref:v1.17/36.adoc[pgRouting] | 3.5.1 | Geographic data-based path planning extension, supports shortest path, traveling salesman problem and other algorithms | Logistics planning, traffic network analysis, path optimization services
20+
| xref:v1.17/37.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
21+
| xref:v1.17/38.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
22+
| xref:v1.17/39.adoc[vectorchord] | 0.5.1 | Enhances vector retrieval capabilities, provides more efficient approximate nearest neighbor search algorithms | Large-scale vector retrieval, AI inference services, similarity matching
23+
| xref:v1.17/40.adoc[pgvectorscale] | 0.8.0 | Provides sharding and distributed extension support for vector data, improving large-scale vector processing performance | Distributed vector databases, high-concurrency vector queries
24+
|====
25+
26+
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.
27+
28+
We will continue to expand and enrich the IvorySQL plugin ecosystem. Community developers are welcome to submit new plugin adaptation suggestions or code contributions. For more detailed usage methods and the latest compatible versions of each plugin, please refer to the corresponding documentation chapters for each plugin.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
:sectnums:
2+
:sectnumlevels: 5
3+
4+
= pgsql-http
5+
6+
== Overview
7+
pgsql-http is an open-source extension designed for PostgreSQL databases that allows users to initiate HTTP requests directly within the database, acting as a built-in web client. The core purpose of this extension is to bridge the gap between databases and external web services, enabling interaction with external web services and API endpoints through simple SQL function calls without relying on external applications or middleware.
8+
9+
With this extension, developers can directly retrieve network data (GET), submit data (POST/PUT), update (PATCH), or delete (DELETE) remote resources in SQL queries, triggers, or stored procedures. It provides rich functionality, including setting request headers, automatic URL encoding, sending JSON data, and parsing response status, headers, and content, greatly simplifying the process of integrating external data into database operations.
10+
11+
Typical application scenarios include: real-time retrieval of external data (such as exchange rates, weather information) and storing it in tables; automatic notification of microservices through triggers when data changes; cleaning data in the database and directly submitting it to external APIs. It provides a powerful and flexible solution for building database-centric integrated applications.
12+
13+
== Installation
14+
The pgsql-http plugin has been integrated into the IvorySQL installation package. If IvorySQL is installed using the installation package, pgsql-http can usually be used without manual installation. Other installation methods can refer to the source code installation steps below.
15+
16+
[TIP]
17+
IvorySQL 1.17 and above is already installed in the environment, with the installation path at /usr/local/ivorysql/ivorysql-1
18+
19+
=== Source Installation
20+
21+
** Install Dependencies
22+
23+
It depends on libcurl, and libcurl development files (such as libcurl4-openssl-dev) need to be installed in advance
24+
----
25+
# Install dependencies
26+
sudo apt install libcurl4-openssl-dev
27+
----
28+
29+
** Compile and Install
30+
31+
Download the 1.7.0 source package pgsql-http-1.7.0.tar.gz from https://github.com/pramsey/pgsql-http/releases/tag/v1.7.0
32+
----
33+
tar xvf pgsql-http-1.7.0.tar.gz
34+
cd pgsql-http-1.7.0
35+
# Ensure pg_config is accessible in PATH, e.g.: /usr/local/ivorysql/ivorysql-1/bin/pg_config
36+
make
37+
sudo make install
38+
----
39+
40+
== Create Extension and Confirm http Version
41+
42+
Connect to the database with psql and execute the following commands:
43+
----
44+
ivorysql=# CREATE extension http;
45+
CREATE EXTENSION
46+
47+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'http';
48+
name | default_version | installed_version | comment
49+
-----------+-----------------+-------------------+-------------------------------------------------------------------------
50+
http | 1.7 | 1.7 | HTTP client for PostgreSQL, allows web page retrieval inside the database.
51+
(1 row)
52+
----
53+
54+
== Usage
55+
For pgsql-http usage, please refer to https://github.com/pramsey/pgsql-http[pgsql-http official documentation]
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
:sectnums:
2+
:sectnumlevels: 5
3+
4+
= VectorChord
5+
6+
== Overview
7+
VectorChord is a high-performance, scalable vector search extension for PostgreSQL, considered the successor to pgvecto.rs. It is specifically designed to handle large-scale vector data, capable of efficiently storing and retrieving high-dimensional vectors with limited hardware resources, significantly reducing the storage and computational costs of vector search.
8+
9+
The extension demonstrates exceptional performance, with query speeds up to 5 times faster than pgvector and support for vectors up to 60,000 dimensions. Through innovative RaBitQ compression technology and IVF indexing, VectorChord achieves significant improvements in disk storage efficiency, claiming to store 400,000 vectors for just $1, with cost efficiency far exceeding similar services.
10+
11+
VectorChord is fully compatible with pgvector's data types and query syntax, ensuring seamless migration and integration experience. It has been successfully applied in production environments, reliably managing over 3 billion vectors, making it an ideal foundational component for building next-generation AI applications and conducting massive similarity searches.
12+
13+
== Installation
14+
Based on the development environment, users can choose the appropriate VectorChord installation method from the https://docs.vectorchord.ai/vectorchord/getting-started/installation.html[VectorChord installation] page.
15+
16+
=== Source Installation
17+
In addition to the installation methods provided by the VectorChord community, the IvorySQL community also provides source code installation methods. The source code installation environment is Ubuntu 24.04(x86_64).
18+
19+
Before compilation, ensure that clang and rust are already installed:
20+
21+
clang version requirement >= 16, including libclang;
22+
23+
rust version requirement >= 1.89, including cargo
24+
25+
[TIP]
26+
IvorySQL 1.17 and above is already installed in the environment, with the installation path at /usr/local/ivorysql/ivorysql-1
27+
28+
==== Install Clang
29+
30+
** Install clang 16 compiler and libclang development library
31+
----
32+
sudo apt update
33+
sudo apt install clang-16 libclang-16-dev
34+
----
35+
36+
** Verify Installation
37+
----
38+
$ clang-16 --version
39+
Ubuntu clang version 16.0.6 (23ubuntu4)
40+
Target: x86_64-pc-linux-gnu
41+
Thread model: posix
42+
InstalledDir: /usr/bin
43+
----
44+
45+
** Set Default Clang (Optional): Similar to GCC, you can set the default version:
46+
----
47+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 100
48+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 100
49+
----
50+
51+
** Verify Default Version
52+
----
53+
clang --version # Should display clang-16
54+
clang++ --version
55+
----
56+
57+
** Set LIBCLANG_PATH: Usually automatically set after installing libclang-16-dev, but it's best to confirm or explicitly set it
58+
----
59+
# Find the location of libclang.so (usually /usr/lib/llvm-16/lib/libclang.so.1 or similar)
60+
find /usr -name 'libclang.so*' 2>/dev/null
61+
62+
# Set environment variable
63+
export LIBCLANG_PATH=/usr/lib/llvm-16/lib # Usually setting the directory containing the file is sufficient
64+
65+
# To make it permanent, you can add the above export command to your shell configuration file (~/.bashrc or ~/.zshrc)
66+
----
67+
68+
==== Install Rust(>=1.89) and Cargo
69+
Following Vectorchord and Rust official recommendations, using rustup for installation is the best practice.
70+
Install rustup:
71+
----
72+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
73+
# After running the script, it will prompt you. Press 1 to select default installation
74+
----
75+
76+
Activate environment: After installation, you need to make the new PATH settings take effect
77+
----
78+
source "$HOME/.cargo/env" # Takes effect for current terminal session
79+
----
80+
81+
Verify installation:
82+
----
83+
rustc --version # Should output something like rustc 1.xx.x (stable version number >= 1.89)
84+
cargo --version # Should output cargo version number
85+
----
86+
87+
=== Install VectorChord
88+
89+
----
90+
# Pull vectorchord source code
91+
curl -fsSL https://github.com/tensorchord/VectorChord/archive/refs/tags/0.5.1.tar.gz | tar -xz
92+
cd VectorChord-0.5.1
93+
# Set pg_config path to PATH environment variable, e.g.:
94+
export PATH=/usr/local/ivorysql/ivorysql-1/bin/:$PATH
95+
make build
96+
make install
97+
----
98+
99+
== Configure ivorysql.conf File
100+
----
101+
# Shared preload extensions
102+
shared_preload_libraries = 'vchord'
103+
----
104+
105+
== Restart Service
106+
107+
----
108+
pg_ctl restart -D ./data -l logfile
109+
----
110+
111+
== Create Extension and Confirm VectorChord Version
112+
113+
Connect to the database with psql and execute the following commands:
114+
----
115+
ivorysql=# CREATE EXTENSION IF NOT EXISTS vchord CASCADE;
116+
CREATE EXTENSION
117+
118+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'vchord';
119+
name | default_version | installed_version | comment
120+
---------+-----------------+-------------------+--------------------------------------------------------------------------------------------
121+
vchord | 0.5.1 | 0.5.1 | vchord: Vector database plugin for Postgres, written in Rust, specifically designed for LLM
122+
(1 row)
123+
----
124+
125+
== Usage
126+
For VectorChord usage, please refer to https://docs.vectorchord.ai/vectorchord/getting-started/overview.html[VectorChord official documentation]
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
:sectnums:
2+
:sectnumlevels: 5
3+
4+
= pgvectorscale
5+
6+
== Overview
7+
pgvectorscale is a PostgreSQL extension launched by Timescale, designed to provide high-performance, cost-effective supplementation to the popular pgvector extension. It is specifically designed for large-scale vector workloads in AI applications, significantly improving the performance of vector similarity search and reducing storage costs through innovative indexing algorithms and compression techniques.
8+
9+
The core features of this extension include the new index type StreamingDiskANN based on Microsoft's DiskANN research, improved Statistical Binary Quantization (SBQ) compression methods, and vector search functionality with label filtering support. In benchmark tests, it demonstrates exceptional performance when handling large-scale embedding vectors: compared to dedicated vector database services, it can achieve up to 28x lower latency and 16x query throughput while saving approximately 75% in costs.
10+
11+
pgvectorscale is fully compatible with pgvector's data types and query syntax, ensuring seamless integration and migration experience. It is developed using Rust language and PGRX framework, making it very suitable for production-level applications that require efficient massive vector search within PostgreSQL.
12+
13+
== Installation
14+
The pgvectorscale plugin has been integrated into the IvorySQL installation package. If IvorySQL is installed using the installation package, pgvectorscale can usually be used without manual installation. Other installation methods can refer to the source code installation steps below.
15+
16+
[TIP]
17+
IvorySQL 1.17 and above is already installed in the environment, with the installation path at /usr/local/ivorysql/ivorysql-1
18+
19+
=== Source Installation
20+
21+
** Install Rust Toolchain
22+
23+
----
24+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
25+
----
26+
27+
** Download pgvectorscale Source Code
28+
29+
Download the 0.8.0 source package pgvectorscale-0.8.0.tar.gz from https://github.com/timescale/pgvectorscale/releases/tag/0.8.0
30+
----
31+
tar xvf pgvectorscale-0.8.0.tar.gz
32+
cd pgvectorscale-0.8.0/pgvectorscale
33+
----
34+
35+
** Install cargo-pgrx
36+
37+
----
38+
cargo install --locked cargo-pgrx --version $(cargo metadata --format-version 1 | jq -r '.packages[] | select(.name == "pgrx") | .version')
39+
cargo pgrx init --pg14 pg_config
40+
----
41+
42+
** Compile and Install Extension
43+
44+
----
45+
cargo pgrx install --release
46+
----
47+
48+
== Create Extension and Confirm pgvectorscale Version
49+
50+
Connect to the database with psql and execute the following commands:
51+
----
52+
ivorysql=# CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
53+
CREATE EXTENSION
54+
55+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'vectorscale';
56+
name | default_version | installed_version | comment
57+
----------- +-----------------+-------------------+--------------------------------------------
58+
vectorscale | 0.8.0 | 0.8.0 | diskann access method for vector search.
59+
(1 row)
60+
----
61+
62+
== Usage
63+
For pgvectorscale usage, please refer to https://github.com/timescale/pgvectorscale[pgvectorscale official documentation]

0 commit comments

Comments
 (0)