This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 7250faca06 [docs] Restructure table docs: rename sections and add
Multimodal Table
7250faca06 is described below
commit 7250faca063404c5724136eaef9a44817b376944
Author: JingsongLi <[email protected]>
AuthorDate: Fri May 29 22:32:24 2026 +0800
[docs] Restructure table docs: rename sections and add Multimodal Table
- Rename 'Table with PK' to 'PrimaryKey Table'
- Rename 'Table w/o PK' to 'Append Table'
- Rename 'Bucketed' to 'Bucketed Append'
- Extract Data Evolution, Blob Storage, Vector Storage, Global Index
into a new 'Multimodal Table' section
- Reorder sidebar: Append Table before PrimaryKey Table
- Move Concepts to hero links on homepage, add Spark card
- Update all cross-references and add redirects
---
docs/docs/append-table/bucketed.mdx | 2 +-
docs/docs/append-table/index.mdx | 2 +-
docs/docs/concepts/data-types.md | 2 +-
docs/docs/concepts/spec/fileformat.md | 2 +-
docs/docs/flink/procedures.md | 2 +-
docs/docs/index.mdx | 33 ++++++++-------
docs/docs/learn-paimon/scenario-guide.mdx | 8 ++--
.../{append-table => multimodal-table}/blob.mdx | 0
.../data-evolution.md | 0
.../global-index.mdx | 0
docs/docs/multimodal-table/index.mdx | 47 ++++++++++++++++++++++
.../{append-table => multimodal-table}/vector.mdx | 0
docs/docs/primary-key-table/index.md | 2 +-
docs/docs/pypaimon/blob.md | 4 +-
docs/docs/pypaimon/cli.md | 2 +-
docs/docs/pypaimon/data-evolution.md | 2 +-
docs/docs/pypaimon/global-index.md | 2 +-
docs/redirects.js | 24 +++++++++--
docs/sidebars.js | 31 +++++++++-----
docs/src/css/custom.css | 15 +++++++
20 files changed, 136 insertions(+), 44 deletions(-)
diff --git a/docs/docs/append-table/bucketed.mdx
b/docs/docs/append-table/bucketed.mdx
index aac4f02c19..eb77931e37 100644
--- a/docs/docs/append-table/bucketed.mdx
+++ b/docs/docs/append-table/bucketed.mdx
@@ -1,5 +1,5 @@
---
-title: "Bucketed"
+title: "Bucketed Append"
sidebar_position: 3
---
diff --git a/docs/docs/append-table/index.mdx b/docs/docs/append-table/index.mdx
index 2014eb336e..152cb9c648 100644
--- a/docs/docs/append-table/index.mdx
+++ b/docs/docs/append-table/index.mdx
@@ -1,5 +1,5 @@
---
-title: "Table w/o PK"
+title: "Append Table"
sidebar_position: 3
---
diff --git a/docs/docs/concepts/data-types.md b/docs/docs/concepts/data-types.md
index 39e367b46a..d8149e0c07 100644
--- a/docs/docs/concepts/data-types.md
+++ b/docs/docs/concepts/data-types.md
@@ -184,7 +184,7 @@ All data types supported by Paimon are as follows:
<td><code>BLOB</code></td>
<td><code>Data type of a binary large object.</code><br><br>
<code>Designed for storing large binary data such as images, videos,
audio files, and other multimodal data. Unlike BYTES type which stores data
inline, BLOB stores large binary data in separate files and maintains
references to them, providing better performance for large
objects.</code><br><br>
- <code>Note: Requires 'row-tracking.enabled' and
'data-evolution.enabled' to be set to true. See <a
href="../append-table/blob">Blob Type</a> for details.</code>
+ <code>Note: Requires 'row-tracking.enabled' and
'data-evolution.enabled' to be set to true. See <a
href="../multimodal-table/blob">Blob Type</a> for details.</code>
</td>
</tr>
</tbody>
diff --git a/docs/docs/concepts/spec/fileformat.md
b/docs/docs/concepts/spec/fileformat.md
index a38a667cbb..c458efe448 100644
--- a/docs/docs/concepts/spec/fileformat.md
+++ b/docs/docs/concepts/spec/fileformat.md
@@ -803,4 +803,4 @@ Limitations:
2. BLOB format does not support predicate pushdown.
3. Statistics collection is not supported for BLOB columns.
-For usage details, configuration options, and examples, see [Blob
Type](../../append-table/blob).
+For usage details, configuration options, and examples, see [Blob
Type](../../multimodal-table/blob).
diff --git a/docs/docs/flink/procedures.md b/docs/docs/flink/procedures.md
index adb8ca35b7..1f925a54d5 100644
--- a/docs/docs/flink/procedures.md
+++ b/docs/docs/flink/procedures.md
@@ -342,7 +342,7 @@ All available procedures are listed below.
matched_update_set => 'matchedUpdateSet',<br/>
sink_parallelism => sinkParallelism) <br/><br/>
</td>
- <td>To perform "MERGE INTO" syntax specially implemented for
data-evolution tables. Please see <a
href="/docs/master/append-table/data-evolution/">data evolution</a> for more
information. </td>
+ <td>To perform "MERGE INTO" syntax specially implemented for
data-evolution tables. Please see <a
href="/docs/master/multimodal-table/data-evolution/">data evolution</a> for
more information. </td>
<td>
-- for Flink 1.18<br/>
CALL [catalog].sys.data_evolution_merge_into('default.T', '', '',
'S', 'T.id=S.id', 'name=S.name', 2) <br/><br/>
diff --git a/docs/docs/index.mdx b/docs/docs/index.mdx
index 0eb7428d24..1561cfa3f3 100644
--- a/docs/docs/index.mdx
+++ b/docs/docs/index.mdx
@@ -31,6 +31,9 @@ under the License.
<p className="hero-subtitle">
Data Lake Platform โ unified batch, streaming, and multimodal AI in a single
lake format.
</p>
+<p className="hero-links">
+<a href="concepts/">Concepts</a> ยท <a
href="maintenance/configurations">Configurations</a> ยท <a
href="project/download">Download</a>
+</p>
</div>
<div className="feature-columns">
@@ -41,27 +44,27 @@ Data Lake Platform โ unified batch, streaming, and
multimodal AI in a single l
<div className="feature-column-desc">Petabyte-scale tables with time travel,
fast scan planning, schema evolution, and incremental clustering.</div>
</div>
-<a className="nav-card" href="concepts/">
- <div className="nav-card-icon">๐</div>
+<a className="nav-card" href="append-table/">
+ <div className="nav-card-icon">๐</div>
<div className="nav-card-body">
- <h3>Concepts</h3>
- <p>Core architecture, data types, catalogs, and system tables</p>
+ <h3>Append Table</h3>
+ <p>Append-only tables, incremental clustering, and streaming append</p>
</div>
</a>
-<a className="nav-card" href="append-table/">
- <div className="nav-card-icon">๐</div>
+<a className="nav-card" href="spark/quick-start">
+ <div className="nav-card-icon">โจ</div>
<div className="nav-card-body">
- <h3>Table w/o PK</h3>
- <p>Append-only tables, incremental clustering, blob & vector support</p>
+ <h3>Spark</h3>
+ <p>Quick start, SQL operations, DataFrames, structured streaming</p>
</div>
</a>
-<a className="nav-card" href="maintenance/configurations">
+<a className="nav-card" href="maintenance/">
<div className="nav-card-icon">โ๏ธ</div>
<div className="nav-card-body">
<h3>Maintenance</h3>
- <p>Configuration, snapshots, tags, metrics, and performance tuning</p>
+ <p>Snapshots, tags, metrics, compaction, and performance tuning</p>
</div>
</a>
@@ -76,7 +79,7 @@ Data Lake Platform โ unified batch, streaming, and multimodal
AI in a single l
<a className="nav-card" href="primary-key-table/">
<div className="nav-card-icon">๐</div>
<div className="nav-card-body">
- <h3>Table with PK</h3>
+ <h3>PrimaryKey Table</h3>
<p>Merge engines, changelog producers, compaction, and streaming
updates</p>
</div>
</a>
@@ -105,11 +108,11 @@ Data Lake Platform โ unified batch, streaming, and
multimodal AI in a single l
<div className="feature-column-desc">Vector search, full-text search, blob
tables, and native Python SDK for ML pipelines.</div>
</div>
-<a className="nav-card" href="spark/quick-start">
- <div className="nav-card-icon">โจ</div>
+<a className="nav-card" href="multimodal-table/">
+ <div className="nav-card-icon">๐งฉ</div>
<div className="nav-card-body">
- <h3>Spark</h3>
- <p>Quick start, SQL operations, DataFrames, structured streaming</p>
+ <h3>Multimodal Table</h3>
+ <p>Data evolution, blob storage, vector storage, and global index</p>
</div>
</a>
diff --git a/docs/docs/learn-paimon/scenario-guide.mdx
b/docs/docs/learn-paimon/scenario-guide.mdx
index 7eb6ed19e6..333c91689a 100644
--- a/docs/docs/learn-paimon/scenario-guide.mdx
+++ b/docs/docs/learn-paimon/scenario-guide.mdx
@@ -338,7 +338,7 @@ See [Bucketed
Streaming](../append-table/bucketed#bucketed-streaming).
Paimon is a multimodal lakehouse for AI. You can keep multimodal data,
metadata, and embeddings in the same table and
query them via vector search, full-text search, or SQL. All multimodal
features are built on top of Append Tables with
-[Data Evolution](../append-table/data-evolution) mode enabled.
+[Data Evolution](../multimodal-table/data-evolution) mode enabled.
### Scenario 8: Storing Multimodal Data (Blob Table)
@@ -383,7 +383,7 @@ CREATE TABLE image_table (
</Tabs>
-**Why:** The [Blob Storage](../append-table/blob) separates large binary data
into dedicated `.blob` files
+**Why:** The [Blob Storage](../multimodal-table/blob) separates large binary
data into dedicated `.blob` files
while metadata stays in standard columnar files (Parquet/ORC). This means:
- `SELECT id, name, label FROM image_table` does **not** load any blob data โ
very fast.
@@ -470,7 +470,7 @@ SELECT * FROM vector_search('doc_embeddings', 'embedding',
array(0.1f, 0.2f, ...
The legacy index type `lumina-vector-ann` is still accepted for existing
tables and SQL compatibility.
-**Why:** The [Global Index](../append-table/global-index) with DiskANN
provides high-performance ANN search.
+**Why:** The [Global Index](../multimodal-table/global-index) with DiskANN
provides high-performance ANN search.
Vector data is stored in dedicated `.vector.lance` files optimized for dense
vectors, while scalar columns stay in
Parquet. You can also build a **BTree Index** on scalar columns for efficient
filtering:
@@ -518,7 +518,7 @@ ON t.user_id = s.user_id
WHEN MATCHED THEN UPDATE SET t.embedding = s.embedding;
```
-**Why:** [Data Evolution](../append-table/data-evolution) mode writes only the
updated columns to new files
+**Why:** [Data Evolution](../multimodal-table/data-evolution) mode writes only
the updated columns to new files
and merges them at read time. This is ideal for:
- Adding new feature columns and backfilling data without rewriting the entire
table.
diff --git a/docs/docs/append-table/blob.mdx
b/docs/docs/multimodal-table/blob.mdx
similarity index 100%
rename from docs/docs/append-table/blob.mdx
rename to docs/docs/multimodal-table/blob.mdx
diff --git a/docs/docs/append-table/data-evolution.md
b/docs/docs/multimodal-table/data-evolution.md
similarity index 100%
rename from docs/docs/append-table/data-evolution.md
rename to docs/docs/multimodal-table/data-evolution.md
diff --git a/docs/docs/append-table/global-index.mdx
b/docs/docs/multimodal-table/global-index.mdx
similarity index 100%
rename from docs/docs/append-table/global-index.mdx
rename to docs/docs/multimodal-table/global-index.mdx
diff --git a/docs/docs/multimodal-table/index.mdx
b/docs/docs/multimodal-table/index.mdx
new file mode 100644
index 0000000000..4e0f42a387
--- /dev/null
+++ b/docs/docs/multimodal-table/index.mdx
@@ -0,0 +1,47 @@
+---
+title: "Multimodal Table"
+sidebar_position: 4
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Overview
+
+Multimodal Table extends the Append Table with capabilities for storing and
querying multimodal data โ images, videos,
+audio, vectors, and full-text content โ all within a single table. It is built
on top of the
+[Data Evolution](./data-evolution) mode, which enables efficient partial
column updates and schema evolution without
+rewriting entire data files.
+
+Key capabilities:
+
+- **[Data Evolution](./data-evolution)**: Update partial columns without
rewriting entire files, enabling efficient schema evolution.
+- **[Blob Storage](./blob)**: Store large binary objects (images, videos,
audio) in dedicated `.blob` files with efficient column projection.
+- **[Vector Storage](./vector)**: Store and manage vector embeddings in
dedicated Vortex-format files optimized for vector workloads.
+- **[Global Index](./global-index)**: Build BTree, vector (DiskANN), and
full-text (Tantivy) indexes for efficient lookups and similarity search.
+
+All multimodal features require the following table properties:
+
+```sql
+'row-tracking.enabled' = 'true',
+'data-evolution.enabled' = 'true'
+```
diff --git a/docs/docs/append-table/vector.mdx
b/docs/docs/multimodal-table/vector.mdx
similarity index 100%
rename from docs/docs/append-table/vector.mdx
rename to docs/docs/multimodal-table/vector.mdx
diff --git a/docs/docs/primary-key-table/index.md
b/docs/docs/primary-key-table/index.md
index a912bc6ac7..ec48c1277e 100644
--- a/docs/docs/primary-key-table/index.md
+++ b/docs/docs/primary-key-table/index.md
@@ -1,5 +1,5 @@
---
-title: "Table with PK"
+title: "PrimaryKey Table"
sidebar_position: 2
---
diff --git a/docs/docs/pypaimon/blob.md b/docs/docs/pypaimon/blob.md
index dee0b9d624..9147a96873 100644
--- a/docs/docs/pypaimon/blob.md
+++ b/docs/docs/pypaimon/blob.md
@@ -24,7 +24,7 @@ under the License.
# Blob Storage in pypaimon
For Paimon's Blob storage concepts (storage modes, table options, SQL usage,
-Java API), see [Blob Storage](../append-table/blob).
+Java API), see [Blob Storage](../multimodal-table/blob).
This page covers the Python API for reading and writing BLOB columns.
@@ -148,7 +148,7 @@ header). This mirrors Java's `Blob.fromBytes(...)`.
## See Also
-- [Blob Storage](../append-table/blob) โ concept, storage modes,
+- [Blob Storage](../multimodal-table/blob) โ concept, storage modes,
SQL/Java API
- [Data Evolution](./data-evolution) โ required for
blob tables
diff --git a/docs/docs/pypaimon/cli.md b/docs/docs/pypaimon/cli.md
index f7afc2972c..7434c7ae6d 100644
--- a/docs/docs/pypaimon/cli.md
+++ b/docs/docs/pypaimon/cli.md
@@ -461,7 +461,7 @@ Output:
4 Data lake platforms like Paimon handle large-...
```
-**Note:** The table must have a Tantivy full-text index built on the target
column. See [Global Index](../append-table/global-index) for how to create
full-text indexes.
+**Note:** The table must have a Tantivy full-text index built on the target
column. See [Global Index](../multimodal-table/global-index) for how to create
full-text indexes.
### Table Drop
diff --git a/docs/docs/pypaimon/data-evolution.md
b/docs/docs/pypaimon/data-evolution.md
index c20f438800..2ce89d2314 100644
--- a/docs/docs/pypaimon/data-evolution.md
+++ b/docs/docs/pypaimon/data-evolution.md
@@ -25,7 +25,7 @@ under the License.
# Data Evolution
-PyPaimon for Data Evolution mode. See [Data
Evolution](../append-table/data-evolution).
+PyPaimon for Data Evolution mode. See [Data
Evolution](../multimodal-table/data-evolution).
## Prerequisites
diff --git a/docs/docs/pypaimon/global-index.md
b/docs/docs/pypaimon/global-index.md
index 37e5f8032b..796a834f5f 100644
--- a/docs/docs/pypaimon/global-index.md
+++ b/docs/docs/pypaimon/global-index.md
@@ -30,7 +30,7 @@ PyPaimon supports querying global indexes built on Data
Evolution (append) table
- **Vector Index (Lumina)**: Approximate nearest neighbor (ANN) index for
vector similarity search.
- **Full-Text Index (Tantivy)**: Full-text search index for text retrieval
with relevance scoring.
-> Global indexes must be built beforehand (e.g., via Spark or Flink). See
[Global Index](../append-table/global-index) for how to create indexes.
+> Global indexes must be built beforehand (e.g., via Spark or Flink). See
[Global Index](../multimodal-table/global-index) for how to create indexes.
## BTree Index
diff --git a/docs/redirects.js b/docs/redirects.js
index 3e37353c9f..d3facf9b7b 100644
--- a/docs/redirects.js
+++ b/docs/redirects.js
@@ -2,7 +2,11 @@
module.exports = [
{
"from": "/append-table/blob-storage.html",
- "to": "/append-table/blob"
+ "to": "/multimodal-table/blob"
+ },
+ {
+ "from": "/append-table/blob",
+ "to": "/multimodal-table/blob"
},
{
"from": "/append-table/bucketed.html",
@@ -10,11 +14,19 @@ module.exports = [
},
{
"from": "/append-table/data-evolution.html",
- "to": "/append-table/data-evolution"
+ "to": "/multimodal-table/data-evolution"
+ },
+ {
+ "from": "/append-table/data-evolution",
+ "to": "/multimodal-table/data-evolution"
},
{
"from": "/append-table/global-index.html",
- "to": "/append-table/global-index"
+ "to": "/multimodal-table/global-index"
+ },
+ {
+ "from": "/append-table/global-index",
+ "to": "/multimodal-table/global-index"
},
{
"from": "/append-table/incremental-clustering.html",
@@ -26,7 +38,11 @@ module.exports = [
},
{
"from": "/append-table/vector-storage.html",
- "to": "/append-table/vector"
+ "to": "/multimodal-table/vector"
+ },
+ {
+ "from": "/append-table/vector",
+ "to": "/multimodal-table/vector"
},
{
"from": "/cdc-ingestion/flink-cdc.html",
diff --git a/docs/sidebars.js b/docs/sidebars.js
index d6f35bec72..2f57348cd4 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -57,7 +57,21 @@ const sidebars = {
},
{
type: "category",
- "label": "Table with PK",
+ "label": "Append Table",
+ "collapsed": true,
+ "link": {
+ type: "doc",
+ "id": "append-table/index"
+ },
+ "items": [
+ "append-table/incremental-clustering",
+ "append-table/bucketed",
+ "append-table/row-tracking"
+ ]
+ },
+ {
+ type: "category",
+ "label": "PrimaryKey Table",
"collapsed": true,
"link": {
type: "doc",
@@ -90,20 +104,17 @@ const sidebars = {
},
{
type: "category",
- "label": "Table w/o PK",
+ "label": "Multimodal Table",
"collapsed": true,
"link": {
type: "doc",
- "id": "append-table/index"
+ "id": "multimodal-table/index"
},
"items": [
- "append-table/incremental-clustering",
- "append-table/bucketed",
- "append-table/row-tracking",
- "append-table/data-evolution",
- "append-table/blob",
- "append-table/vector",
- "append-table/global-index"
+ "multimodal-table/data-evolution",
+ "multimodal-table/blob",
+ "multimodal-table/vector",
+ "multimodal-table/global-index"
]
},
{
diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css
index 618ae52f39..32f34dd984 100644
--- a/docs/src/css/custom.css
+++ b/docs/src/css/custom.css
@@ -50,6 +50,21 @@
line-height: 1.5;
}
+.hero-links {
+ margin: 0.6rem auto 0;
+ font-size: 0.95rem;
+}
+
+.hero-links a {
+ color: var(--ifm-color-primary);
+ text-decoration: none;
+ font-weight: 500;
+}
+
+.hero-links a:hover {
+ text-decoration: underline;
+}
+
/* ===== Feature Columns ===== */
.feature-columns {
display: grid;