This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-doc.git
The following commit(s) were added to refs/heads/master by this push:
new c7c457a1 docs: add toplingdb related docs & enable blog module (#420)
c7c457a1 is described below
commit c7c457a1a4f5e6d708c3dd5556075004379ae92d
Author: Guangyang Deng <[email protected]>
AuthorDate: Mon Oct 20 19:36:16 2025 +0800
docs: add toplingdb related docs & enable blog module (#420)
* doc: update desc of open_http
* doc: update blog docs
* chore: fix error link
* chore: fix typo
* doc: add background explanation for mem_cap
* Apply suggestions from code review
* Update ToplingDB section in HugeGraph server docs
Merged ToplingDB with RocksDB as a high-performance alternative in both
Chinese and English quickstart guides. Updated section order and references,
and removed redundant ToplingDB configuration details to streamline
documentation.
---------
Co-authored-by: imbajin <[email protected]>
---
.github/workflows/auto-pr-review.yml | 35 +++
config.toml | 10 +-
content/cn/blog/_index.md | 10 +-
content/cn/blog/computing/_index.md | 5 +
content/cn/blog/hugegraph-ai/_index.md | 5 +
content/cn/blog/hugegraph/_index.md | 5 +
content/cn/blog/hugegraph/toplingdb/_index.md | 5 +
.../toplingdb/toplingdb-configuration-yaml.md | 280 ++++++++++++++++++++
.../hugegraph/toplingdb/toplingdb-quick-start.md | 153 +++++++++++
.../images/images-server/toplingdb-web-server.png | Bin 0 -> 176351 bytes
.../images/images-server/toplingdb-yaml-ref.png | Bin 0 -> 99021 bytes
content/cn/blog/news/_index.md | 8 -
.../blog/news/first-post/featured-sunset-get.png | Bin 387442 -> 0 bytes
content/cn/blog/news/first-post/index.md | 46 ----
content/cn/blog/news/second-post.md | 245 ------------------
content/cn/blog/releases/_index.md | 8 -
.../releases/in-depth-monoliths-detailed-spec.md | 245 ------------------
content/cn/blog/toolchain/_index.md | 5 +
content/cn/docs/config/config-option.md | 6 +-
.../hugegraph-server-idea-setup.md | 5 +
.../docs/quickstart/hugegraph/hugegraph-server.md | 8 +-
content/en/blog/_index.md | 10 +-
content/en/blog/computing/_index.md | 5 +
content/en/blog/hugegraph-ai/_index.md | 5 +
content/en/blog/hugegraph/_index.md | 5 +
content/en/blog/hugegraph/toplingdb/_index.md | 5 +
.../toplingdb/toplingdb-configuration-yaml.md | 285 +++++++++++++++++++++
.../hugegraph/toplingdb/toplingdb-quick-start.md | 140 ++++++++++
.../images/images-server/toplingdb-web-server.png | Bin 0 -> 176351 bytes
.../images/images-server/toplingdb-yaml-ref.png | Bin 0 -> 99021 bytes
content/en/blog/news/_index.md | 8 -
.../blog/news/first-post/featured-sunset-get.png | Bin 387442 -> 0 bytes
content/en/blog/news/first-post/index.md | 46 ----
content/en/blog/news/second-post.md | 245 ------------------
content/en/blog/releases/_index.md | 8 -
.../releases/in-depth-monoliths-detailed-spec.md | 245 ------------------
content/en/blog/toolchain/_index.md | 5 +
content/en/docs/config/config-option.md | 6 +-
.../hugegraph-server-idea-setup.md | 7 +-
.../docs/quickstart/hugegraph/hugegraph-server.md | 57 ++++-
40 files changed, 1038 insertions(+), 1128 deletions(-)
diff --git a/.github/workflows/auto-pr-review.yml
b/.github/workflows/auto-pr-review.yml
new file mode 100644
index 00000000..6a585355
--- /dev/null
+++ b/.github/workflows/auto-pr-review.yml
@@ -0,0 +1,35 @@
+# 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.
+
+name: "Auto PR Commenter"
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ add-review-comment:
+ runs-on: ubuntu-latest
+ permissions:
+ pull-requests: write
+ steps:
+ - name: Add review comment
+ uses: peter-evans/create-or-update-comment@v4
+ with:
+ issue-number: ${{ github.event.pull_request.number }}
+ body: |
+ @codecov-ai-reviewer review
diff --git a/config.toml b/config.toml
index b56a4f9f..6ab8a349 100644
--- a/config.toml
+++ b/config.toml
@@ -35,11 +35,11 @@ enable = true
pre = "<i class='fas fa-book pr-2'></i>"
url = "/docs/"
[[menu.main]]
- name = "Blog"
- weight = 100
- hidden = true
- #pre = "<i class='fas fa-rss pr-2'></i>"
- #url = "https://blog.kubeflow.org/"
+ name = "Blog Posts"
+ weight = -100
+ hidden = false
+ pre = "<i class='fas fa-book pr-2'></i>"
+ url = "/blog/"
[[menu.main]]
name = "GitHub"
weight = -99
diff --git a/content/cn/blog/_index.md b/content/cn/blog/_index.md
index 43820eb1..82d54cf5 100644
--- a/content/cn/blog/_index.md
+++ b/content/cn/blog/_index.md
@@ -1,13 +1,17 @@
---
-title: "Docsy Blog"
+title: "Blog"
linkTitle: "Blog"
menu:
main:
weight: 30
---
+欢迎阅读 HugeGraph 博客!
-This is the **blog** section. It has two categories: News and Releases.
+这里汇集了 HugeGraph 生态的技术文章、最佳实践和社区动态:
-Files in these directories will be listed in reverse chronological order.
+- **HugeGraph (OLTP)**: 图数据库核心功能、性能优化、存储引擎等
+- **HugeGraph-AI**: AI 与图计算结合的应用案例
+- **HugeGraph Computing (OLAP)**: 大规模图计算和分析实践
+探索更多内容,提升您的图数据库使用体验!
diff --git a/content/cn/blog/computing/_index.md
b/content/cn/blog/computing/_index.md
new file mode 100644
index 00000000..068e1956
--- /dev/null
+++ b/content/cn/blog/computing/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph Computing (OLAP)"
+linkTitle: "HugeGraph Computing (OLAP)"
+weight: 4
+---
diff --git a/content/cn/blog/hugegraph-ai/_index.md
b/content/cn/blog/hugegraph-ai/_index.md
new file mode 100644
index 00000000..4653a368
--- /dev/null
+++ b/content/cn/blog/hugegraph-ai/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph-AI"
+linkTitle: "HugeGraph-AI"
+weight: 3
+---
diff --git a/content/cn/blog/hugegraph/_index.md
b/content/cn/blog/hugegraph/_index.md
new file mode 100644
index 00000000..8d57d3f7
--- /dev/null
+++ b/content/cn/blog/hugegraph/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph (OLTP)"
+linkTitle: "HugeGraph (OLTP)"
+weight: 1
+---
diff --git a/content/cn/blog/hugegraph/toplingdb/_index.md
b/content/cn/blog/hugegraph/toplingdb/_index.md
new file mode 100644
index 00000000..5adcbf96
--- /dev/null
+++ b/content/cn/blog/hugegraph/toplingdb/_index.md
@@ -0,0 +1,5 @@
+---
+title: "ToplingDB"
+linkTitle: "ToplingDB"
+weight: 1
+---
diff --git
a/content/cn/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
b/content/cn/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
new file mode 100644
index 00000000..33561ec4
--- /dev/null
+++ b/content/cn/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
@@ -0,0 +1,280 @@
+---
+date: 2025-09-30
+title: "ToplingDB YAML configuration file"
+linkTitle: "ToplingDB的YAML配置文件"
+---
+
+RocksDB 提供了丰富的参数配置,但大多数情况下,这些配置需要通过硬编码完成。
+
+[ToplingDB](https://github.com/topling/toplingdb) 在此基础上引入了 **SidePlugin +
YAML** 的方式,使得配置更加模块化和可组合。
+
+本文重点介绍 **ToplingDB 扩展参数** 的部分,帮助读者理解这些配置的意义。
+
+## 术语说明
+
+- **MemTable**: LSM-Tree 在内存中的可写数据结构,接收新写入的数据
+- **SST (Sorted String Table)**: Memtable 持久化到磁盘后生成的有序键值对文件
+- **Flush**: 将 MemTable 数据写入磁盘生成 SST 的过程
+- **Compaction**: 合并多个 SST 文件以优化存储和查询性能的过程
+- **L0, L1, ... L6**: LSM-Tree 的不同层级,数字越大层级越深
+
+## 0. HugeGraph 中提供的rocksdb_plus.yaml
+
+下文只包括HugeGraph中所使用的配置参数,ToplingDB支持的完整配置请参考:[SidePlugin
Wiki](https://github.com/topling/sideplugin-wiki-en/wiki)
+
+```yaml
+http: # Web Server 相关配置
+ # normally parent path of db path
+ document_root: /dev/shm/rocksdb_resource # 静态资源目录,
HugeGraph中通过`preload_topling.sh`进行静态资源提取
+ listening_ports: '127.0.0.1:2011' # Web Server监听端口,用于管理/监控 如端口被占用,请改为其他端口,例如
2012 或 2013
+setenv: # 环境变量设置
+ StrSimpleEnvNameNotOverwrite: StringValue
+ IntSimpleEnvNameNotOverwrite: 16384
+ OverwriteThisEnv:
+ #comment: overwrite is default to false
+ overwrite: true
+ value: force overwrite this env by overwrite true
+Cache: # Cache 相关配置
+ lru_cache: # 定义一个 LRU 缓存实例
+ class: LRUCache
+ params:
+ capacity: 8G # 缓存容量 8GB
+ num_shard_bits: -1 # 分片数量,-1 表示自动
+ strict_capacity_limit: false
+ high_pri_pool_ratio: 0.5
+ use_adaptive_mutex: false
+ metadata_charge_policy: kFullChargeCacheMetadata # 元数据也计入缓存容量
+Statistics: # 数据采样配置
+ stat:
+ class: default
+ params:
+ discard_tickers: # 丢弃的统计计数器,减少开销
+ - rocksdb.block.cache
+ - rocksdb.block.cachecompressed
+ - rocksdb.block
+ - rocksdb.memtable.payload.bytes.at.flush
+ - rocksdb.memtable.garbage.bytes.at.flush
+ - rocksdb.txn
+ - rocksdb.blobdb
+ - rocksdb.row.cache
+ - rocksdb.number.block
+ - rocksdb.bloom.filter
+ - rocksdb.persistent
+ - rocksdb.sim.block.cache
+ discard_histograms: # 丢弃的直方图统计项
+ # comment: ....
+ - rocksdb.blobdb
+ - rocksdb.bytes.compressed
+ - rocksdb.bytes.decompressed
+ - rocksdb.num.index.and.filter.blocks.read.per.level
+ - rocksdb.num.data.blocks.read.per.level
+ - rocksdb.compression.times.nanos
+ - rocksdb.decompression.times.nanos
+ - rocksdb.read.block.get.micros
+ - rocksdb.write.raw.block.micros
+ # comment end of array
+ #stats_level: kAll
+ stats_level: kDisableAll # 禁用所有统计
+MemTableRepFactory: # 内存中 memtable 的实现
+ cspp: # ToplingDB 独有的高并发内存结构
+ class: cspp
+ params:
+ mem_cap: 16G # 预分配足够的单块内存地址空间,这些内存可以只是保留地址空间,但并未实际分配
对物理内存并无要求,只是为CSPP保留虚拟内存空间
+ use_vm: false
+ token_use_idle: true
+ chunk_size: 16K # 内部分配粒度
+ convert_to_sst: kFileMmap # 直接将 MemTable 转化为 SST,省去
Flush,可选值:{kDontConvert, kDumpMem, kFileMmap}
+ sync_sst_file: false # convert_to_sst 为 kFileMmap 时,SST 转化完成后是否执行 fsync
+ skiplist: # RocksDB 默认的跳表结构
+ class: SkipList
+ params:
+ lookahead: 0
+TableFactory:
+ cspp_memtab_sst:
+ class: CSPPMemTabTable # 与 cspp 配套的 TableFactory
+ params: # empty params
+ bb:
+ class: BlockBasedTable # RocksDB 默认的块表
+ params:
+ checksum: kCRC32c
+ block_size: 4K
+ block_restart_interval: 16
+ index_block_restart_interval: 1
+ metadata_block_size: 4K
+ enable_index_compression: true
+ block_cache: "${lru_cache}" # 使用上面定义的 LRU 缓存
+ block_cache_compressed:
+ persistent_cache:
+ filter_policy:
+ dispatch:
+ class: DispatcherTable
+ params:
+ default: bb # 默认使用 BlockBasedTable
+ readers:
+ BlockBasedTable: bb
+ CSPPMemTabTable: cspp_memtab_sst
+ level_writers: [ bb, bb, bb, bb, bb, bb ] # 支持自定义各层写入策略
+CFOptions:
+ default:
+ max_write_buffer_number: 6
+ memtable_factory: "${cspp}" # 引用上方定义的cspp,使用 cspp 作为 MemTable
+ write_buffer_size: 128M
+ # set target_file_size_base as small as 512K is to make many SST files,
+ # thus key prefix cache can present efficiency
+ target_file_size_base: 64M
+ target_file_size_multiplier: 1
+ table_factory: dispatch # 引用上方定义的 dispatch, 使用 DispatcherTable Class
+ max_bytes_for_level_base: 512M
+ max_bytes_for_level_multiplier: 10
+ level_compaction_dynamic_level_bytes: false
+ level0_slowdown_writes_trigger: 20
+ level0_stop_writes_trigger: 36
+ level0_file_num_compaction_trigger: 2
+ merge_operator: uint64add # support merge
+ level_compaction_dynamic_file_size: true
+ optimize_filters_for_hits: true
+ allow_merge_memtables: true
+ min_write_buffer_number_to_merge: 2
+ compression_per_level:
+ - kNoCompression
+ - kNoCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+DBOptions:
+ dbo:
+ create_if_missing: true
+ create_missing_column_families: false # this is important, must be false
to hugegraph
+ max_background_compactions: -1
+ max_subcompactions: 4
+ max_level1_subcompactions: 0
+ inplace_update_support: false
+ WAL_size_limit_MB: 0
+ statistics: "${stat}" # 使用上面定义的统计配置
+ max_manifest_file_size: 100M
+ max_background_jobs: 8 # 设置flush和compaction线程总数 建议设置为 (cpu核数 / 2)
+ compaction_readahead_size: 0
+ memtable_as_log_index: true # 此配置结合 convert_to_sst: kFileMmap 可实现[omit L0
Flush](https://github.com/topling/toplingdb/wiki/Omit-L0-Flush)
+
+```
+
+**关键要点**:
+
+- `listening_ports: '127.0.0.1:2011'` 指定Web Server监听端口为2011,并且仅允许本地访问
+- `memtable_as_log_index: true` 与 `convert_to_sst: kFileMmap` 结合实现[omit L0
Flush](https://github.com/topling/toplingdb/wiki/Omit-L0-Flush)
+- `memtable_factory: "${cspp}"` 指定了内存结构采用`CSPP Memtable`
+- `table_factory: dispatch` 指定了TableFactory使用YAML中自定义的`DispatcherTable`结构
+
+## 1. 插件化配置与引用机制
+
+- **YAML 插件化**:配置文件以对象形式组织,每个对象可以单独定义并在其他地方引用。
+- **引用语法**:通过 `${lru_cache}`、`${cspp}` 等方式在不同段落复用对象。
+- **DispatcherTable**:允许在不同层级或场景下选择不同的 TableFactory。RocksDB 原生只能指定单一
TableFactory。
+
+ToplingDB YAML 引用与复用图示:
+
+<div style="text-align: center;">
+ <img src="/blog/images/images-server/toplingdb-yaml-ref.png" alt="image"
width="800">
+</div>
+
+这种机制使得配置更灵活,便于在复杂场景下组合不同组件。
+
+## 2. 新的 MemTable 实现:CSPP
+
+ToplingDB 提供了一个 RocksDB 原生没有的 MemTable 类型,通过以下参数配置:
+
+### mem_cap
+
+`mem_cap` 是指在内存地址空间中,为 CSPP 预留的空间大小,这些内存可以只是**保留地址空间,并未实际分配的**。
+`mem_cap` 真正占用的内存大小约为 `write_buffer_size` 。
+
+#### mem_cap 设计背景
+
+CSPP 的底层算法为了支持高并发写入,采用了预分配内存的策略。
+当预分配的内存被写满时,新的写入操作将无法继续。
+然而,RocksDB 本身缺乏一种机制,使得 memtable 能够主动反馈 '预分配内存已满,需要切换到新的 memtable' 。
+由于其函数调用链路复杂,难以通过重构来实现这一机制,因此 `CSPP` 只能通过参数设计来适配 RocksDB 的行为。
+
+#### mem_cap 核心思路
+
+ToplingDB 将 `mem_cap` 设置为远大于 `write_buffer_size`,从而避免 RocksDB 在向 Memtable
写入时过早触发“内存已满”的错误。
+在 CSPP 初始化(New)时,会再次检查,如果发现 `mem_cap` 设置过小,则会自动调整为 `2 *
write_buffer_size`,以确保写入过程的稳定性。
+
+`mem_cap` 默认值为 2G,有效最大值为 16G。
+
+- 小型部署(< 16GB 内存): 建议设置为系统内存的 20-30%
+- 中型部署(16-64GB 内存): 建议设置为 8-16G
+- 大型部署(> 64GB 内存): 建议设置为 16G
+
+### use_vm
+
+在使用 malloc/posix_memalign 分配内存时,地址空间可能是已经实际分配的(位于堆空间中,已有对应的物理页面),而 CSPP
在分配时只需要获得保留的地址空间。
+`use_vm` 选项为 `true` 时会强制使用 `mmap` 分配内存,从而保证分配的一定时是保留地址空间,但并不实际占用物理页面。
+`use_vm` 默认值为 `true`。如果用户物理内存空间充足,建议关闭此选项,`mmap`
分配的虚拟内存空间在建立对物理地址的映射时会触发大量minor page fault,可能会影响性能。
+
+### convert_to_sst
+
+`convert_to_sst` 支持以下三种枚举值:
+
+- `kDontConvert`: 禁用该功能,为默认值。使用传统的 Flush 流程,兼容性最好,适合对稳定性要求高的场景
+- `kDumpMem`: 转化时将 MemTable 的整块内存写入 SST 文件,避免 CPU 消耗,但未降低内存消耗
+- `kFileMmap`: 将 MemTable 内容 mmap 到文件,这是关键功能,同时降低 CPU 和内存消耗,可同时将
DBOptions.memtable_as_log_index 设为 true 从本质上消除 MemTable Flush
+
+这些参数为数据写入路径提供了更多可调节空间,用户可按需选择。
+
+更多设计细节请参考 ToplingDB
作者的撰写的相关博客:[cspp-memtable](https://github.com/topling/cspp-memtable/blob/memtable_as_log_index/README_EN.md),
[ToplingDB CSPP MemTable Design
Essentials](https://zhuanlan.zhihu.com/p/649435555), [CSPP Trie Design
Analysis](https://zhuanlan.zhihu.com/p/499138254)
+
+## 3. TableFactory 扩展
+
+- **CSPPMemTabTable**:与 `cspp` MemTable 配套的 TableFactory。
+- **DispatcherTable**:支持为不同层级指定不同的 TableFactory,例如:
+ - 默认使用 BlockBasedTable。
+ - 特定层级可以使用 CSPPMemTabTable。
+
+这类灵活性在 RocksDB 原生配置中并不存在。
+
+## 4. 统计与观测控制
+
+- **discard_tickers / discard_histograms**:可以精确指定哪些统计项需要丢弃。
+- **stats_level: kDisableAll**:结合上述配置,可以灵活控制统计开销。
+
+相比 RocksDB 的粗粒度控制,ToplingDB 提供了更细的调节方式。
+
+## 5. DBOptions 新增参数
+
+- **memtable_as_log_index: true**:允许使用 MemTable 作为日志索引,加快恢复速度。
+
+## 6. 安全注意事项
+
+**Web Server 安全配置**:
+
+- Web Server 页面由ToplingDB提供,不包含权限认证功能
+- 默认设置 `listening_ports: '127.0.0.1:2011'` 仅限本地访问
+- 生产环境建议配置防火墙规则,仅允许内网访问
+- 如需禁用 Web Server,在 `hugegraph.properties` 中设置 `rocksdb.open_http=false`
+
+**共享内存安全**:
+
+- `document_root: /dev/shm/rocksdb_resource` 使用共享内存目录
+- 多用户环境需要注意文件权限设置,避免未授权访问
+
+## 7. 总结
+
+ToplingDB 在 RocksDB 的基础上增加了以下能力:
+
+- 插件化配置与对象复用
+- 新的 MemTable 类型(cspp)及配套 TableFactory
+- DispatcherTable 支持多工厂调度
+- 内置 Web Server
+- 更灵活的统计与观测控制
+- 特殊 DBOptions(如 memtable_as_log_index)
+
+这些扩展为用户提供了更多的可调节空间,尤其适合需要高写入性能和灵活运维的场景。
+
+## 相关文档
+
+- [ToplingDB 快速开始](/cn/blog/2025/10/09/toplingdb-quick-start/) – 如何在 HugeGraph
中启用 ToplingDB
+- [RocksDB
官方配置文档](https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning)
– 了解基础配置项
+- [SidePlugin Wiki](https://github.com/topling/sideplugin-wiki-en/wiki) –
ToplingDB 完整配置参考
diff --git a/content/cn/blog/hugegraph/toplingdb/toplingdb-quick-start.md
b/content/cn/blog/hugegraph/toplingdb/toplingdb-quick-start.md
new file mode 100644
index 00000000..15e29347
--- /dev/null
+++ b/content/cn/blog/hugegraph/toplingdb/toplingdb-quick-start.md
@@ -0,0 +1,153 @@
+---
+date: 2025-10-09
+title: "ToplingDB Quick Start"
+linkTitle: "ToplingDB Quick Start"
+---
+
+## 前置条件
+
+- HugeGraph 版本: > 1.5.0
+- Java 版本: >= 11
+- 确保已下载 [ToplingDB
相关依赖](https://github.com/topling/toplingdb?tab=readme-ov-file#compile--run-db_bench)
+- 操作系统: Linux
+
+## 启动和配置
+
+> [ToplingDB](https://github.com/topling/toplingdb)是对 RocksDB 的可配置、可观测扩展,支持通过
YAML 文件进行动态调优,并通过内置 Web Server 实现实时监控
+
+修改 `hugegraph.properties`
+
+```properties
+backend=rocksdb
+serializer=binary
+rocksdb.data_path=.
+rocksdb.wal_path=.
+# 配置文件路径
+# 出于安全性考虑, HG中仅允许 yaml 文件位于conf/graphs目录下
+rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml
+# 是否开启Web Server
+rocksdb.open_http=true
+```
+
+初始化数据库(第一次启动时或在 `conf/graphs/` 下手动添加了新配置时需要进行初始化)
+
+```bash
+cd *hugegraph-${version}
+bin/init-store.sh
+```
+
+启动 server
+
+```bash
+bin/start-hugegraph.sh
+Starting HugeGraphServer...
+Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
+```
+
+提示的 url 与 `rest-server.properties` 中配置的 `restserver.url` 一致
+
+Web Server 的监听端口在 YAML 文件中通过 `http.listening_ports` 字段进行配置
+
+## 验证ToplingDB是否正常工作
+
+### 前提: 确保核心参数配置正确
+
+检查 `hugegraph.properties` 中包含:
+
+```properties
+# 配置文件路径
+rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml
+# 是否开启Web Server
+rocksdb.open_http=true
+```
+
+### 方式一: 访问Web监控界面
+
+可视化访问Web监控页面,页面示例如下图所示:
+
+<div style="text-align: center;">
+ <img src="/blog/images/images-server/toplingdb-web-server.png" alt="image"
width="400">
+</div>
+
+通过终端验证:
+
+```bash
+# 访问 http://localhost:2011 (端口号取决于 YAML 配置中的 listening_ports)
+curl http://localhost:2011 | grep topling
+```
+
+得到以下输出说明页面正常:
+
+```html
+<p><a href="https://topling.cn">Topling Inc.</a>This is <strong>Engine
Inspector</strong>, for metrics, see <a
href='javascript:grafana()'>Grafana</a>!</p>
+```
+
+### 方式二: 检查日志中的 ToplingDB 初始化信息
+
+```bash
+tail -f logs/hugegraph-server.log | grep -i topling
+```
+
+类似输出说明存储引擎启动为ToplingDB:
+
+```java
+2025-10-14 08:56:25 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+2025-10-14 08:56:25 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
Topling HTTP Server has been started according to the listening_ports specified
in ./conf/graphs/rocksdb_plus.yaml
+```
+
+## 常见问题排查
+
+### 问题 1: 启动失败,提示 YAML 格式错误
+
+启动时有类似日志:
+
+```java
+2025-10-15 01:55:50 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+21:1: (891B):ERROR:
+sideplugin/rockside/3rdparty/rapidyaml/src/c4/yml/parse.cpp:3310: ERROR
parsing yml: parse error: incorrect indentation?
+```
+
+**解决方案**:
+
+1. 检查 YAML 文件缩进是否正确(必须使用空格,不能使用 Tab)
+2. 验证 YAML 语法: `python -c "import yaml;
yaml.safe_load(open('conf/graphs/rocksdb_plus.yaml'))"`
+3. 检查日志中的具体错误信息
+
+### 问题 2: Web Server 端口冲突
+
+启动时有类似日志:
+
+```java
+2025-10-15 01:57:34 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+2025-10-15 01:57:34 [db-open-1] [ERROR] o.a.h.b.s.r.RocksDBStore - Failed to
open RocksDB 'rocksdb-data/data/g'
+org.rocksdb.RocksDBException: rocksdb::Status
rocksdb::SidePluginRepo::StartHttpServer(): null context when constructing
CivetServer. Possible problem binding to port.
+ at org.rocksdb.SidePluginRepo.startHttpServer(Native Method)
~[rocksdbjni-8.10.2-20250804.074027-4.jar:?]
+```
+
+**解决方案**:
+
+1. 检查端口是否被占用: `lsof -i :2011`
+2. 修改 YAML 文件中的 `listening_ports` 配置
+3. 重启 HugeGraph Server
+
+### 问题 3: 初始化数据库失败
+
+类似输出说明无法获取数据库锁,可能缺乏写权限,也可能是被数据库被另外一个进程锁定:
+
+```java
+Caused by: org.rocksdb.RocksDBException: While lock file:
rocksdb-data/data/m/LOCK: Resource temporarily unavailable
+ at org.rocksdb.SidePluginRepo.nativeOpenDBMultiCF(Native Method)
+ at org.rocksdb.SidePluginRepo.openDB(SidePluginRepo.java:22)
+```
+
+**解决方案**:
+
+1. 确认配置文件路径正确: `rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml`
+2. 检查数据目录权限: 确保运行用户有读写权限
+3. 查看详细日志: `bin/init-store.sh 2>&1 | tee init.log`
+
+## 相关文档
+
+- [ToplingDB YAML
配置详解](/cn/blog/2025/09/30/toplingdb-yaml-configuration-file/) - 了解配置文件中各参数的含义
+- [HugeGraph 配置说明](/docs/config/config-option/) - HugeGraph 核心配置参考
+- [ToplingDB GitHub 仓库](https://github.com/topling/toplingdb) - 官方文档和最新更新
diff --git a/content/cn/blog/images/images-server/toplingdb-web-server.png
b/content/cn/blog/images/images-server/toplingdb-web-server.png
new file mode 100644
index 00000000..aa475ff3
Binary files /dev/null and
b/content/cn/blog/images/images-server/toplingdb-web-server.png differ
diff --git a/content/cn/blog/images/images-server/toplingdb-yaml-ref.png
b/content/cn/blog/images/images-server/toplingdb-yaml-ref.png
new file mode 100644
index 00000000..07476def
Binary files /dev/null and
b/content/cn/blog/images/images-server/toplingdb-yaml-ref.png differ
diff --git a/content/cn/blog/news/_index.md b/content/cn/blog/news/_index.md
deleted file mode 100644
index 13d25eaa..00000000
--- a/content/cn/blog/news/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
----
-title: "News About Docsy"
-linkTitle: "News"
-weight: 20
----
-
-
diff --git a/content/cn/blog/news/first-post/featured-sunset-get.png
b/content/cn/blog/news/first-post/featured-sunset-get.png
deleted file mode 100644
index db3373c0..00000000
Binary files a/content/cn/blog/news/first-post/featured-sunset-get.png and
/dev/null differ
diff --git a/content/cn/blog/news/first-post/index.md
b/content/cn/blog/news/first-post/index.md
deleted file mode 100644
index b6bfb477..00000000
--- a/content/cn/blog/news/first-post/index.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-date: 2018-10-06
-title: "Easy documentation with Docsy"
-linkTitle: "Announcing Docsy"
-description: "The Docsy Hugo theme lets project maintainers and contributors
focus on content, not on reinventing a website infrastructure from scratch"
-author: Riona MacNamara ([@rionam](https://twitter.com/bepsays))
-resources:
-- src: "**.{png,jpg}"
- title: "Image #:counter"
- params:
- byline: "Photo: Riona MacNamara / CC-BY-CA"
----
-
-**This is a typical blog post that includes images.**
-
-The front matter specifies the date of the blog post, its title, a short
description that will be displayed on the blog landing page, and its author.
-
-## Including images
-
-Here's an image (`featured-sunset-get.png`) that includes a byline and a
caption.
-
-{{< imgproc sunset Fill "600x300" >}}
-Fetch and scale an image in the upcoming Hugo 0.43.
-{{< /imgproc >}}
-
-The front matter of this post specifies properties to be assigned to all image
resources:
-
-```
-resources:
-- src: "**.{png,jpg}"
- title: "Image #:counter"
- params:
- byline: "Photo: Riona MacNamara / CC-BY-CA"
-```
-
-To include the image in a page, specify its details like this:
-
-```
-{{< imgproc sunset Fill "600x300" >}}
-Fetch and scale an image in the upcoming Hugo 0.43.
-{{< /imgproc >}}
-```
-
-The image will be rendered at the size and byline specified in the front
matter.
-
-
diff --git a/content/cn/blog/news/second-post.md
b/content/cn/blog/news/second-post.md
deleted file mode 100755
index 0ef58d7d..00000000
--- a/content/cn/blog/news/second-post.md
+++ /dev/null
@@ -1,245 +0,0 @@
-
----
-title: "The second blog post"
-linkTitle: "Second blog post"
-date: 2018-10-06
-description: >
- A short lead description about this content page. Text here can also be
**bold** or _italic_ and can even be split over multiple paragraphs.
----
-
-Text can be **bold**, _italic_, or ~~strikethrough~~.
[Links](https://github.com) should be blue with no underlines (unless hovered
over).
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-> There should be no margin above this first sentence.
->
-> Blockquotes should be a lighter gray with a border along the left side in
the secondary color.
->
-> There should be no margin below this final sentence.
-
-## First Header
-
-This is a normal paragraph following a header. Bacon ipsum dolor sit amet
t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham
hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow
shoulder short ribs biltong. Bacon ipsum dolor sit amet t-bone doner shank
drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck
kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs
biltong. Bacon ipsum dolor [...]
-
-
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-On big screens, paragraphs and headings should not take up the full container
width, but we want tables, code blocks and similar to take the full width.
-
-Lorem markdownum tuta hospes stabat; idem saxum facit quaterque repetito
-occumbere, oves novem gestit haerebat frena; qui. Respicit recurvam erat:
-pignora hinc reppulit nos **aut**, aptos, ipsa.
-
-Meae optatos *passa est* Epiros utiliter *Talibus niveis*, hoc lata, edidit.
-Dixi ad aestum.
-
-## Header 2
-
-> This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone
doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump
pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder
short ribs biltong.
-
-### Header 3
-
-```
-This is a code block following a header.
-```
-
-#### Header 4
-
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-
-##### Header 5
-
-1. This is an ordered list following a header.
-2. This is an ordered list following a header.
-3. This is an ordered list following a header.
-
-###### Header 6
-
-| What | Follows |
-|-----------|-----------------|
-| A table | A header |
-| A table | A header |
-| A table | A header |
-
-----------------
-
-There's a horizontal rule above and below this.
-
-----------------
-
-Here is an unordered list:
-
-* Salt-n-Pepa
-* Bel Biv DeVoe
-* Kid 'N Play
-
-And an ordered list:
-
-1. Michael Jackson
-2. Michael Bolton
-3. Michael Bublé
-
-And an unordered task list:
-
-- [x] Create a sample markdown document
-- [x] Add task lists to it
-- [ ] Take a vacation
-
-And a "mixed" task list:
-
-- [ ] Steal underpants
-- ?
-- [ ] Profit!
-
-And a nested list:
-
-* Jackson 5
- * Michael
- * Tito
- * Jackie
- * Marlon
- * Jermaine
-* TMNT
- * Leonardo
- * Michelangelo
- * Donatello
- * Raphael
-
-Definition lists can be used with Markdown syntax. Definition terms are bold.
-
-Name
-: Godzilla
-
-Born
-: 1952
-
-Birthplace
-: Japan
-
-Color
-: Green
-
-
-----------------
-
-Tables should have bold headings and alternating shaded rows.
-
-| Artist | Album | Year |
-|-------------------|-----------------|------|
-| Michael Jackson | Thriller | 1982 |
-| Prince | Purple Rain | 1984 |
-| Beastie Boys | License to Ill | 1986 |
-
-If a table is too wide, it should scroll horizontally.
-
-| Artist | Album | Year | Label | Awards | Songs
|
-|-------------------|-----------------|------|-------------|----------|-----------|
-| Michael Jackson | Thriller | 1982 | Epic Records | Grammy Award for
Album of the Year, American Music Award for Favorite Pop/Rock Album, American
Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album,
Grammy Award for Best Engineered Album, Non-Classical | Wanna Be Startin'
Somethin', Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean,
Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life |
-| Prince | Purple Rain | 1984 | Warner Brothers Records |
Grammy Award for Best Score Soundtrack for Visual Media, American Music Award
for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album,
Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock
Performance by a Duo or Group with Vocal | Let's Go Crazy, Take Me With U, The
Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U,
Baby I'm a Star, Purple Rain |
-| Beastie Boys | License to Ill | 1986 | Mercury Records |
noawardsbutthistablecelliswide | Rhymin & Stealin, The New Style, She's Crafty,
Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep
Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low,
Time to Get Ill |
-
-----------------
-
-Code snippets like `var foo = "bar";` can be shown inline.
-
-Also, `this should vertically align` ~~`with this`~~ ~~and this~~.
-
-Code can also be shown in a block element.
-
-```
-foo := "bar";
-bar := "foo";
-```
-
-Code can also use syntax highlighting.
-
-```go
-func main() {
- input := `var foo = "bar";`
-
- lexer := lexers.Get("javascript")
- iterator, _ := lexer.Tokenise(nil, input)
- style := styles.Get("github")
- formatter := html.New(html.WithLineNumbers())
-
- var buff bytes.Buffer
- formatter.Format(&buff, style, iterator)
-
- fmt.Println(buff.String())
-}
-```
-
-```
-Long, single-line code blocks should not wrap. They should horizontally scroll
if they are too long. This line should be long enough to demonstrate this.
-```
-
-Inline code inside table cells should still be distinguishable.
-
-| Language | Code |
-|-------------|--------------------|
-| Javascript | `var foo = "bar";` |
-| Ruby | `foo = "bar"{` |
-
-----------------
-
-Small images should be shown at their actual size.
-
-
-
-Large images should always scale down and fit in the content container.
-
-
-
-## Components
-
-### Alerts
-
-{{< alert >}}This is an alert.{{< /alert >}}
-{{< alert title="Note:" >}}This is an alert with a title.{{< /alert >}}
-{{< alert type="success" >}}This is a successful alert.{{< /alert >}}
-{{< alert type="warning" >}}This is a warning!{{< /alert >}}
-{{< alert type="warning" title="Warning!" >}}This is a warning with a
title!{{< /alert >}}
-
-
-## Sizing
-
-Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit
amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket
ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon
cow shoulder short ribs biltong.
-
-### Parameters available
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using pixels
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using rem
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-## Memory
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### RAM to use
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### More is better
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Used RAM
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-
-
-```
-This is the final element on the page and there should be no margin below this.
-```
diff --git a/content/cn/blog/releases/_index.md
b/content/cn/blog/releases/_index.md
deleted file mode 100644
index b1d9eb4f..00000000
--- a/content/cn/blog/releases/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
----
-title: "New Releases"
-linkTitle: "Releases"
-weight: 20
----
-
-
diff --git a/content/cn/blog/releases/in-depth-monoliths-detailed-spec.md
b/content/cn/blog/releases/in-depth-monoliths-detailed-spec.md
deleted file mode 100755
index ba8bd522..00000000
--- a/content/cn/blog/releases/in-depth-monoliths-detailed-spec.md
+++ /dev/null
@@ -1,245 +0,0 @@
-
----
-title: "Another Great Release"
-linkTitle: "Release New Features"
-date: 2018-01-04
-description: >
- A short lead description about this content page. Text here can also be
**bold** or _italic_ and can even be split over multiple paragraphs.
----
-
-Text can be **bold**, _italic_, or ~~strikethrough~~.
[Links](https://github.com) should be blue with no underlines (unless hovered
over).
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-> There should be no margin above this first sentence.
->
-> Blockquotes should be a lighter gray with a border along the left side in
the secondary color.
->
-> There should be no margin below this final sentence.
-
-## First Header
-
-This is a normal paragraph following a header. Bacon ipsum dolor sit amet
t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham
hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow
shoulder short ribs biltong. Bacon ipsum dolor sit amet t-bone doner shank
drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck
kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs
biltong. Bacon ipsum dolor [...]
-
-
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-On big screens, paragraphs and headings should not take up the full container
width, but we want tables, code blocks and similar to take the full width.
-
-Lorem markdownum tuta hospes stabat; idem saxum facit quaterque repetito
-occumbere, oves novem gestit haerebat frena; qui. Respicit recurvam erat:
-pignora hinc reppulit nos **aut**, aptos, ipsa.
-
-Meae optatos *passa est* Epiros utiliter *Talibus niveis*, hoc lata, edidit.
-Dixi ad aestum.
-
-## Header 2
-
-> This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone
doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump
pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder
short ribs biltong.
-
-### Header 3
-
-```
-This is a code block following a header.
-```
-
-#### Header 4
-
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-
-##### Header 5
-
-1. This is an ordered list following a header.
-2. This is an ordered list following a header.
-3. This is an ordered list following a header.
-
-###### Header 6
-
-| What | Follows |
-|-----------|-----------------|
-| A table | A header |
-| A table | A header |
-| A table | A header |
-
-----------------
-
-There's a horizontal rule above and below this.
-
-----------------
-
-Here is an unordered list:
-
-* Salt-n-Pepa
-* Bel Biv DeVoe
-* Kid 'N Play
-
-And an ordered list:
-
-1. Michael Jackson
-2. Michael Bolton
-3. Michael Bublé
-
-And an unordered task list:
-
-- [x] Create a sample markdown document
-- [x] Add task lists to it
-- [ ] Take a vacation
-
-And a "mixed" task list:
-
-- [ ] Steal underpants
-- ?
-- [ ] Profit!
-
-And a nested list:
-
-* Jackson 5
- * Michael
- * Tito
- * Jackie
- * Marlon
- * Jermaine
-* TMNT
- * Leonardo
- * Michelangelo
- * Donatello
- * Raphael
-
-Definition lists can be used with Markdown syntax. Definition terms are bold.
-
-Name
-: Godzilla
-
-Born
-: 1952
-
-Birthplace
-: Japan
-
-Color
-: Green
-
-
-----------------
-
-Tables should have bold headings and alternating shaded rows.
-
-| Artist | Album | Year |
-|-------------------|-----------------|------|
-| Michael Jackson | Thriller | 1982 |
-| Prince | Purple Rain | 1984 |
-| Beastie Boys | License to Ill | 1986 |
-
-If a table is too wide, it should scroll horizontally.
-
-| Artist | Album | Year | Label | Awards | Songs
|
-|-------------------|-----------------|------|-------------|----------|-----------|
-| Michael Jackson | Thriller | 1982 | Epic Records | Grammy Award for
Album of the Year, American Music Award for Favorite Pop/Rock Album, American
Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album,
Grammy Award for Best Engineered Album, Non-Classical | Wanna Be Startin'
Somethin', Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean,
Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life |
-| Prince | Purple Rain | 1984 | Warner Brothers Records |
Grammy Award for Best Score Soundtrack for Visual Media, American Music Award
for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album,
Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock
Performance by a Duo or Group with Vocal | Let's Go Crazy, Take Me With U, The
Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U,
Baby I'm a Star, Purple Rain |
-| Beastie Boys | License to Ill | 1986 | Mercury Records |
noawardsbutthistablecelliswide | Rhymin & Stealin, The New Style, She's Crafty,
Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep
Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low,
Time to Get Ill |
-
-----------------
-
-Code snippets like `var foo = "bar";` can be shown inline.
-
-Also, `this should vertically align` ~~`with this`~~ ~~and this~~.
-
-Code can also be shown in a block element.
-
-```
-foo := "bar";
-bar := "foo";
-```
-
-Code can also use syntax highlighting.
-
-```go
-func main() {
- input := `var foo = "bar";`
-
- lexer := lexers.Get("javascript")
- iterator, _ := lexer.Tokenise(nil, input)
- style := styles.Get("github")
- formatter := html.New(html.WithLineNumbers())
-
- var buff bytes.Buffer
- formatter.Format(&buff, style, iterator)
-
- fmt.Println(buff.String())
-}
-```
-
-```
-Long, single-line code blocks should not wrap. They should horizontally scroll
if they are too long. This line should be long enough to demonstrate this.
-```
-
-Inline code inside table cells should still be distinguishable.
-
-| Language | Code |
-|-------------|--------------------|
-| Javascript | `var foo = "bar";` |
-| Ruby | `foo = "bar"{` |
-
-----------------
-
-Small images should be shown at their actual size.
-
-
-
-Large images should always scale down and fit in the content container.
-
-
-
-## Components
-
-### Alerts
-
-{{< alert >}}This is an alert.{{< /alert >}}
-{{< alert title="Note:" >}}This is an alert with a title.{{< /alert >}}
-{{< alert type="success" >}}This is a successful alert.{{< /alert >}}
-{{< alert type="warning" >}}This is a warning!{{< /alert >}}
-{{< alert type="warning" title="Warning!" >}}This is a warning with a
title!{{< /alert >}}
-
-
-## Sizing
-
-Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit
amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket
ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon
cow shoulder short ribs biltong.
-
-### Parameters available
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using pixels
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using rem
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-## Memory
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### RAM to use
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### More is better
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Used RAM
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-
-
-```
-This is the final element on the page and there should be no margin below this.
-```
diff --git a/content/cn/blog/toolchain/_index.md
b/content/cn/blog/toolchain/_index.md
new file mode 100644
index 00000000..f00f7ed1
--- /dev/null
+++ b/content/cn/blog/toolchain/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph ToolChain"
+linkTitle: "HugeGraph 工具链"
+weight: 2
+---
diff --git a/content/cn/docs/config/config-option.md
b/content/cn/docs/config/config-option.md
index ae0f561b..274dec6d 100644
--- a/content/cn/docs/config/config-option.md
+++ b/content/cn/docs/config/config-option.md
@@ -61,7 +61,7 @@ weight: 2
| config option | default value
| description
[...]
|---------------------------------------|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
-| gremlin.graph |
org.apache.hugegraph.HugeFactory | Gremlin entrance to create
graph.
[...]
+| gremlin.graph | org.apache.hugegraph.HugeFactory
| Gremlin entrance to create graph.
[...]
| backend | rocksdb
| The data store type, available values are [memory, rocksdb,
cassandra, scylladb, hbase, mysql].
[...]
| serializer | binary
| The serializer for backend store, available values are [text, binary,
cassandra, hbase, mysql].
[...]
| store | hugegraph
| The database name like Cassandra Keyspace.
[...]
@@ -69,7 +69,7 @@ weight: 2
| store.graph | g
| The graph table name, which store vertex, edge and property.
[...]
| store.schema | m
| The schema table name, which store meta data.
[...]
| store.system | s
| The system table name, which store system data.
[...]
-| schema.illegal_name_regex | .*\s+$|~.*
| The regex specified the illegal format for schema name.
[...]
+| schema.illegal_name_regex | .*\s+$|~.*
| The regex specified the illegal format for schema name.
[...]
| schema.cache_capacity | 10000
| The max cache size(items) of schema cache.
[...]
| vertex.cache_type | l2
| The type of vertex cache, allowed values are [l1, l2].
[...]
| vertex.cache_capacity | 10000000
| The max cache size(items) of vertex cache.
[...]
@@ -185,6 +185,8 @@ weight: 2
| rocksdb.data_disks | []
| The optimized disks for storing data of RocksDB.
The format of each element: `STORE/TABLE: /path/disk`.Allowed keys are
[g/vertex, g/edge_out, g/edge_in, g/vertex_label_index, g/edge_label_index,
g/range_int_index, g/range_float_index, g/range_long_index,
g/range_double_index, g/secondary_index, g/search [...]
| rocksdb.data_path | rocksdb-data/data
| The path for storing data of RocksDB.
[...]
| rocksdb.wal_path | rocksdb-data/wal
| The path for storing WAL of RocksDB.
[...]
+| rocksdb.option_path |
| The YAML file for
configuring ToplingDB/RocksDB parameters.
[...]
+| rocksdb.open_http | false
| Whether to start ToplingDB HTTP service. Security: enable only in trusted
networks and restrict access (firewall/ACL); the port and document_root are
configured in the YAML (http.listening_ports/document_root).
[...]
| rocksdb.allow_mmap_reads | false
| Allow the OS to mmap file for reading sst tables.
[...]
| rocksdb.allow_mmap_writes | false
| Allow the OS to mmap file for writing.
[...]
| rocksdb.block_cache_capacity | 8388608
| The amount of block cache in bytes that will be
used by RocksDB, 0 means no block cache.
[...]
diff --git
a/content/cn/docs/contribution-guidelines/hugegraph-server-idea-setup.md
b/content/cn/docs/contribution-guidelines/hugegraph-server-idea-setup.md
index 74c3e424..502350ca 100644
--- a/content/cn/docs/contribution-guidelines/hugegraph-server-idea-setup.md
+++ b/content/cn/docs/contribution-guidelines/hugegraph-server-idea-setup.md
@@ -35,6 +35,8 @@ cp -r hugegraph-dist/src/assembly/static/scripts
hugegraph-dist/src/assembly/sta
将 `path-to-your-directory` 替换为你创建的文件夹的路径。
+> 在引入 ToplingDB 后,开发者需执行 `preload-topling.sh` 脚本,该脚本会将相关动态库和 Web Server
所需的静态资源自动解压至与 `bin` 同级的 `library` 目录中 (静态资源会同时拷贝到 `/dev/shm/rocksdb_resource`
中)。
+
#### 2. `InitStore` 类初始化图
首先,需要在配置文件中配置数据库后端。以 RocksDB 为例,在
`path-to-your-directory/conf/graphs/hugegraph.properties` 文件中进行以下配置:
@@ -51,6 +53,9 @@ rocksdb.wal_path=.
- 在 `Use classpath of module` 中选择 `hugegraph-dist`
- 将 `Main class` 设置为 `org.apache.hugegraph.cmd.InitStore`
- 设置运行参数为 `conf/rest-server.properties`,这里的路径是相对于工作路径的,需要将工作路径设置为
`path-to-your-directory`
+- (可选) ToplingDB 需要通过 `LD_PRELOAD` 机制预加载动态库,开发者需设置两个环境变量:`LD_LIBRARY_PATH` 指向
`preload-topling.sh` 解压出的 `library` 目录,`LD_PRELOAD` 设置为
`libjemalloc.so:librocksdbjni-linux64.so`,以确保相关库在运行时被正确加载
+ - LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH
+ - LD_PRELOAD=libjemalloc.so:librocksdbjni-linux64.so
> 若在 **Java 11** 环境下为 HugeGraph-Server 配置了**用户认证**
> (authenticator),需要参考二进制包的脚本[配置](https://github.com/apache/incubator-hugegraph/blob/master/hugegraph-server/hugegraph-dist/src/assembly/static/bin/init-store.sh#L52),添加下述
> **VM options**:
>
diff --git a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
index 4a1b287f..d4e80d8f 100644
--- a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
+++ b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
@@ -44,7 +44,7 @@ Core 模块是 Tinkerpop 接口的实现,Backend 模块用于管理数据存
可选项:
1. 可以使用 `docker exec -it server bash` 进入容器完成一些操作
-2. 可以使用 `docker run -itd --name=server -p 8080:8080 -e PRELOAD="true"
hugegraph/hugegraph:1.5.0` 在启动的时候预加载一个**内置的**样例图。可以通过 `RESTful API`
进行验证。具体步骤可以参考
[5.1.1](/cn/docs/quickstart/hugegraph-server/#511-%E5%90%AF%E5%8A%A8-server-%E7%9A%84%E6%97%B6%E5%80%99%E5%88%9B%E5%BB%BA%E7%A4%BA%E4%BE%8B%E5%9B%BE)
+2. 可以使用 `docker run -itd --name=server -p 8080:8080 -e PRELOAD="true"
hugegraph/hugegraph:1.5.0` 在启动的时候预加载一个**内置的**样例图。可以通过 `RESTful API`
进行验证。具体步骤可以参考
[5.1.9](#519-%E5%90%AF%E5%8A%A8-server-%E7%9A%84%E6%97%B6%E5%80%99%E5%88%9B%E5%BB%BA%E7%A4%BA%E4%BE%8B%E5%9B%BE)
3. 可以使用 `-e PASSWORD=xxx` 设置是否开启鉴权模式以及 admin 的密码,具体步骤可以参考 [Config
Authentication](/cn/docs/config/config-authentication#使用-docker-时开启鉴权模式)
如果使用 docker desktop,则可以按照如下的方式设置可选项:
@@ -274,7 +274,7 @@ bin/stop-hugegraph.sh
```
</details>
-##### 5.1.2 RocksDB
+##### 5.1.2 RocksDB / ToplingDB
<details>
<summary>点击展开/折叠 RocksDB 配置及启动方法</summary>
@@ -308,6 +308,8 @@ Connecting to HugeGraphServer
(http://127.0.0.1:8080/graphs)....OK
提示的 url 与 `rest-server.properties` 中配置的 `restserver.url` 一致
+**ToplingDB (Beta)**: 作为 RocksDB 的高性能替代方案,配置方式请参考: [ToplingDB Quick Start]({{<
ref path="/blog/hugegraph/toplingdb/toplingdb-quick-start.md" lang="cn">}})
+
</details>
##### 5.1.3 HBase
@@ -547,7 +549,7 @@ Connecting to HugeGraphServer
(http://127.0.0.1:8080/graphs)......OK
#### 5.2 使用 Docker
-在 [3.3 使用 Docker 容器](#33-使用-docker-容器)中,我们已经介绍了如何使用 `docker` 部署
`hugegraph-server`, 我们还可以使用其他的后端存储或者设置参数在 sever 启动的时候加载样例图
+在 [3.1 使用 Docker 容器](#31-使用-docker-容器-便于测试)中,我们已经介绍了如何使用 `docker` 部署
`hugegraph-server`, 我们还可以使用其他的后端存储或者设置参数在 sever 启动的时候加载样例图
##### 5.2.1 使用 Cassandra 作为后端
diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md
index 43820eb1..2c389678 100644
--- a/content/en/blog/_index.md
+++ b/content/en/blog/_index.md
@@ -1,13 +1,17 @@
---
-title: "Docsy Blog"
+title: "Blog"
linkTitle: "Blog"
menu:
main:
weight: 30
---
+Welcome to HugeGraph Blog!
-This is the **blog** section. It has two categories: News and Releases.
+Here you will find technical articles, best practices, and community updates
from the HugeGraph ecosystem:
-Files in these directories will be listed in reverse chronological order.
+- **HugeGraph (OLTP)**: Core graph database features, performance
optimization, storage engines, and more
+- **HugeGraph-AI**: Application cases combining AI with graph computing
+- **HugeGraph Computing (OLAP)**: Large-scale graph computing and analytical
practices
+Explore more content to enhance your graph database experience!
diff --git a/content/en/blog/computing/_index.md
b/content/en/blog/computing/_index.md
new file mode 100644
index 00000000..068e1956
--- /dev/null
+++ b/content/en/blog/computing/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph Computing (OLAP)"
+linkTitle: "HugeGraph Computing (OLAP)"
+weight: 4
+---
diff --git a/content/en/blog/hugegraph-ai/_index.md
b/content/en/blog/hugegraph-ai/_index.md
new file mode 100644
index 00000000..4653a368
--- /dev/null
+++ b/content/en/blog/hugegraph-ai/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph-AI"
+linkTitle: "HugeGraph-AI"
+weight: 3
+---
diff --git a/content/en/blog/hugegraph/_index.md
b/content/en/blog/hugegraph/_index.md
new file mode 100644
index 00000000..8d57d3f7
--- /dev/null
+++ b/content/en/blog/hugegraph/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph (OLTP)"
+linkTitle: "HugeGraph (OLTP)"
+weight: 1
+---
diff --git a/content/en/blog/hugegraph/toplingdb/_index.md
b/content/en/blog/hugegraph/toplingdb/_index.md
new file mode 100644
index 00000000..5adcbf96
--- /dev/null
+++ b/content/en/blog/hugegraph/toplingdb/_index.md
@@ -0,0 +1,5 @@
+---
+title: "ToplingDB"
+linkTitle: "ToplingDB"
+weight: 1
+---
diff --git
a/content/en/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
b/content/en/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
new file mode 100644
index 00000000..ff5a612b
--- /dev/null
+++ b/content/en/blog/hugegraph/toplingdb/toplingdb-configuration-yaml.md
@@ -0,0 +1,285 @@
+---
+date: 2025-09-30
+title: "ToplingDB YAML configuration file"
+linkTitle: "ToplingDB YAML configuration file"
+---
+
+RocksDB provides a rich set of configuration parameters, but most of them
typically require hardcoded setup.
+
+[ToplingDB](https://github.com/topling/toplingdb) introduces a **SidePlugin +
YAML** mechanism, making configuration more modular and composable.
+
+This document focuses on the **extended parameters of ToplingDB**, helping
readers understand their purpose and usage.
+
+## 0. rocksdb_plus.yaml used in HugeGraph
+
+The following includes only the configuration parameters used in HugeGraph.
For the full configuration supported by ToplingDB, refer to the [SidePlugin
Wiki](https://github.com/topling/sideplugin-wiki-en/wiki):
+
+```yaml
+http: # Web Server related configuration
+ # normally parent path of db path
+ document_root: /dev/shm/rocksdb_resource # Static resource directory,
extracted by `preload_topling.sh` in HugeGraph
+ listening_ports: '127.0.0.1:2011' # Web Server listening port for
management/monitoring
+
+setenv: # Environment variable settings
+ StrSimpleEnvNameNotOverwrite: StringValue
+ IntSimpleEnvNameNotOverwrite: 16384
+ OverwriteThisEnv:
+ #comment: overwrite is default to false
+ overwrite: true
+ value: force overwrite this env by overwrite true
+
+Cache: # Cache configuration
+ lru_cache: # Define an LRU cache instance
+ class: LRUCache
+ params:
+ capacity: 8G # Cache capacity: 8GB
+ num_shard_bits: -1 # Number of shards, -1 means auto
+ strict_capacity_limit: false
+ high_pri_pool_ratio: 0.5
+ use_adaptive_mutex: false
+ metadata_charge_policy: kFullChargeCacheMetadata # Metadata also counts
toward cache capacity
+
+Statistics: # Sampling configuration
+ stat:
+ class: default
+ params:
+ discard_tickers: # Discarded tickers to reduce overhead
+ - rocksdb.block.cache
+ - rocksdb.block.cachecompressed
+ - rocksdb.block
+ - rocksdb.memtable.payload.bytes.at.flush
+ - rocksdb.memtable.garbage.bytes.at.flush
+ - rocksdb.txn
+ - rocksdb.blobdb
+ - rocksdb.row.cache
+ - rocksdb.number.block
+ - rocksdb.bloom.filter
+ - rocksdb.persistent
+ - rocksdb.sim.block.cache
+ discard_histograms: # Discarded histogram metrics
+ # comment: ....
+ - rocksdb.blobdb
+ - rocksdb.bytes.compressed
+ - rocksdb.bytes.decompressed
+ - rocksdb.num.index.and.filter.blocks.read.per.level
+ - rocksdb.num.data.blocks.read.per.level
+ - rocksdb.compression.times.nanos
+ - rocksdb.decompression.times.nanos
+ - rocksdb.read.block.get.micros
+ - rocksdb.write.raw.block.micros
+ # comment end of array
+ #stats_level: kAll
+ stats_level: kDisableAll # Disable all statistics
+
+MemTableRepFactory: # MemTable implementation in memory
+ cspp: # ToplingDB-specific high-concurrency memory structure
+ class: cspp
+ params:
+ mem_cap: 16G # Preallocate sufficient virtual memory space; may reserve
address space without actual allocation
+ use_vm: false
+ token_use_idle: true
+ chunk_size: 16K # Internal allocation granularity
+ convert_to_sst: kFileMmap # Convert MemTable directly to SST, skipping
flush; options: {kDontConvert, kDumpMem, kFileMmap}
+ sync_sst_file: false # Whether to fsync after SST conversion when using
kFileMmap
+
+ skiplist: # Default skiplist structure in RocksDB
+ class: SkipList
+ params:
+ lookahead: 0
+
+TableFactory:
+ cspp_memtab_sst:
+ class: CSPPMemTabTable # TableFactory paired with cspp
+ params: # empty params
+
+ bb:
+ class: BlockBasedTable # Default block-based table in RocksDB
+ params:
+ checksum: kCRC32c
+ block_size: 4K
+ block_restart_interval: 16
+ index_block_restart_interval: 1
+ metadata_block_size: 4K
+ enable_index_compression: true
+ block_cache: "${lru_cache}" # Use the LRU cache defined above
+ block_cache_compressed:
+ persistent_cache:
+ filter_policy:
+
+ dispatch:
+ class: DispatcherTable
+ params:
+ default: bb # Default to BlockBasedTable
+ readers:
+ BlockBasedTable: bb
+ CSPPMemTabTable: cspp_memtab_sst
+ level_writers: [ bb, bb, bb, bb, bb, bb ] # Custom write strategy per
level
+
+CFOptions:
+ default:
+ max_write_buffer_number: 6
+ memtable_factory: "${cspp}" # Reference cspp defined above
+ write_buffer_size: 128M
+ # set target_file_size_base as small as 512K is to make many SST files,
+ # thus key prefix cache can present efficiency
+ target_file_size_base: 64M
+ target_file_size_multiplier: 1
+ table_factory: dispatch # Reference dispatch defined above
+ max_bytes_for_level_base: 512M
+ max_bytes_for_level_multiplier: 10
+ level_compaction_dynamic_level_bytes: false
+ level0_slowdown_writes_trigger: 20
+ level0_stop_writes_trigger: 36
+ level0_file_num_compaction_trigger: 2
+ merge_operator: uint64add # support merge
+ level_compaction_dynamic_file_size: true
+ optimize_filters_for_hits: true
+ allow_merge_memtables: true
+ min_write_buffer_number_to_merge: 2
+ compression_per_level:
+ - kNoCompression
+ - kNoCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+ - kSnappyCompression
+
+DBOptions:
+ dbo:
+ create_if_missing: true
+ create_missing_column_families: false # this is important, must be false
to hugegraph
+ max_background_compactions: -1
+ max_subcompactions: 4
+ max_level1_subcompactions: 0
+ inplace_update_support: false
+ WAL_size_limit_MB: 0
+ statistics: "${stat}" # Use the statistics config defined above
+ max_manifest_file_size: 100M
+ max_background_jobs: 8
+ compaction_readahead_size: 0
+ memtable_as_log_index: true # Combined with convert_to_sst: kFileMmap to
enable [omit L0 Flush](https://github.com/topling/toplingdb/wiki/Omit-L0-Flush)
+```
+
+**Key points**:
+
+- `listening_ports: '127.0.0.1:2011'` sets the Web Server listening port to
2011 and restricts access to localhost.
+- `memtable_as_log_index: true` combined with `convert_to_sst: kFileMmap`
enables [omit L0
Flush](https://github.com/topling/toplingdb/wiki/Omit-L0-Flush).
+- `memtable_factory: "${cspp}"` specifies the memory structure as `CSPP
Memtable`.
+- `table_factory: dispatch` sets the TableFactory to the custom
`DispatcherTable` defined in YAML.
+
+## 1. Plugin-based configuration and reference mechanism
+
+- **YAML modularization**: The configuration file is organized as objects;
each object can be defined independently and referenced elsewhere.
+- **Reference syntax**: Objects can be reused across sections via
`${lru_cache}`, `${cspp}`, etc.
+- **DispatcherTable**: Allows selecting different TableFactories at different
levels or scenarios. RocksDB natively supports only a single TableFactory.
+
+ToplingDB YAML Reference and Reuse Diagram:
+
+<div style="text-align: center;">
+ <img src="/blog/images/images-server/toplingdb-yaml-ref.png" alt="ToplingDB
YAML Reference Diagram" width="800">
+</div>
+
+This mechanism makes configuration more flexible and easier to compose in
complex scenarios.
+
+## 2. New MemTable implementation: CSPP
+
+ToplingDB provides a MemTable type that RocksDB does not natively have,
configured with the following parameters:
+
+### mem_cap
+
+`mem_cap` is the size of the virtual address space reserved for CSPP. This may
be just reserved address space without actual physical allocation.
+The actual memory usage of `mem_cap` is approximately equal to
`write_buffer_size`.
+
+#### Background of mem_cap Design
+
+The underlying algorithm of CSPP adopts a pre-allocation strategy to support
high-concurrency writes.
+Once the pre-allocated memory is filled, no further writes can proceed.
+However, RocksDB itself lacks a mechanism that allows a memtable to actively
report
+"the pre-allocated memory is full, a new memtable is required".
+Due to the complexity of its call chain, it is impractical to refactor RocksDB
to add this capability.
+Therefore, CSPP adapts to RocksDB’s behavior through parameter design.
+
+#### Core Idea of mem_cap
+
+ToplingDB sets `mem_cap` to be much larger than `write_buffer_size`,
+so that RocksDB will not prematurely trigger an "out of memory" error when
writing to a memtable.
+During CSPP initialization (`New`), the system rechecks the setting.
+If `mem_cap` is found to be too small, it will be automatically adjusted to `2
* write_buffer_size` to ensure stability during the write process.
+
+The default value is 2G, and the effective maximum is 16G.
+
+- Small deployments (<16GB RAM): set to 20–30% of system memory
+- Medium deployments (16–64GB RAM): set to 8–16G
+- Large deployments (>64GB RAM): set to 16G
+
+### use_vm
+
+When allocating memory via `malloc/posix_memalign`, the address space may
already be physically allocated (heap space with mapped pages), while CSPP only
needs reserved virtual address space.
+When `use_vm` is `true`, allocation is forced to use `mmap`, ensuring reserved
address space without occupying physical pages.
+The default is `true`. If physical memory is sufficient, it is recommended to
disable this option—establishing mappings from `mmap`’s virtual memory to
physical pages can trigger many minor page faults and may affect performance.
+
+### convert_to_sst
+
+`convert_to_sst` supports three enum values:
+
+- `kDontConvert`: Disables the feature (default). Uses the traditional Flush
process, offering the best compatibility for stability-focused scenarios.
+- `kDumpMem`: During conversion, dumps the entire MemTable memory to an SST
file, reducing CPU consumption but not memory usage.
+- `kFileMmap`: `mmap`s MemTable content into a file—the key feature—reduces
both CPU and memory usage. You can also set `DBOptions.memtable_as_log_index =
true` to essentially eliminate MemTable Flush.
+
+These parameters offer more tunable options for the write path, allowing users
to choose as needed.
+
+For more design details, see:
[cspp-memtable](https://github.com/topling/cspp-memtable/blob/memtable_as_log_index/README_EN.md),
[ToplingDB CSPP MemTable Design
Essentials](https://zhuanlan.zhihu.com/p/649435555), [CSPP Trie Design
Analysis](https://zhuanlan.zhihu.com/p/499138254).
+
+## 3. TableFactory extensions
+
+- **CSPPMemTabTable**: The TableFactory paired with the `cspp` MemTable.
+- **DispatcherTable**: Supports specifying different TableFactories per level,
for example:
+ - Use BlockBasedTable by default.
+ - Use CSPPMemTabTable for specific levels.
+
+This level of flexibility is not available in native RocksDB configuration.
+
+## 4. Statistics and observability controls
+
+- **discard_tickers / discard_histograms**: Precisely specify which statistics
to discard.
+- **stats_level: kDisableAll**: Combined with the above, flexibly control the
overhead of statistics.
+
+Compared to RocksDB’s coarse-grained controls, ToplingDB offers finer tuning.
+
+## 5. New DBOptions parameter
+
+- **memtable_as_log_index: true**: Allows using the MemTable as a log index to
speed up recovery.
+
+## 6. Security considerations
+
+**Web Server security**:
+
+- The Web Server pages are provided by ToplingDB and do not include
authentication.
+- By default, `listening_ports: '127.0.0.1:2011'` restricts access to local
requests.
+- In production, configure firewall rules to allow only intranet access.
+- To disable the Web Server, set `rocksdb.open_http=false` in
`hugegraph.properties`.
+
+**Shared memory safety**:
+
+- `document_root: /dev/shm/rocksdb_resource` uses a shared memory directory.
+- In multi-user environments, ensure proper file permissions to avoid
unauthorized access.
+
+## 7. Summary
+
+ToplingDB adds the following capabilities on top of RocksDB:
+
+- Plugin-based configuration and object reuse
+- A new MemTable type (cspp) with a paired TableFactory
+- DispatcherTable for multi-factory scheduling
+- Built-in Web Server
+- More flexible statistics and observability controls
+- Special DBOptions (such as `memtable_as_log_index`)
+
+These extensions give users more tuning space, particularly suited for
scenarios requiring high write performance and flexible operations.
+
+## Related Documentation
+
+- [ToplingDB Quick Start](/blog/2025/10/09/toplingdb-quick-start) – How to
enable ToplingDB in HugeGraph
+- [RocksDB Official Configuration
Guide](https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning)
– Learn the basic configuration options
+- [SidePlugin Wiki](https://github.com/topling/sideplugin-wiki-en/wiki) –
Complete configuration reference for ToplingDB
diff --git a/content/en/blog/hugegraph/toplingdb/toplingdb-quick-start.md
b/content/en/blog/hugegraph/toplingdb/toplingdb-quick-start.md
new file mode 100644
index 00000000..3393a26c
--- /dev/null
+++ b/content/en/blog/hugegraph/toplingdb/toplingdb-quick-start.md
@@ -0,0 +1,140 @@
+---
+date: 2025-10-09
+title: "ToplingDB Quick Start"
+linkTitle: "ToplingDB Quick Start"
+---
+
+> [ToplingDB](https://github.com/topling/toplingdb) is a configurable and
observable extension of RocksDB. It supports dynamic tuning via YAML files and
enables real-time monitoring through a built-in Web Server.
+
+Update hugegraph.properties
+
+```properties
+backend=rocksdb
+serializer=binary
+rocksdb.data_path=.
+rocksdb.wal_path=.
+# Path to YAML configuration file
+# For security reasons, HG only allows YAML files to be located under the
`conf/graphs` directory
+rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml
+# Enable Web Server
+rocksdb.open_http=true
+```
+
+Initialize the database (required on the first startup, or a new configuration
was manually added under 'conf/graphs/')
+
+```bash
+cd *hugegraph-${version}
+bin/init-store.sh
+```
+
+Start server
+
+```bash
+bin/start-hugegraph.sh
+Starting HugeGraphServer...
+Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
+```
+
+## Verify ToplingDB Is Working Properly
+
+### Prerequisite: Ensure Core Parameters Are Correctly Configured
+
+Check that `hugegraph.properties` includes:
+
+```properties
+# Configuration file path
+rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml
+# Enable Web Server
+rocksdb.open_http=true
+```
+
+### Method 1: Access the Web Monitoring Interface
+
+Visualize the Web monitoring page. Example screenshot:
+
+<div style="text-align: center;">
+ <img src="/blog/images/images-server/toplingdb-web-server.png" alt="image"
width="400">
+</div>
+
+Verify via terminal:
+
+```bash
+# Access http://localhost:2011 (port depends on listening_ports in YAML config)
+curl http://localhost:2011 | grep topling
+```
+
+The following output indicates the page is working:
+
+```html
+<p><a href="https://topling.cn">Topling Inc.</a>This is <strong>Engine
Inspector</strong>, for metrics, see <a
href='javascript:grafana()'>Grafana</a>!</p>
+```
+
+### Method 2: Check ToplingDB Initialization Info in Logs
+
+```bash
+tail -f logs/hugegraph-server.log | grep -i topling
+```
+
+Similar output indicates ToplingDB is the storage engine:
+
+```java
+2025-10-14 08:56:25 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+2025-10-14 08:56:25 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
Topling HTTP Server has been started according to the listening_ports specified
in ./conf/graphs/rocksdb_plus.yaml
+```
+
+## Common Troubleshooting
+
+### Issue 1: Startup Failure Due to YAML Format Error
+
+Sample log during startup:
+
+```java
+2025-10-15 01:55:50 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+21:1: (891B):ERROR:
+sideplugin/rockside/3rdparty/rapidyaml/src/c4/yml/parse.cpp:3310: ERROR
parsing yml: parse error: incorrect indentation?
+```
+
+**Solutions**:
+
+1. Check YAML indentation (must use spaces, not tabs)
+2. Validate YAML syntax: `python -c "import yaml;
yaml.safe_load(open('conf/graphs/rocksdb_plus.yaml'))"`
+3. Review specific error messages in logs
+
+### Issue 2: Web Server Port Conflict
+
+Sample log during startup:
+
+```java
+2025-10-15 01:57:34 [db-open-1] [INFO] o.a.h.b.s.r.RocksDBStdSessions -
SidePluginRepo found. Will attempt to open multi CFs RocksDB using Topling
plugin.
+2025-10-15 01:57:34 [db-open-1] [ERROR] o.a.h.b.s.r.RocksDBStore - Failed to
open RocksDB 'rocksdb-data/data/g'
+org.rocksdb.RocksDBException: rocksdb::Status
rocksdb::SidePluginRepo::StartHttpServer(): null context when constructing
CivetServer. Possible problem binding to port.
+ at org.rocksdb.SidePluginRepo.startHttpServer(Native Method)
~[rocksdbjni-8.10.2-20250804.074027-4.jar:?]
+```
+
+**Solutions**:
+
+1. Check if the port is occupied: `lsof -i :2011`
+2. Modify `listening_ports` in the YAML file
+3. Restart HugeGraph Server
+
+### Issue 3: Database Initialization Failure
+
+Sample output indicating lock acquisition failure, possibly due to write
permission issues or another process locking the DB:
+
+```java
+Caused by: org.rocksdb.RocksDBException: While lock file:
rocksdb-data/data/m/LOCK: Resource temporarily unavailable
+ at org.rocksdb.SidePluginRepo.nativeOpenDBMultiCF(Native Method)
+ at org.rocksdb.SidePluginRepo.openDB(SidePluginRepo.java:22)
+```
+
+**Solutions**:
+
+1. Confirm correct config path:
`rocksdb.option_path=./conf/graphs/rocksdb_plus.yaml`
+2. Check data directory permissions: ensure read/write access for the running
user
+3. Review detailed logs: `bin/init-store.sh 2>&1 | tee init.log`
+
+## Related Documentation
+
+- [ToplingDB YAML Configuration
Explained](/blog/2025/09/30/toplingdb-yaml-configuration-file/) – Understand
each parameter in the config file
+- [HugeGraph Configuration Guide](/docs/config/config-option/) – Reference for
core HugeGraph settings
+- [ToplingDB GitHub Repository](https://github.com/topling/toplingdb) –
Official docs and latest updates
diff --git a/content/en/blog/images/images-server/toplingdb-web-server.png
b/content/en/blog/images/images-server/toplingdb-web-server.png
new file mode 100644
index 00000000..aa475ff3
Binary files /dev/null and
b/content/en/blog/images/images-server/toplingdb-web-server.png differ
diff --git a/content/en/blog/images/images-server/toplingdb-yaml-ref.png
b/content/en/blog/images/images-server/toplingdb-yaml-ref.png
new file mode 100644
index 00000000..07476def
Binary files /dev/null and
b/content/en/blog/images/images-server/toplingdb-yaml-ref.png differ
diff --git a/content/en/blog/news/_index.md b/content/en/blog/news/_index.md
deleted file mode 100644
index 13d25eaa..00000000
--- a/content/en/blog/news/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
----
-title: "News About Docsy"
-linkTitle: "News"
-weight: 20
----
-
-
diff --git a/content/en/blog/news/first-post/featured-sunset-get.png
b/content/en/blog/news/first-post/featured-sunset-get.png
deleted file mode 100644
index db3373c0..00000000
Binary files a/content/en/blog/news/first-post/featured-sunset-get.png and
/dev/null differ
diff --git a/content/en/blog/news/first-post/index.md
b/content/en/blog/news/first-post/index.md
deleted file mode 100644
index b6bfb477..00000000
--- a/content/en/blog/news/first-post/index.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-date: 2018-10-06
-title: "Easy documentation with Docsy"
-linkTitle: "Announcing Docsy"
-description: "The Docsy Hugo theme lets project maintainers and contributors
focus on content, not on reinventing a website infrastructure from scratch"
-author: Riona MacNamara ([@rionam](https://twitter.com/bepsays))
-resources:
-- src: "**.{png,jpg}"
- title: "Image #:counter"
- params:
- byline: "Photo: Riona MacNamara / CC-BY-CA"
----
-
-**This is a typical blog post that includes images.**
-
-The front matter specifies the date of the blog post, its title, a short
description that will be displayed on the blog landing page, and its author.
-
-## Including images
-
-Here's an image (`featured-sunset-get.png`) that includes a byline and a
caption.
-
-{{< imgproc sunset Fill "600x300" >}}
-Fetch and scale an image in the upcoming Hugo 0.43.
-{{< /imgproc >}}
-
-The front matter of this post specifies properties to be assigned to all image
resources:
-
-```
-resources:
-- src: "**.{png,jpg}"
- title: "Image #:counter"
- params:
- byline: "Photo: Riona MacNamara / CC-BY-CA"
-```
-
-To include the image in a page, specify its details like this:
-
-```
-{{< imgproc sunset Fill "600x300" >}}
-Fetch and scale an image in the upcoming Hugo 0.43.
-{{< /imgproc >}}
-```
-
-The image will be rendered at the size and byline specified in the front
matter.
-
-
diff --git a/content/en/blog/news/second-post.md
b/content/en/blog/news/second-post.md
deleted file mode 100755
index 0ef58d7d..00000000
--- a/content/en/blog/news/second-post.md
+++ /dev/null
@@ -1,245 +0,0 @@
-
----
-title: "The second blog post"
-linkTitle: "Second blog post"
-date: 2018-10-06
-description: >
- A short lead description about this content page. Text here can also be
**bold** or _italic_ and can even be split over multiple paragraphs.
----
-
-Text can be **bold**, _italic_, or ~~strikethrough~~.
[Links](https://github.com) should be blue with no underlines (unless hovered
over).
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-> There should be no margin above this first sentence.
->
-> Blockquotes should be a lighter gray with a border along the left side in
the secondary color.
->
-> There should be no margin below this final sentence.
-
-## First Header
-
-This is a normal paragraph following a header. Bacon ipsum dolor sit amet
t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham
hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow
shoulder short ribs biltong. Bacon ipsum dolor sit amet t-bone doner shank
drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck
kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs
biltong. Bacon ipsum dolor [...]
-
-
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-On big screens, paragraphs and headings should not take up the full container
width, but we want tables, code blocks and similar to take the full width.
-
-Lorem markdownum tuta hospes stabat; idem saxum facit quaterque repetito
-occumbere, oves novem gestit haerebat frena; qui. Respicit recurvam erat:
-pignora hinc reppulit nos **aut**, aptos, ipsa.
-
-Meae optatos *passa est* Epiros utiliter *Talibus niveis*, hoc lata, edidit.
-Dixi ad aestum.
-
-## Header 2
-
-> This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone
doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump
pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder
short ribs biltong.
-
-### Header 3
-
-```
-This is a code block following a header.
-```
-
-#### Header 4
-
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-
-##### Header 5
-
-1. This is an ordered list following a header.
-2. This is an ordered list following a header.
-3. This is an ordered list following a header.
-
-###### Header 6
-
-| What | Follows |
-|-----------|-----------------|
-| A table | A header |
-| A table | A header |
-| A table | A header |
-
-----------------
-
-There's a horizontal rule above and below this.
-
-----------------
-
-Here is an unordered list:
-
-* Salt-n-Pepa
-* Bel Biv DeVoe
-* Kid 'N Play
-
-And an ordered list:
-
-1. Michael Jackson
-2. Michael Bolton
-3. Michael Bublé
-
-And an unordered task list:
-
-- [x] Create a sample markdown document
-- [x] Add task lists to it
-- [ ] Take a vacation
-
-And a "mixed" task list:
-
-- [ ] Steal underpants
-- ?
-- [ ] Profit!
-
-And a nested list:
-
-* Jackson 5
- * Michael
- * Tito
- * Jackie
- * Marlon
- * Jermaine
-* TMNT
- * Leonardo
- * Michelangelo
- * Donatello
- * Raphael
-
-Definition lists can be used with Markdown syntax. Definition terms are bold.
-
-Name
-: Godzilla
-
-Born
-: 1952
-
-Birthplace
-: Japan
-
-Color
-: Green
-
-
-----------------
-
-Tables should have bold headings and alternating shaded rows.
-
-| Artist | Album | Year |
-|-------------------|-----------------|------|
-| Michael Jackson | Thriller | 1982 |
-| Prince | Purple Rain | 1984 |
-| Beastie Boys | License to Ill | 1986 |
-
-If a table is too wide, it should scroll horizontally.
-
-| Artist | Album | Year | Label | Awards | Songs
|
-|-------------------|-----------------|------|-------------|----------|-----------|
-| Michael Jackson | Thriller | 1982 | Epic Records | Grammy Award for
Album of the Year, American Music Award for Favorite Pop/Rock Album, American
Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album,
Grammy Award for Best Engineered Album, Non-Classical | Wanna Be Startin'
Somethin', Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean,
Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life |
-| Prince | Purple Rain | 1984 | Warner Brothers Records |
Grammy Award for Best Score Soundtrack for Visual Media, American Music Award
for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album,
Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock
Performance by a Duo or Group with Vocal | Let's Go Crazy, Take Me With U, The
Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U,
Baby I'm a Star, Purple Rain |
-| Beastie Boys | License to Ill | 1986 | Mercury Records |
noawardsbutthistablecelliswide | Rhymin & Stealin, The New Style, She's Crafty,
Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep
Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low,
Time to Get Ill |
-
-----------------
-
-Code snippets like `var foo = "bar";` can be shown inline.
-
-Also, `this should vertically align` ~~`with this`~~ ~~and this~~.
-
-Code can also be shown in a block element.
-
-```
-foo := "bar";
-bar := "foo";
-```
-
-Code can also use syntax highlighting.
-
-```go
-func main() {
- input := `var foo = "bar";`
-
- lexer := lexers.Get("javascript")
- iterator, _ := lexer.Tokenise(nil, input)
- style := styles.Get("github")
- formatter := html.New(html.WithLineNumbers())
-
- var buff bytes.Buffer
- formatter.Format(&buff, style, iterator)
-
- fmt.Println(buff.String())
-}
-```
-
-```
-Long, single-line code blocks should not wrap. They should horizontally scroll
if they are too long. This line should be long enough to demonstrate this.
-```
-
-Inline code inside table cells should still be distinguishable.
-
-| Language | Code |
-|-------------|--------------------|
-| Javascript | `var foo = "bar";` |
-| Ruby | `foo = "bar"{` |
-
-----------------
-
-Small images should be shown at their actual size.
-
-
-
-Large images should always scale down and fit in the content container.
-
-
-
-## Components
-
-### Alerts
-
-{{< alert >}}This is an alert.{{< /alert >}}
-{{< alert title="Note:" >}}This is an alert with a title.{{< /alert >}}
-{{< alert type="success" >}}This is a successful alert.{{< /alert >}}
-{{< alert type="warning" >}}This is a warning!{{< /alert >}}
-{{< alert type="warning" title="Warning!" >}}This is a warning with a
title!{{< /alert >}}
-
-
-## Sizing
-
-Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit
amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket
ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon
cow shoulder short ribs biltong.
-
-### Parameters available
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using pixels
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using rem
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-## Memory
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### RAM to use
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### More is better
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Used RAM
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-
-
-```
-This is the final element on the page and there should be no margin below this.
-```
diff --git a/content/en/blog/releases/_index.md
b/content/en/blog/releases/_index.md
deleted file mode 100644
index b1d9eb4f..00000000
--- a/content/en/blog/releases/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
----
-title: "New Releases"
-linkTitle: "Releases"
-weight: 20
----
-
-
diff --git a/content/en/blog/releases/in-depth-monoliths-detailed-spec.md
b/content/en/blog/releases/in-depth-monoliths-detailed-spec.md
deleted file mode 100755
index ba8bd522..00000000
--- a/content/en/blog/releases/in-depth-monoliths-detailed-spec.md
+++ /dev/null
@@ -1,245 +0,0 @@
-
----
-title: "Another Great Release"
-linkTitle: "Release New Features"
-date: 2018-01-04
-description: >
- A short lead description about this content page. Text here can also be
**bold** or _italic_ and can even be split over multiple paragraphs.
----
-
-Text can be **bold**, _italic_, or ~~strikethrough~~.
[Links](https://github.com) should be blue with no underlines (unless hovered
over).
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-There should be whitespace between paragraphs. There should be whitespace
between paragraphs. There should be whitespace between paragraphs. There should
be whitespace between paragraphs.
-
-> There should be no margin above this first sentence.
->
-> Blockquotes should be a lighter gray with a border along the left side in
the secondary color.
->
-> There should be no margin below this final sentence.
-
-## First Header
-
-This is a normal paragraph following a header. Bacon ipsum dolor sit amet
t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham
hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow
shoulder short ribs biltong. Bacon ipsum dolor sit amet t-bone doner shank
drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck
kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs
biltong. Bacon ipsum dolor [...]
-
-
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-On big screens, paragraphs and headings should not take up the full container
width, but we want tables, code blocks and similar to take the full width.
-
-Lorem markdownum tuta hospes stabat; idem saxum facit quaterque repetito
-occumbere, oves novem gestit haerebat frena; qui. Respicit recurvam erat:
-pignora hinc reppulit nos **aut**, aptos, ipsa.
-
-Meae optatos *passa est* Epiros utiliter *Talibus niveis*, hoc lata, edidit.
-Dixi ad aestum.
-
-## Header 2
-
-> This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone
doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump
pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder
short ribs biltong.
-
-### Header 3
-
-```
-This is a code block following a header.
-```
-
-#### Header 4
-
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-* This is an unordered list following a header.
-
-##### Header 5
-
-1. This is an ordered list following a header.
-2. This is an ordered list following a header.
-3. This is an ordered list following a header.
-
-###### Header 6
-
-| What | Follows |
-|-----------|-----------------|
-| A table | A header |
-| A table | A header |
-| A table | A header |
-
-----------------
-
-There's a horizontal rule above and below this.
-
-----------------
-
-Here is an unordered list:
-
-* Salt-n-Pepa
-* Bel Biv DeVoe
-* Kid 'N Play
-
-And an ordered list:
-
-1. Michael Jackson
-2. Michael Bolton
-3. Michael Bublé
-
-And an unordered task list:
-
-- [x] Create a sample markdown document
-- [x] Add task lists to it
-- [ ] Take a vacation
-
-And a "mixed" task list:
-
-- [ ] Steal underpants
-- ?
-- [ ] Profit!
-
-And a nested list:
-
-* Jackson 5
- * Michael
- * Tito
- * Jackie
- * Marlon
- * Jermaine
-* TMNT
- * Leonardo
- * Michelangelo
- * Donatello
- * Raphael
-
-Definition lists can be used with Markdown syntax. Definition terms are bold.
-
-Name
-: Godzilla
-
-Born
-: 1952
-
-Birthplace
-: Japan
-
-Color
-: Green
-
-
-----------------
-
-Tables should have bold headings and alternating shaded rows.
-
-| Artist | Album | Year |
-|-------------------|-----------------|------|
-| Michael Jackson | Thriller | 1982 |
-| Prince | Purple Rain | 1984 |
-| Beastie Boys | License to Ill | 1986 |
-
-If a table is too wide, it should scroll horizontally.
-
-| Artist | Album | Year | Label | Awards | Songs
|
-|-------------------|-----------------|------|-------------|----------|-----------|
-| Michael Jackson | Thriller | 1982 | Epic Records | Grammy Award for
Album of the Year, American Music Award for Favorite Pop/Rock Album, American
Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album,
Grammy Award for Best Engineered Album, Non-Classical | Wanna Be Startin'
Somethin', Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean,
Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life |
-| Prince | Purple Rain | 1984 | Warner Brothers Records |
Grammy Award for Best Score Soundtrack for Visual Media, American Music Award
for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album,
Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock
Performance by a Duo or Group with Vocal | Let's Go Crazy, Take Me With U, The
Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U,
Baby I'm a Star, Purple Rain |
-| Beastie Boys | License to Ill | 1986 | Mercury Records |
noawardsbutthistablecelliswide | Rhymin & Stealin, The New Style, She's Crafty,
Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep
Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low,
Time to Get Ill |
-
-----------------
-
-Code snippets like `var foo = "bar";` can be shown inline.
-
-Also, `this should vertically align` ~~`with this`~~ ~~and this~~.
-
-Code can also be shown in a block element.
-
-```
-foo := "bar";
-bar := "foo";
-```
-
-Code can also use syntax highlighting.
-
-```go
-func main() {
- input := `var foo = "bar";`
-
- lexer := lexers.Get("javascript")
- iterator, _ := lexer.Tokenise(nil, input)
- style := styles.Get("github")
- formatter := html.New(html.WithLineNumbers())
-
- var buff bytes.Buffer
- formatter.Format(&buff, style, iterator)
-
- fmt.Println(buff.String())
-}
-```
-
-```
-Long, single-line code blocks should not wrap. They should horizontally scroll
if they are too long. This line should be long enough to demonstrate this.
-```
-
-Inline code inside table cells should still be distinguishable.
-
-| Language | Code |
-|-------------|--------------------|
-| Javascript | `var foo = "bar";` |
-| Ruby | `foo = "bar"{` |
-
-----------------
-
-Small images should be shown at their actual size.
-
-
-
-Large images should always scale down and fit in the content container.
-
-
-
-## Components
-
-### Alerts
-
-{{< alert >}}This is an alert.{{< /alert >}}
-{{< alert title="Note:" >}}This is an alert with a title.{{< /alert >}}
-{{< alert type="success" >}}This is a successful alert.{{< /alert >}}
-{{< alert type="warning" >}}This is a warning!{{< /alert >}}
-{{< alert type="warning" title="Warning!" >}}This is a warning with a
title!{{< /alert >}}
-
-
-## Sizing
-
-Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit
amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket
ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon
cow shoulder short ribs biltong.
-
-### Parameters available
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using pixels
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Using rem
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-## Memory
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### RAM to use
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### More is better
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-### Used RAM
-
-Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta
chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola
ham hock filet mignon cow shoulder short ribs biltong.
-
-
-
-```
-This is the final element on the page and there should be no margin below this.
-```
diff --git a/content/en/blog/toolchain/_index.md
b/content/en/blog/toolchain/_index.md
new file mode 100644
index 00000000..45f468c4
--- /dev/null
+++ b/content/en/blog/toolchain/_index.md
@@ -0,0 +1,5 @@
+---
+title: "HugeGraph ToolChain"
+linkTitle: "HugeGraph ToolChain"
+weight: 2
+---
diff --git a/content/en/docs/config/config-option.md
b/content/en/docs/config/config-option.md
index 8bf5a1da..c018ef29 100644
--- a/content/en/docs/config/config-option.md
+++ b/content/en/docs/config/config-option.md
@@ -61,7 +61,7 @@ Basic Config Options and Backend Config Options correspond to
configuration file
| config option | default value
| description
[...]
|---------------------------------------|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
-| gremlin.graph |
org.apache.hugegraph.HugeFactory | Gremlin entrance to create
graph.
[...]
+| gremlin.graph | org.apache.hugegraph.HugeFactory
| Gremlin entrance to create graph.
[...]
| backend | rocksdb
| The data store type, available values are [memory, rocksdb,
cassandra, scylladb, hbase, mysql].
[...]
| serializer | binary
| The serializer for backend store, available values are [text, binary,
cassandra, hbase, mysql].
[...]
| store | hugegraph
| The database name like Cassandra Keyspace.
[...]
@@ -69,7 +69,7 @@ Basic Config Options and Backend Config Options correspond to
configuration file
| store.graph | g
| The graph table name, which store vertex, edge and property.
[...]
| store.schema | m
| The schema table name, which store meta data.
[...]
| store.system | s
| The system table name, which store system data.
[...]
-| schema.illegal_name_regex | .*\s+$|~.*
| The regex specified the illegal format for schema name.
[...]
+| schema.illegal_name_regex | .*\s+$|~.*
| The regex specified the illegal format for schema name.
[...]
| schema.cache_capacity | 10000
| The max cache size(items) of schema cache.
[...]
| vertex.cache_type | l2
| The type of vertex cache, allowed values are [l1, l2].
[...]
| vertex.cache_capacity | 10000000
| The max cache size(items) of vertex cache.
[...]
@@ -185,6 +185,8 @@ Other options are consistent with the Cassandra backend.
| rocksdb.data_disks | []
| The optimized disks for storing data of RocksDB.
The format of each element: `STORE/TABLE: /path/disk`.Allowed keys are
[g/vertex, g/edge_out, g/edge_in, g/vertex_label_index, g/edge_label_index,
g/range_int_index, g/range_float_index, g/range_long_index,
g/range_double_index, g/secondary_index, g/search [...]
| rocksdb.data_path | rocksdb-data/data
| The path for storing data of RocksDB.
[...]
| rocksdb.wal_path | rocksdb-data/wal
| The path for storing WAL of RocksDB.
[...]
+| rocksdb.option_path |
| The YAML file for configuring ToplingDB/RocksDB
parameters.
[...]
+| rocksdb.open_http | false
| Whether to start ToplingDB HTTP service. Security:
enable only in trusted networks and restrict access (firewall/ACL); the port
and document_root are configured in the YAML
(http.listening_ports/document_root).
[...]
| rocksdb.allow_mmap_reads | false
| Allow the OS to mmap file for reading sst tables.
[...]
| rocksdb.allow_mmap_writes | false
| Allow the OS to mmap file for writing.
[...]
| rocksdb.block_cache_capacity | 8388608
| The amount of block cache in bytes that will be
used by RocksDB, 0 means no block cache.
[...]
diff --git
a/content/en/docs/contribution-guidelines/hugegraph-server-idea-setup.md
b/content/en/docs/contribution-guidelines/hugegraph-server-idea-setup.md
index 43e5cd89..698af851 100644
--- a/content/en/docs/contribution-guidelines/hugegraph-server-idea-setup.md
+++ b/content/en/docs/contribution-guidelines/hugegraph-server-idea-setup.md
@@ -35,6 +35,8 @@ cp -r hugegraph-dist/src/assembly/static/scripts
hugegraph-dist/src/assembly/sta
Replace `path-to-your-directory` with the path to the directory where you want
to copy the files.
+> After introducing ToplingDB, developers need to execute the
`preload-topling.sh` script, which automatically extracts the required dynamic
libraries and Web Server static resources into the `library` directory located
alongside the `bin` directory (the static resources will also be copied to
`/dev/shm/rocksdb_resource` ).
+
#### 2. Configure `InitStore` to initialize the graph
First, you need to configure the database backend in the configuration files.
In this example, we will use RocksDB. Open
`path-to-your-directory/conf/graphs/hugegraph.properties` and configure it as
follows:
@@ -51,6 +53,9 @@ Next, open the `Run/Debug Configurations` panel in IntelliJ
IDEA and create a ne
- Select `hugegraph-dist` as the `Use classpath of module`.
- Set the `Main class` to `org.apache.hugegraph.cmd.InitStore`.
- Set the program arguments to `conf/rest-server.properties`. Note that the
path here is relative to the working directory, so make sure to set the working
directory to `path-to-your-directory`.
+- ToplingDB requires preloading dynamic libraries via the `LD_PRELOAD`
mechanism. Developers need to set two environment variables: `LD_LIBRARY_PATH`
should point to the `library` directory extracted by `preload-topling.sh`, and
`LD_PRELOAD` should be set to `libjemalloc.so:librocksdbjni-linux64.so` to
ensure the necessary libraries are correctly loaded at runtime.
+ - LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH
+ - LD_PRELOAD=libjemalloc.so:librocksdbjni-linux64.so
> If **user authentication** (authenticator) is configured for
> HugeGraph-Server in the **Java 11** environment, you need to refer to the
> script
> [configuration](https://github.com/apache/incubator-hugegraph/blob/master/hugegraph-server/hugegraph-dist/src/assembly/static/bin/init-store.sh#L52)
> in the binary package and add the following **VM options**:
>
@@ -164,4 +169,4 @@ This is because Log4j2 uses asynchronous loggers. You can
refer to the [official
2. [Local Debugging Guide for HugeGraph Server
(Win/Unix)](https://gist.github.com/imbajin/1661450f000cd62a67e46d4f1abfe82c)
3. ["package sun.misc does not exist" compilation
error](https://youtrack.jetbrains.com/issue/IDEA-180033)
4. [Cannot compile: java: package sun.misc does not
exist](https://youtrack.jetbrains.com/issue/IDEA-201168)
-5. [The code-style config for HugeGraph in
IDEA](https://github.com/apache/incubator-hugegraph/wiki/The-style-config-for-HugeGraph-in-IDEA)
\ No newline at end of file
+5. [The code-style config for HugeGraph in
IDEA](https://github.com/apache/incubator-hugegraph/wiki/The-style-config-for-HugeGraph-in-IDEA)
diff --git a/content/en/docs/quickstart/hugegraph/hugegraph-server.md
b/content/en/docs/quickstart/hugegraph/hugegraph-server.md
index bbed2963..d4ecc1d6 100644
--- a/content/en/docs/quickstart/hugegraph/hugegraph-server.md
+++ b/content/en/docs/quickstart/hugegraph/hugegraph-server.md
@@ -46,8 +46,8 @@ We can use `docker run -itd --name=graph -e PASSWORD=xxx -p
8080:8080 hugegraph/
Optional:
1. use `docker exec -it graph bash` to enter the container to do some
operations.
-2. use `docker run -itd --name=graph -p 8080:8080 -e PRELOAD="true"
hugegraph/hugegraph:1.5.0` to start with a **built-in** example graph. We can
use `RESTful API` to verify the result. The detailed step can refer to
[5.1.7](#517-create-an-example-graph-when-startup)
-3. use `-e PASSWORD=xxx` to enable auth mode and set the password for admin.
You can find more details from [Config
Authentication](/docs/config/config-authentication#Use-docker-to-enble-authentication-mode)
+2. use `docker run -itd --name=graph -p 8080:8080 -e PRELOAD="true"
hugegraph/hugegraph:1.5.0` to start with a **built-in** example graph. We can
use `RESTful API` to verify the result. The detailed step can refer to
[5.1.9](#519-create-an-example-graph-when-startup)
+3. use `-e PASSWORD=xxx` to enable auth mode and set the password for admin.
You can find more details from [Config
Authentication](/docs/config/config-authentication#use-docker-to-enable-authentication-mode)
If you use docker desktop, you can set the option like:
<div style="text-align: center;">
@@ -317,7 +317,7 @@ The prompted url is the same as the restserver.url
configured in rest-server.pro
</details>
-##### 5.1.3 RocksDB
+##### 5.1.3 RocksDB / ToplingDB
<details>
<summary>Click to expand/collapse RocksDB configuration and startup
methods</summary>
@@ -348,6 +348,8 @@ Starting HugeGraphServer...
Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
```
+**ToplingDB (Beta)**: As a high-performance alternative to RocksDB, please
refer to the configuration guide: [ToplingDB Quick Start]({{< ref
path="/blog/hugegraph/toplingdb/toplingdb-quick-start.md" lang="en">}})
+
</details>
##### 5.1.4 Cassandra
@@ -496,7 +498,52 @@ Connecting to HugeGraphServer
(http://127.0.0.1:8080/graphs)....OK
</details>
-##### 5.1.7 Create an example graph when startup
+##### 5.1.7 MySQL
+
+<details>
+<summary>Click to expand/collapse MySQL configuration and startup
methods</summary>
+
+> Because MySQL is licensed under the GPL and incompatible with the Apache
License, users must install MySQL themselves, [download
link](https://dev.mysql.com/downloads/mysql/)
+
+Download the MySQL [driver
package](https://repo1.maven.org/maven2/mysql/mysql-connector-java/), such as
`mysql-connector-java-8.0.30.jar`, and place it in the `lib` directory of
HugeGraph-Server.
+
+Update `hugegraph.properties` to configure the database URL, username, and
password.
+`store` is the database name; it will be created automatically if it doesn't
exist.
+
+```properties
+backend=mysql
+serializer=mysql
+
+store=hugegraph
+
+# mysql backend config
+jdbc.driver=com.mysql.cj.jdbc.Driver
+jdbc.url=jdbc:mysql://127.0.0.1:3306
+jdbc.username=
+jdbc.password=
+jdbc.reconnect_max_times=3
+jdbc.reconnect_interval=3
+jdbc.ssl_mode=false
+```
+
+Initialize the database (required for first startup or when manually adding
new configurations to `conf/graphs/`)
+
+```bash
+cd *hugegraph-${version}
+bin/init-store.sh
+```
+
+Start server
+
+```bash
+bin/start-hugegraph.sh
+Starting HugeGraphServer...
+Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
+```
+
+</details>
+
+##### 5.1.8 Create an example graph when startup
Carry the `-p true` arguments when starting the script, which indicates
`preload`, to create a sample graph.
@@ -519,7 +566,7 @@ This indicates the successful creation of the sample graph.
#### 5.2 Use Docker to startup
-In [3.3 Use Docker container](#33-use-docker-container), we have introduced
how to use docker to deploy `hugegraph-server`. `server` can also preload an
example graph by setting the parameter.
+In [3.1 Use Docker
container](#31-use-docker-container-convenient-for-testdev), we have introduced
how to use docker to deploy `hugegraph-server`. `server` can also preload an
example graph by setting the parameter.
##### 5.2.1 Uses Cassandra as storage