You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geaflow.apache.org by gi...@apache.org on 2025/10/20 09:39:52 UTC
(geaflow-website) branch asf-site updated: deploy: b9c2c63f3c0c325ff23e8b9214f5a76537790624
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/geaflow-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 88a1ed7 deploy: b9c2c63f3c0c325ff23e8b9214f5a76537790624
88a1ed7 is described below
commit 88a1ed7b6c88963854b230b70acc05c1e0e316de
Author: yaozhongq <ya...@users.noreply.github.com>
AuthorDate: Mon Oct 20 09:39:46 2025 +0000
deploy: b9c2c63f3c0c325ff23e8b9214f5a76537790624
---
404.html | 4 +-
Home/components/Architecture/index.html | 4 +-
Home/components/Banner/index.html | 4 +-
Home/components/Introduction/index.html | 6 +-
Home/components/Repo/index.html | 4 +-
Home/index.html | 6 +-
...6b5d0a358c-70edfbcec11c709d6360e96997248e2e.png | Bin 934189 -> 0 bytes
...b96094f164-4efc37c63ab454076abdf14eac3143ad.png | Bin 3379618 -> 0 bytes
...be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png | Bin 193139 -> 0 bytes
...72e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png | Bin 0 -> 1598233 bytes
...b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png | Bin 2861663 -> 0 bytes
...4e7332b964-641348051a356f1885ea6c9a3a45fb64.png | Bin 8477156 -> 0 bytes
assets/js/00cb91d7.7ea9fe89.js | 1 +
assets/js/00cb91d7.b1d4d250.js | 1 -
assets/js/1ece80e2.90ddb50f.js | 1 -
assets/js/1ece80e2.92612bec.js | 1 +
assets/js/265ef30a.69128913.js | 1 -
assets/js/265ef30a.b3c0fb81.js | 1 +
assets/js/2bbf1102.41fd6014.js | 1 -
assets/js/2bbf1102.aefffcae.js | 1 +
assets/js/2d69a39e.8cc9e9a7.js | 1 +
assets/js/2d69a39e.d50df2b6.js | 1 -
assets/js/6554937b.6a44064d.js | 1 -
assets/js/6554937b.8e768645.js | 1 +
assets/js/672bc763.31bff1e2.js | 1 -
assets/js/672bc763.fbd8e8ec.js | 1 +
assets/js/814f3328.143507b9.js | 1 +
assets/js/814f3328.e56746b2.js | 1 -
assets/js/accb5cff.7bcc0a41.js | 1 +
assets/js/accb5cff.90f6d74a.js | 1 -
assets/js/af329538.63b12d80.js | 1 -
assets/js/af329538.7a824854.js | 1 +
assets/js/b6d542e4.1f4e6e95.js | 1 -
assets/js/b6d542e4.593804e5.js | 1 +
assets/js/c3276b5c.66f59272.js | 1 -
assets/js/c3276b5c.f2b6f774.js | 1 +
assets/js/cc93c679.08c2f717.js | 1 -
assets/js/cc93c679.fe04ce48.js | 1 +
assets/js/e95b37e1.2713690d.js | 1 +
assets/js/e95b37e1.bf2bceb9.js | 1 -
assets/js/f81c1134.5a2e5517.js | 1 +
assets/js/f81c1134.8f3f87b9.js | 1 -
assets/js/{main.2f6cb1f3.js => main.55991ef2.js} | 4 +-
...js.LICENSE.txt => main.55991ef2.js.LICENSE.txt} | 0
...e~main.2473f0ef.js => runtime~main.8d1155bf.js} | 2 +-
blog/27/index.html | 23 ++---
blog/28/index.html | 21 ++--
blog/29/index.html | 24 ++---
blog/30/index.html | 23 ++---
blog/31/index.html | 37 ++++---
blog/32/index.html | 18 ++--
blog/archive/index.html | 6 +-
blog/atom.xml | 110 +++++++++-----------
blog/index.html | 23 ++---
blog/rss.xml | 110 +++++++++-----------
community/community/index.html | 4 +-
community/how_to_contribute/index.html | 4 +-
community/how_to_release/index.html | 4 +-
community/security/index.html | 4 +-
community/zh/community/index.html | 4 +-
community/zh/how_to_contribute/index.html | 4 +-
community/zh/how_to_release/index.html | 4 +-
community/zh/security/index.html | 4 +-
.../api/graph/compute/index.html | 4 +-
.../api/graph/traversal/index.html | 4 +-
.../api/overview/index.html | 4 +-
.../api/stream/process/index.html | 4 +-
.../api/stream/sink/index.html | 4 +-
.../api/stream/source/index.html | 4 +-
docs/application-development/chat_guide/index.html | 4 +-
.../connector/common/index.html | 4 +-
.../connector/console/index.html | 4 +-
.../connector/file/index.html | 4 +-
.../connector/hbase/index.html | 4 +-
.../connector/hive/index.html | 4 +-
.../connector/hudi/index.html | 4 +-
.../connector/jdbc/index.html | 4 +-
.../connector/kafka/index.html | 4 +-
.../connector/pulsar/index.html | 4 +-
.../connector/udc/index.html | 4 +-
.../dsl/build-in/aggregate/index.html | 4 +-
.../dsl/build-in/condition/index.html | 4 +-
.../dsl/build-in/date/index.html | 4 +-
.../dsl/build-in/logical/index.html | 4 +-
.../dsl/build-in/math/index.html | 4 +-
.../dsl/build-in/string/index.html | 4 +-
.../dsl/build-in/table/index.html | 4 +-
.../dsl/overview/index.html | 4 +-
.../dsl/syntax/dcl/index.html | 4 +-
.../dsl/syntax/ddl/index.html | 4 +-
.../dsl/syntax/dml/index.html | 4 +-
.../dsl/syntax/dql/match/index.html | 4 +-
.../dsl/syntax/dql/select/index.html | 4 +-
.../dsl/syntax/dql/union/index.html | 4 +-
.../dsl/syntax/dql/with/index.html | 4 +-
.../dsl/udf/udaf/index.html | 4 +-
.../application-development/dsl/udf/udf/index.html | 4 +-
.../dsl/udf/udga/index.html | 4 +-
.../dsl/udf/udtf/index.html | 4 +-
docs/concepts/console_principle/index.html | 4 +-
docs/concepts/dsl_principle/index.html | 4 +-
docs/concepts/framework_principle/index.html | 4 +-
docs/concepts/glossary/index.html | 4 +-
docs/concepts/graph_view/index.html | 4 +-
docs/concepts/state_principle/index.html | 4 +-
docs/concepts/stream_graph/index.html | 4 +-
docs/contacts/index.html | 4 +-
docs/contribution/index.html | 4 +-
docs/deploy/collaborate_with_g6vp/index.html | 4 +-
docs/deploy/dashboard/index.html | 4 +-
docs/deploy/install_guide/index.html | 4 +-
docs/deploy/install_llm/index.html | 4 +-
docs/deploy/install_minikube/index.html | 4 +-
docs/deploy/quick_start_operator/index.html | 4 +-
docs/guide/index.html | 4 +-
docs/introduction/index.html | 4 +-
docs/quick_start/quick_start/index.html | 4 +-
docs/quick_start/quick_start_docker/index.html | 4 +-
docs/quick_start/quick_start_infer&UDF/index.html | 4 +-
.../quick_start_sql_to_graph/index.html | 4 +-
docs/reference/vs_join/index.html | 4 +-
docs/thanks/index.html | 4 +-
.../api/graph/compute/index.html | 4 +-
.../api/graph/traversal/index.html | 4 +-
.../api/overview/index.html | 4 +-
.../api/stream/process/index.html | 4 +-
.../api/stream/sink/index.html | 4 +-
.../api/stream/source/index.html | 4 +-
.../application-development/chat_guide/index.html | 4 +-
.../connector/common/index.html | 4 +-
.../connector/console/index.html | 4 +-
.../connector/file/index.html | 4 +-
.../connector/hbase/index.html | 4 +-
.../connector/hive/index.html | 4 +-
.../connector/hudi/index.html | 4 +-
.../connector/jdbc/index.html | 4 +-
.../connector/kafka/index.html | 4 +-
.../connector/pulsar/index.html | 4 +-
.../connector/udc/index.html | 4 +-
.../dsl/build-in/aggregate/index.html | 4 +-
.../dsl/build-in/condition/index.html | 4 +-
.../dsl/build-in/date/index.html | 4 +-
.../dsl/build-in/logical/index.html | 4 +-
.../dsl/build-in/math/index.html | 4 +-
.../dsl/build-in/string/index.html | 4 +-
.../dsl/build-in/table/index.html | 4 +-
.../dsl/overview/index.html | 4 +-
.../dsl/syntax/dcl/index.html | 4 +-
.../dsl/syntax/ddl/index.html | 4 +-
.../dsl/syntax/dml/index.html | 4 +-
.../dsl/syntax/dql/match/index.html | 4 +-
.../dsl/syntax/dql/select/index.html | 4 +-
.../dsl/syntax/dql/union/index.html | 4 +-
.../dsl/syntax/dql/with/index.html | 4 +-
.../dsl/udf/udaf/index.html | 4 +-
.../application-development/dsl/udf/udf/index.html | 4 +-
.../dsl/udf/udga/index.html | 4 +-
.../dsl/udf/udtf/index.html | 4 +-
docs/zh/concepts/console_principle/index.html | 4 +-
docs/zh/concepts/dsl_principle/index.html | 4 +-
docs/zh/concepts/framework_principle/index.html | 4 +-
docs/zh/concepts/glossary/index.html | 4 +-
docs/zh/concepts/graph_view/index.html | 4 +-
docs/zh/concepts/state_principle/index.html | 4 +-
docs/zh/concepts/stream_graph/index.html | 4 +-
docs/zh/contacts/index.html | 4 +-
docs/zh/contribution/index.html | 4 +-
docs/zh/deploy/collaborate_with_g6vp/index.html | 4 +-
docs/zh/deploy/dashboard/index.html | 4 +-
docs/zh/deploy/install_guide/index.html | 4 +-
docs/zh/deploy/install_llm/index.html | 4 +-
docs/zh/deploy/install_minikube/index.html | 4 +-
docs/zh/deploy/quick_start_operator/index.html | 4 +-
docs/zh/guide/index.html | 4 +-
docs/zh/introduction/index.html | 4 +-
docs/zh/quick_start/quick_start/index.html | 4 +-
docs/zh/quick_start/quick_start_docker/index.html | 4 +-
.../quick_start/quick_start_infer&UDF/index.html | 4 +-
.../quick_start_sql_to_graph/index.html | 4 +-
docs/zh/reference/vs_join/index.html | 4 +-
docs/zh/thanks/index.html | 4 +-
download/index.html | 4 +-
index.html | 6 +-
markdown-page/index.html | 4 +-
search/index.html | 4 +-
zh-CN/404.html | 2 +-
zh-CN/Home/components/Architecture/index.html | 2 +-
zh-CN/Home/components/Banner/index.html | 2 +-
zh-CN/Home/components/Introduction/index.html | 2 +-
zh-CN/Home/components/Repo/index.html | 2 +-
zh-CN/Home/index.html | 2 +-
...6b5d0a358c-70edfbcec11c709d6360e96997248e2e.png | Bin 934189 -> 0 bytes
...b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png | Bin 2861663 -> 0 bytes
...4e7332b964-641348051a356f1885ea6c9a3a45fb64.png | Bin 8477156 -> 0 bytes
zh-CN/assets/js/06a90f65.0cdb7033.js | 1 -
zh-CN/assets/js/06a90f65.497eed49.js | 1 +
zh-CN/assets/js/185e0e38.276c0fe7.js | 1 +
zh-CN/assets/js/185e0e38.bcb4401b.js | 1 -
zh-CN/assets/js/6e425d28.d5f9ea0a.js | 1 -
zh-CN/assets/js/6e425d28.d8d47760.js | 1 +
zh-CN/assets/js/75884e4c.0be93faf.js | 1 -
zh-CN/assets/js/75884e4c.cfa29e59.js | 1 +
zh-CN/assets/js/7dcafcf6.4cb5c11c.js | 1 -
zh-CN/assets/js/7dcafcf6.e15a1455.js | 1 +
zh-CN/assets/js/814f3328.71d956a9.js | 1 +
zh-CN/assets/js/814f3328.b6350a0c.js | 1 -
zh-CN/assets/js/86c1d116.ad9a7e1f.js | 1 +
zh-CN/assets/js/86c1d116.ee11d782.js | 1 -
zh-CN/assets/js/943ae4f2.5fd71589.js | 1 -
zh-CN/assets/js/943ae4f2.89abb66e.js | 1 +
zh-CN/assets/js/a26032ac.ee13ea01.js | 1 +
zh-CN/assets/js/a26032ac.f1bde98f.js | 1 -
zh-CN/assets/js/b095ded5.590083aa.js | 1 +
zh-CN/assets/js/b095ded5.c108d714.js | 1 -
zh-CN/assets/js/b8c69b13.218175c1.js | 1 +
zh-CN/assets/js/b8c69b13.b9008a44.js | 1 -
zh-CN/assets/js/b9089f90.6a7042b3.js | 1 -
zh-CN/assets/js/b9089f90.9ad54c8f.js | 1 +
zh-CN/assets/js/eb28f0ec.82445210.js | 1 +
zh-CN/assets/js/eb28f0ec.8f6b78ef.js | 1 -
zh-CN/assets/js/fcae414e.1a484401.js | 1 +
zh-CN/assets/js/fcae414e.7fa28240.js | 1 -
...e~main.edc1846e.js => runtime~main.2efe8f41.js} | 2 +-
zh-CN/blog/27/index.html | 33 +++---
zh-CN/blog/28/index.html | 13 ++-
zh-CN/blog/29/index.html | 34 +++----
zh-CN/blog/30/index.html | 8 +-
zh-CN/blog/31/index.html | 35 ++++---
zh-CN/blog/32/index.html | 12 +--
zh-CN/blog/archive/index.html | 4 +-
zh-CN/blog/atom.xml | 111 ++++++++++-----------
zh-CN/blog/index.html | 21 ++--
zh-CN/blog/rss.xml | 111 ++++++++++-----------
zh-CN/community/community/index.html | 2 +-
zh-CN/community/how_to_contribute/index.html | 2 +-
zh-CN/community/how_to_release/index.html | 2 +-
zh-CN/community/security/index.html | 2 +-
zh-CN/community/zh/community/index.html | 2 +-
zh-CN/community/zh/how_to_contribute/index.html | 2 +-
zh-CN/community/zh/how_to_release/index.html | 2 +-
zh-CN/community/zh/security/index.html | 2 +-
.../api/graph/compute/index.html | 2 +-
.../api/graph/traversal/index.html | 2 +-
.../api/overview/index.html | 2 +-
.../api/stream/process/index.html | 2 +-
.../api/stream/sink/index.html | 2 +-
.../api/stream/source/index.html | 2 +-
.../application-development/chat_guide/index.html | 2 +-
.../connector/common/index.html | 2 +-
.../connector/console/index.html | 2 +-
.../connector/file/index.html | 2 +-
.../connector/hbase/index.html | 2 +-
.../connector/hive/index.html | 2 +-
.../connector/hudi/index.html | 2 +-
.../connector/jdbc/index.html | 2 +-
.../connector/kafka/index.html | 2 +-
.../connector/pulsar/index.html | 2 +-
.../connector/udc/index.html | 2 +-
.../dsl/build-in/aggregate/index.html | 2 +-
.../dsl/build-in/condition/index.html | 2 +-
.../dsl/build-in/date/index.html | 2 +-
.../dsl/build-in/logical/index.html | 2 +-
.../dsl/build-in/math/index.html | 2 +-
.../dsl/build-in/string/index.html | 2 +-
.../dsl/build-in/table/index.html | 2 +-
.../dsl/overview/index.html | 2 +-
.../dsl/syntax/dcl/index.html | 2 +-
.../dsl/syntax/ddl/index.html | 2 +-
.../dsl/syntax/dml/index.html | 2 +-
.../dsl/syntax/dql/match/index.html | 2 +-
.../dsl/syntax/dql/select/index.html | 2 +-
.../dsl/syntax/dql/union/index.html | 2 +-
.../dsl/syntax/dql/with/index.html | 2 +-
.../dsl/udf/udaf/index.html | 2 +-
.../application-development/dsl/udf/udf/index.html | 2 +-
.../dsl/udf/udga/index.html | 2 +-
.../dsl/udf/udtf/index.html | 2 +-
zh-CN/docs/concepts/console_principle/index.html | 2 +-
zh-CN/docs/concepts/dsl_principle/index.html | 2 +-
zh-CN/docs/concepts/framework_principle/index.html | 2 +-
zh-CN/docs/concepts/glossary/index.html | 2 +-
zh-CN/docs/concepts/graph_view/index.html | 2 +-
zh-CN/docs/concepts/state_principle/index.html | 2 +-
zh-CN/docs/concepts/stream_graph/index.html | 2 +-
zh-CN/docs/contacts/index.html | 2 +-
zh-CN/docs/contribution/index.html | 2 +-
zh-CN/docs/deploy/collaborate_with_g6vp/index.html | 2 +-
zh-CN/docs/deploy/dashboard/index.html | 2 +-
zh-CN/docs/deploy/install_guide/index.html | 2 +-
zh-CN/docs/deploy/install_llm/index.html | 2 +-
zh-CN/docs/deploy/install_minikube/index.html | 2 +-
zh-CN/docs/deploy/quick_start_operator/index.html | 2 +-
zh-CN/docs/guide/index.html | 2 +-
zh-CN/docs/introduction/index.html | 2 +-
zh-CN/docs/quick_start/quick_start/index.html | 2 +-
.../docs/quick_start/quick_start_docker/index.html | 2 +-
.../quick_start/quick_start_infer&UDF/index.html | 2 +-
.../quick_start_sql_to_graph/index.html | 2 +-
zh-CN/docs/reference/vs_join/index.html | 2 +-
zh-CN/docs/thanks/index.html | 2 +-
.../api/graph/compute/index.html | 2 +-
.../api/graph/traversal/index.html | 2 +-
.../api/overview/index.html | 2 +-
.../api/stream/process/index.html | 2 +-
.../api/stream/sink/index.html | 2 +-
.../api/stream/source/index.html | 2 +-
.../application-development/chat_guide/index.html | 2 +-
.../connector/common/index.html | 2 +-
.../connector/console/index.html | 2 +-
.../connector/file/index.html | 2 +-
.../connector/hbase/index.html | 2 +-
.../connector/hive/index.html | 2 +-
.../connector/hudi/index.html | 2 +-
.../connector/jdbc/index.html | 2 +-
.../connector/kafka/index.html | 2 +-
.../connector/pulsar/index.html | 2 +-
.../connector/udc/index.html | 2 +-
.../dsl/build-in/aggregate/index.html | 2 +-
.../dsl/build-in/condition/index.html | 2 +-
.../dsl/build-in/date/index.html | 2 +-
.../dsl/build-in/logical/index.html | 2 +-
.../dsl/build-in/math/index.html | 2 +-
.../dsl/build-in/string/index.html | 2 +-
.../dsl/build-in/table/index.html | 2 +-
.../dsl/overview/index.html | 2 +-
.../dsl/syntax/dcl/index.html | 2 +-
.../dsl/syntax/ddl/index.html | 2 +-
.../dsl/syntax/dml/index.html | 2 +-
.../dsl/syntax/dql/match/index.html | 2 +-
.../dsl/syntax/dql/select/index.html | 2 +-
.../dsl/syntax/dql/union/index.html | 2 +-
.../dsl/syntax/dql/with/index.html | 2 +-
.../dsl/udf/udaf/index.html | 2 +-
.../application-development/dsl/udf/udf/index.html | 2 +-
.../dsl/udf/udga/index.html | 2 +-
.../dsl/udf/udtf/index.html | 2 +-
.../docs/zh/concepts/console_principle/index.html | 2 +-
zh-CN/docs/zh/concepts/dsl_principle/index.html | 2 +-
.../zh/concepts/framework_principle/index.html | 2 +-
zh-CN/docs/zh/concepts/glossary/index.html | 2 +-
zh-CN/docs/zh/concepts/graph_view/index.html | 2 +-
zh-CN/docs/zh/concepts/state_principle/index.html | 2 +-
zh-CN/docs/zh/concepts/stream_graph/index.html | 2 +-
zh-CN/docs/zh/contacts/index.html | 2 +-
zh-CN/docs/zh/contribution/index.html | 2 +-
.../zh/deploy/collaborate_with_g6vp/index.html | 2 +-
zh-CN/docs/zh/deploy/dashboard/index.html | 2 +-
zh-CN/docs/zh/deploy/install_guide/index.html | 2 +-
zh-CN/docs/zh/deploy/install_llm/index.html | 2 +-
zh-CN/docs/zh/deploy/install_minikube/index.html | 2 +-
.../docs/zh/deploy/quick_start_operator/index.html | 2 +-
zh-CN/docs/zh/guide/index.html | 2 +-
zh-CN/docs/zh/introduction/index.html | 2 +-
zh-CN/docs/zh/quick_start/quick_start/index.html | 2 +-
.../zh/quick_start/quick_start_docker/index.html | 2 +-
.../quick_start/quick_start_infer&UDF/index.html | 2 +-
.../quick_start_sql_to_graph/index.html | 2 +-
zh-CN/docs/zh/reference/vs_join/index.html | 2 +-
zh-CN/docs/zh/thanks/index.html | 2 +-
zh-CN/download/index.html | 2 +-
zh-CN/index.html | 2 +-
zh-CN/markdown-page/index.html | 2 +-
zh-CN/search/index.html | 2 +-
363 files changed, 798 insertions(+), 867 deletions(-)
diff --git a/404.html b/404.html
index 444e829..a1ac249 100644
--- a/404.html
+++ b/404.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/Home/components/Architecture/index.html b/Home/components/Architecture/index.html
index 1e9a1de..47e3a7d 100644
--- a/Home/components/Architecture/index.html
+++ b/Home/components/Architecture/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/Home/components/Banner/index.html b/Home/components/Banner/index.html
index 9561dbf..a9e4a80 100644
--- a/Home/components/Banner/index.html
+++ b/Home/components/Banner/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/Home/components/Introduction/index.html b/Home/components/Introduction/index.html
index 93bd6db..10a20d2 100644
--- a/Home/components/Introduction/index.html
+++ b/Home/components/Introduction/index.html
@@ -15,13 +15,13 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
</body>
</html>
\ No newline at end of file
diff --git a/Home/components/Repo/index.html b/Home/components/Repo/index.html
index 030183a..67e921d 100644
--- a/Home/components/Repo/index.html
+++ b/Home/components/Repo/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/Home/index.html b/Home/index.html
index 6e3f4d5..ee9d6b7 100644
--- a/Home/index.html
+++ b/Home/index.html
@@ -15,13 +15,13 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
</body>
</html>
\ No newline at end of file
diff --git a/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png b/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png
deleted file mode 100644
index 7c22126..0000000
Binary files a/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png and /dev/null differ
diff --git a/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png b/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png
deleted file mode 100644
index dbe748b..0000000
Binary files a/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png and /dev/null differ
diff --git a/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png b/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png
deleted file mode 100644
index 9c4dc12..0000000
Binary files a/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png and /dev/null differ
diff --git a/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png b/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png
new file mode 100644
index 0000000..586a67f
Binary files /dev/null and b/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png differ
diff --git a/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png b/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png
deleted file mode 100644
index 57a4db8..0000000
Binary files a/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png and /dev/null differ
diff --git a/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png b/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png
deleted file mode 100644
index 9932c9c..0000000
Binary files a/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png and /dev/null differ
diff --git a/assets/js/00cb91d7.7ea9fe89.js b/assets/js/00cb91d7.7ea9fe89.js
new file mode 100644
index 0000000..9e3282d
--- /dev/null
+++ b/assets/js/00cb91d7.7ea9fe89.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6937],{1377:e=>{e.exports=JSON.parse('{"permalink":"/blog/32","source":"@site/blog/32.md","title":"Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing","description":"March 2025 saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version i [...]
\ No newline at end of file
diff --git a/assets/js/00cb91d7.b1d4d250.js b/assets/js/00cb91d7.b1d4d250.js
deleted file mode 100644
index 011abfb..0000000
--- a/assets/js/00cb91d7.b1d4d250.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6937],{1377:e=>{e.exports=JSON.parse('{"permalink":"/blog/32","source":"@site/blog/32.md","title":"Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing","description":"March 2025 saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature u [...]
\ No newline at end of file
diff --git a/assets/js/1ece80e2.90ddb50f.js b/assets/js/1ece80e2.90ddb50f.js
deleted file mode 100644
index a9f120a..0000000
--- a/assets/js/1ece80e2.90ddb50f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7524],{5841:e=>{e.exports=JSON.parse('{"permalink":"/blog/28","source":"@site/blog/28.md","title":"Principles and Applications of Incremental Match in Streaming Graph Computing","description":"Problem Background","date":"2025-06-03T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","d [...]
\ No newline at end of file
diff --git a/assets/js/1ece80e2.92612bec.js b/assets/js/1ece80e2.92612bec.js
new file mode 100644
index 0000000..ab511a5
--- /dev/null
+++ b/assets/js/1ece80e2.92612bec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7524],{5841:e=>{e.exports=JSON.parse('{"permalink":"/blog/28","source":"@site/blog/28.md","title":"Principles and Applications of Incremental Match in Streaming Graph Computing","description":"Problem Background","date":"2025-06-03T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","d [...]
\ No newline at end of file
diff --git a/assets/js/265ef30a.69128913.js b/assets/js/265ef30a.69128913.js
deleted file mode 100644
index de56564..0000000
--- a/assets/js/265ef30a.69128913.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6165],{5863:e=>{e.exports=JSON.parse('{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring GeaFlow\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Exploring GeaFlow\'s Temporal Capabilities \ [...]
\ No newline at end of file
diff --git a/assets/js/265ef30a.b3c0fb81.js b/assets/js/265ef30a.b3c0fb81.js
new file mode 100644
index 0000000..9b15323
--- /dev/null
+++ b/assets/js/265ef30a.b3c0fb81.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6165],{5863:e=>{e.exports=JSON.parse('{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring Apache GeaFlow (Incubating)\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Exploring Apache GeaFlow [...]
\ No newline at end of file
diff --git a/assets/js/2bbf1102.41fd6014.js b/assets/js/2bbf1102.41fd6014.js
deleted file mode 100644
index fd5631f..0000000
--- a/assets/js/2bbf1102.41fd6014.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6811],{1213:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>l});var t=n(6039),r=n(4848),i=n(8453);const o={title:"Stream4Graph: Incremental Computation on Dynamic Graphs",date:"2025-3-11"},s=void 0,c={authorsImageUrls:[]},l=[];function p(e){const a={a:"a",blockquote:"blockquote",img:"img",p:"p",...(0,i.R)(),...e.components};return(0,r. [...]
\ No newline at end of file
diff --git a/assets/js/2bbf1102.aefffcae.js b/assets/js/2bbf1102.aefffcae.js
new file mode 100644
index 0000000..354a37e
--- /dev/null
+++ b/assets/js/2bbf1102.aefffcae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6811],{1213:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>l});var t=a(6039),r=a(4848),o=a(8453);const i={title:"Stream4Graph: Incremental Computation on Dynamic Graphs",date:"2025-3-11"},s=void 0,c={authorsImageUrls:[]},l=[];function p(e){const n={a:"a",blockquote:"blockquote",p:"p",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fr [...]
\ No newline at end of file
diff --git a/assets/js/2d69a39e.8cc9e9a7.js b/assets/js/2d69a39e.8cc9e9a7.js
new file mode 100644
index 0000000..debbf3a
--- /dev/null
+++ b/assets/js/2d69a39e.8cc9e9a7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7328],{3329:e=>{e.exports=JSON.parse('{"permalink":"/blog/30","source":"@site/blog/30.md","title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever","description":"Author: Lin Litao","date":"2025-05-15T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faste [...]
\ No newline at end of file
diff --git a/assets/js/2d69a39e.d50df2b6.js b/assets/js/2d69a39e.d50df2b6.js
deleted file mode 100644
index bd010e4..0000000
--- a/assets/js/2d69a39e.d50df2b6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7328],{3329:e=>{e.exports=JSON.parse('{"permalink":"/blog/30","source":"@site/blog/30.md","title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever","description":"Author: Lin Litao","date":"2025-05-15T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faste [...]
\ No newline at end of file
diff --git a/assets/js/6554937b.6a44064d.js b/assets/js/6554937b.6a44064d.js
deleted file mode 100644
index 39051a1..0000000
--- a/assets/js/6554937b.6a44064d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6996],{5841:e=>{e.exports=JSON.parse('{"permalink":"/blog/28","source":"@site/blog/28.md","title":"Principles and Applications of Incremental Match in Streaming Graph Computing","description":"Problem Background","date":"2025-06-03T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","d [...]
\ No newline at end of file
diff --git a/assets/js/6554937b.8e768645.js b/assets/js/6554937b.8e768645.js
new file mode 100644
index 0000000..5ebdc5e
--- /dev/null
+++ b/assets/js/6554937b.8e768645.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[6996],{5841:e=>{e.exports=JSON.parse('{"permalink":"/blog/28","source":"@site/blog/28.md","title":"Principles and Applications of Incremental Match in Streaming Graph Computing","description":"Problem Background","date":"2025-06-03T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","d [...]
\ No newline at end of file
diff --git a/assets/js/672bc763.31bff1e2.js b/assets/js/672bc763.31bff1e2.js
deleted file mode 100644
index bf416dd..0000000
--- a/assets/js/672bc763.31bff1e2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[521],{3329:e=>{e.exports=JSON.parse('{"permalink":"/blog/30","source":"@site/blog/30.md","title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever","description":"Author: Lin Litao","date":"2025-05-15T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster [...]
\ No newline at end of file
diff --git a/assets/js/672bc763.fbd8e8ec.js b/assets/js/672bc763.fbd8e8ec.js
new file mode 100644
index 0000000..70e47ff
--- /dev/null
+++ b/assets/js/672bc763.fbd8e8ec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[521],{3329:e=>{e.exports=JSON.parse('{"permalink":"/blog/30","source":"@site/blog/30.md","title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever","description":"Author: Lin Litao","date":"2025-05-15T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.143507b9.js b/assets/js/814f3328.143507b9.js
new file mode 100644
index 0000000..142824f
--- /dev/null
+++ b/assets/js/814f3328.143507b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"All posts","items":[{"title":"Exploring Apache GeaFlow (Incubating)\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","permalink":"/blog/29","unlisted":false,"date":"2025-06-25T00:00:00.000Z"},{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","permalink":"/blog/28","unlisted":false,"date [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.e56746b2.js b/assets/js/814f3328.e56746b2.js
deleted file mode 100644
index d892a54..0000000
--- a/assets/js/814f3328.e56746b2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"All posts","items":[{"title":"Exploring GeaFlow\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","permalink":"/blog/29","unlisted":false,"date":"2025-06-25T00:00:00.000Z"},{"title":"Principles and Applications of Incremental Match in Streaming Graph Computing","permalink":"/blog/28","unlisted":false,"date":"2025-06-03T00:00: [...]
\ No newline at end of file
diff --git a/assets/js/accb5cff.7bcc0a41.js b/assets/js/accb5cff.7bcc0a41.js
new file mode 100644
index 0000000..50306ff
--- /dev/null
+++ b/assets/js/accb5cff.7bcc0a41.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[9352],{1377:e=>{e.exports=JSON.parse('{"permalink":"/blog/32","source":"@site/blog/32.md","title":"Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing","description":"March 2025 saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version i [...]
\ No newline at end of file
diff --git a/assets/js/accb5cff.90f6d74a.js b/assets/js/accb5cff.90f6d74a.js
deleted file mode 100644
index 3db990f..0000000
--- a/assets/js/accb5cff.90f6d74a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[9352],{1377:e=>{e.exports=JSON.parse('{"permalink":"/blog/32","source":"@site/blog/32.md","title":"Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing","description":"March 2025 saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature u [...]
\ No newline at end of file
diff --git a/assets/js/af329538.63b12d80.js b/assets/js/af329538.63b12d80.js
deleted file mode 100644
index 9240492..0000000
--- a/assets/js/af329538.63b12d80.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[5274],{8453:(n,e,t)=>{t.d(e,{R:()=>c,x:()=>l});var i=t(6540);const r={},o=i.createContext(r);function c(n){const e=i.useContext(o);return i.useMemo(function(){return"function"==typeof n?n(e):{...e,...n}},[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:c(n.components),i.createElement(o.Provider,{value:e},n.children)}},8765:( [...]
\ No newline at end of file
diff --git a/assets/js/af329538.7a824854.js b/assets/js/af329538.7a824854.js
new file mode 100644
index 0000000..7035c29
--- /dev/null
+++ b/assets/js/af329538.7a824854.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[5274],{1146:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"application-development/api/stream/process","title":"Process API\u4ecb\u7ecd","description":"GeaFlow\u5bf9\u5916\u63d0\u4f9b\u4e86\u4e00\u7cfb\u5217Process API\uff0c\u8fd9\u4e9bAPI\u548c\u901a\u7528\u7684\u6d41\u6279\u7c7b\u4f3c\uff0c\u4f46\u4e0d [...]
\ No newline at end of file
diff --git a/assets/js/b6d542e4.1f4e6e95.js b/assets/js/b6d542e4.1f4e6e95.js
deleted file mode 100644
index 2ac68af..0000000
--- a/assets/js/b6d542e4.1f4e6e95.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[3447],{3792:(e,t,n)=>{n.d(t,{A:()=>a});const a=n.p+"assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png"},4110:e=>{e.exports=JSON.parse('{"permalink":"/blog/31","source":"@site/blog/31.md","title":"Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches","description":"Author Dongshuo.","date":"2025-03-25T00:00:00.000Z","tags":[],"h [...]
\ No newline at end of file
diff --git a/assets/js/b6d542e4.593804e5.js b/assets/js/b6d542e4.593804e5.js
new file mode 100644
index 0000000..3285e58
--- /dev/null
+++ b/assets/js/b6d542e4.593804e5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[3447],{4110:e=>{e.exports=JSON.parse('{"permalink":"/blog/31","source":"@site/blog/31.md","title":"Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches","description":"Author Dongshuo.","date":"2025-03-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches","date":"2025-3-2 [...]
\ No newline at end of file
diff --git a/assets/js/c3276b5c.66f59272.js b/assets/js/c3276b5c.66f59272.js
deleted file mode 100644
index ed8b87e..0000000
--- a/assets/js/c3276b5c.66f59272.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[2464],{5863:e=>{e.exports=JSON.parse('{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring GeaFlow\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Exploring GeaFlow\'s Temporal Capabilities \ [...]
\ No newline at end of file
diff --git a/assets/js/c3276b5c.f2b6f774.js b/assets/js/c3276b5c.f2b6f774.js
new file mode 100644
index 0000000..4e2ecf9
--- /dev/null
+++ b/assets/js/c3276b5c.f2b6f774.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[2464],{5863:e=>{e.exports=JSON.parse('{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring Apache GeaFlow (Incubating)\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Exploring Apache GeaFlow [...]
\ No newline at end of file
diff --git a/assets/js/cc93c679.08c2f717.js b/assets/js/cc93c679.08c2f717.js
deleted file mode 100644
index af24efb..0000000
--- a/assets/js/cc93c679.08c2f717.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7890],{304:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1740386529457-b43e2d49-6000-4acf-862c-314ae4f23dbc-b978a4ee5cb4528562660d57e2a936a3.png"},565:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1740454568183-6d42716b-fc84-41a8-945c-c97b81d61135-4ef6d310ca58e8c379c470ae3062d305.png"},3152:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1740982328260-3a0ff09e-920b-4f55-af14- [...]
\ No newline at end of file
diff --git a/assets/js/cc93c679.fe04ce48.js b/assets/js/cc93c679.fe04ce48.js
new file mode 100644
index 0000000..b8e92e3
--- /dev/null
+++ b/assets/js/cc93c679.fe04ce48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7890],{304:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1740386529457-b43e2d49-6000-4acf-862c-314ae4f23dbc-b978a4ee5cb4528562660d57e2a936a3.png"},565:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1740454568183-6d42716b-fc84-41a8-945c-c97b81d61135-4ef6d310ca58e8c379c470ae3062d305.png"},4603:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1739276186744-96d40e95-4e29-48ef-8892- [...]
\ No newline at end of file
diff --git a/assets/js/e95b37e1.2713690d.js b/assets/js/e95b37e1.2713690d.js
new file mode 100644
index 0000000..4020f53
--- /dev/null
+++ b/assets/js/e95b37e1.2713690d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4628],{23:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png"},4110:e=>{e.exports=JSON.parse('{"permalink":"/blog/31","source":"@site/blog/31.md","title":"Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches","description":"Author Dongshuo.","date":"2025-03-25T00:00:00.000Z","tags":[],"has [...]
\ No newline at end of file
diff --git a/assets/js/e95b37e1.bf2bceb9.js b/assets/js/e95b37e1.bf2bceb9.js
deleted file mode 100644
index 4872ecd..0000000
--- a/assets/js/e95b37e1.bf2bceb9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4628],{23:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png"},3792:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png"},4110:e=>{e.exports=JSON.parse('{"permalink":"/blog/31","source":"@site/blog/31.md","title":"Graph [...]
\ No newline at end of file
diff --git a/assets/js/f81c1134.5a2e5517.js b/assets/js/f81c1134.5a2e5517.js
new file mode 100644
index 0000000..920f372
--- /dev/null
+++ b/assets/js/f81c1134.5a2e5517.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8130],{7735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/29","metadata":{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring Apache GeaFlow (Incubating)\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[], [...]
\ No newline at end of file
diff --git a/assets/js/f81c1134.8f3f87b9.js b/assets/js/f81c1134.8f3f87b9.js
deleted file mode 100644
index f36172d..0000000
--- a/assets/js/f81c1134.8f3f87b9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8130],{7735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/29","metadata":{"permalink":"/blog/29","source":"@site/blog/29.md","title":"Exploring GeaFlow\'s Temporal Capabilities \u2014 Breathing New Life into Time-Series Data!","description":"Why Are Temporal Capabilities So Crucial?","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"titl [...]
\ No newline at end of file
diff --git a/assets/js/main.2f6cb1f3.js b/assets/js/main.55991ef2.js
similarity index 51%
rename from assets/js/main.2f6cb1f3.js
rename to assets/js/main.55991ef2.js
index 0f5fe82..aae023c 100644
--- a/assets/js/main.2f6cb1f3.js
+++ b/assets/js/main.55991ef2.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.2f6cb1f3.js.LICENSE.txt */
-(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8792],{115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instan [...]
\ No newline at end of file
+/*! For license information please see main.55991ef2.js.LICENSE.txt */
+(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8792],{115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instan [...]
\ No newline at end of file
diff --git a/assets/js/main.2f6cb1f3.js.LICENSE.txt b/assets/js/main.55991ef2.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.2f6cb1f3.js.LICENSE.txt
rename to assets/js/main.55991ef2.js.LICENSE.txt
diff --git a/assets/js/runtime~main.2473f0ef.js b/assets/js/runtime~main.8d1155bf.js
similarity index 72%
rename from assets/js/runtime~main.2473f0ef.js
rename to assets/js/runtime~main.8d1155bf.js
index 61e714e..dba18ab 100644
--- a/assets/js/runtime~main.2473f0ef.js
+++ b/assets/js/runtime~main.8d1155bf.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,b,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=t,e=[],r.O=(a,c,b,f)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],b=e[i][1],f=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&f||d>=f)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,f<d&&(d=f));if(t){e.splice(i--,1);var n=b();void 0!==n&&(a=n)}}return a}f=f||0 [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,b,c,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var b=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(b.exports,b,b.exports,r),b.loaded=!0,b.exports}r.m=d,r.c=t,e=[],r.O=(a,b,c,f)=>{if(!b){var d=1/0;for(i=0;i<e.length;i++){b=e[i][0],c=e[i][1],f=e[i][2];for(var t=!0,o=0;o<b.length;o++)(!1&f||d>=f)&&Object.keys(r.O).every(e=>r.O[e](b[o]))?b.splice(o--,1):(t=!1,f<d&&(d=f));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}f=f||0 [...]
\ No newline at end of file
diff --git a/blog/27/index.html b/blog/27/index.html
index f2b03f5..93e16f6 100644
--- a/blog/27/index.html
+++ b/blog/27/index.html
@@ -15,20 +15,19 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<blockquote>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>Author: Zhang Qi</p>
</blockquote>
<p>It's well known that when we need to perform correlation analysis on data, we typically use SQL join operations. However, Cartesian product calculations during SQL joins require maintaining a large number of intermediate results, which significantly impacts overall data analysis performance. In contrast, graph-based approaches maintain data correlations, transforming correlation analysis into graph traversal operations and greatly reducing the cost of data analysis.</p>
<p>However, with the continuous growth in data scale and increasing demand for real-time processing, efficiently solving real-time computation problems on large-scale graph data has become increasingly urgent. Traditional computing engines such as Spark and Flink are gradually falling short of meeting the growing business demands for graph data processing. Therefore, designing a real-time processing engine tailored for large-scale graph data will bring significant advancements to big dat [...]
-<p>Stream graph computing engine <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry ad [...]
+<p>Stream graph computing engine <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-graph-computing">1. Graph Computing<a href="#1-graph-computing" class="hash-link" aria-label="Direct link to 1. Graph Computing" title="Direct link to 1. Graph Computing"></a></h2>
<p><font style="color:rgb(51, 51, 51)">A graph is a mathematical structure composed of nodes and edges. Nodes represent various entities such as people, locations, objects, or concepts, while edges represent the relationships between these nodes. For example:</font></p>
<ul>
@@ -57,13 +56,13 @@
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p>However, this approach has a significant drawback: it involves redundant computation. For example, if we need to compute once per hour, using Spark would require not only computing the current window’s data but also backtracking all historical data, leading to a large amount of redundant computation. Therefore, we need a graph computing solution that supports incremental computation.</p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-geaflow">4. Incremental Dynamic Graph Computing: GeaFlow<a href="#4-incremental-dynamic-graph-computing-geaflow" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow" title="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow"></a></h2>
-<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system GeaFlow (also known as [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-apache-geaflow-incubating">4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)<a href="#4-incremental-dynamic-graph-computing-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)" title="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)"></a></h2>
+<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system Apache GeaFlow (Incuba [...]
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>How does GeaFlow implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
+<p>How does Apache GeaFlow (Incubating) implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
<p>Using the WCC algorithm as an example, for the connected components algorithm, in a time window, each edge’s src id and tar id vertices are activated. In the first iteration, their id information is sent to neighboring nodes. If a neighboring node receives the message and finds that it needs to update its information, it continues to notify its neighbors; otherwise, its iteration terminates.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/314644/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0.png" alt="" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-architecture-overview">5. GeaFlow Architecture Overview<a href="#5-geaflow-architecture-overview" class="hash-link" aria-label="Direct link to 5. GeaFlow Architecture Overview" title="Direct link to 5. GeaFlow Architecture Overview"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-architecture-overview">5. Apache GeaFlow (Incubating) Architecture Overview<a href="#5-apache-geaflow-incubating-architecture-overview" class="hash-link" aria-label="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview" title="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview"></a></h2>
<p>The GeaFlow engine consists of three main parts: DSL, Framework, and State. It also provides users with Stream API, Static Graph API, and Dynamic Graph API. The DSL layer is responsible for parsing and optimizing graph query languages like SQL+ISO/GQL, as well as schema inference. It also supports various Connectors such as Hive, Hudi, Kafka, and ODPS. The Framework layer handles runtime scheduling, fault tolerance, shuffle, and coordination of components. The State layer is responsib [...]
<p><img decoding="async" loading="lazy" src="/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-performance-testing">6. GeaFlow Performance Testing<a href="#6-geaflow-performance-testing" class="hash-link" aria-label="Direct link to 6. GeaFlow Performance Testing" title="Direct link to 6. GeaFlow Performance Testing"></a></h2>
@@ -84,10 +83,10 @@
<p>The GeaFlow project is fully open-sourced. We have built some of the foundational capabilities of the stream graph engine. In the future, we hope to build a unified lakehouse processing engine for graph data based on GeaFlow to meet diverse big data correlation analysis needs. We are also actively preparing to join the Apache Foundation to enrich the open-source big data ecosystem. Therefore, we warmly welcome those interested in graph technology to join our community.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal Dataset:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/31"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-bor [...]
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/31"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-bor [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/28/index.html b/blog/28/index.html
index d3bb8ba..0288957 100644
--- a/blog/28/index.html
+++ b/blog/28/index.html
@@ -15,23 +15,18 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>In streaming computing, data rarely arrives all at once but is continuously input and processed. Similarly, in graph computing/graph querying scenarios, vertices and edges are constantly read from data sources to construct graphs incrementally. In incremental graph queries, the graph evolves continuously, leading to different query results across graph versions. When new vertices/edges form an updated graph version, recomputing through the entire graph incurs high overhead and duplica [...]
-<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Geaflow is an open-source streaming graph engine by Ant Group’s graph computing team, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9.jpeg" alt="画板" class="img_ev3q"></p>
+<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Apache GeaFlow (Incubating) is an open-source streaming graph engine, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article introduces GeaF [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-challenges">Current Challenges<a href="#current-challenges" class="hash-link" aria-label="Direct link to Current Challenges" title="Direct link to Current Challenges"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">The Geaflow engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
-<div style="text-align:center">
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q">
-</div>
+<p><font style="color:rgb(0, 0, 0)">The Apache GeaFlow (Incubating) engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
<p>The key issue is that <strong>Vertex A1 cannot trigger computation if only the delta is considered</strong>, yet it belongs to the incremental results. To resolve this, we propose a subgraph expansion method from new vertices. The query is divided into two phases:</p>
<ol>
<li><strong>Evolve Phase</strong>: Propagate <code>EvolveMessage</code> from new vertices to neighbors, adding recipients to the <code>EvolveVertices</code> set.</li>
@@ -52,8 +47,6 @@
</ol>
<p>Core logic in <code>GeaFlowDynamicVCTraversalFunction</code>:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">@Override</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
-<p><strong>Visualization:</strong><br>
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2024/jpeg/23857192/1734590557540-5f3f4528-fa07-4208-8425-bc514ea5e06b.jpeg" alt="画板" class="img_ev3q"></p>
<p><strong>Evolve Conditions:</strong></p>
<ul>
<li>Query iterations <code>>2</code> (no Evolve needed for ≤2 hops).</li>
@@ -62,11 +55,11 @@
<li>No starting vertex filter in GQL (e.g., <code>Match(a:person where a.id=1)</code> excludes Evolve).</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo">Demo<a href="#demo" class="hash-link" aria-label="Direct link to Demo" title="Direct link to Demo"></a></h2>
-<p>In Geaflow, configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
+<p>In Apache GeaFlow (Incubating), configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>In this demo, vertex window size is 20, and edge window size is 3, meaning each window loads 20 vertices and 3 edges. A 3-hop query is executed. The demo is available in IncrMatchTest.java and can be run directly.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-outlook">Conclusion and Outlook<a href="#conclusion-and-outlook" class="hash-link" aria-label="Direct link to Conclusion and Outlook" title="Direct link to Conclusion and Outlook"></a></h2>
-<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Geaflow uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more complex incremental m [...]
+<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Apache GeaFlow (Incubating) uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more c [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/29/index.html b/blog/29/index.html
index f1dee19..4c341ae 100644
--- a/blog/29/index.html
+++ b/blog/29/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">Exploring GeaFlow's Temporal Capabilities — Breathing New Life into Time-Series Data! | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog/29"><meta data-rh="true" property="og:locale" content="en_US"><meta data-rh="true" property="og:locale:alternate" content="zh_CN">< [...]
+<title data-rh="true">Exploring Apache GeaFlow (Incubating)'s Temporal Capabilities — Breathing New Life into Time-Series Data! | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog/29"><meta data-rh="true" property="og:locale" content="en_US"><meta data-rh="true" property="og:locale:alternat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>In today's digital era, data has become a core resource driving decisions and innovation. However, data is not just static numbers or relationships—it constantly evolves over time. Whether tracking real-time fluctuations in stock markets, dynamic interactions in social networks, or status updates from IoT devices, the temporal dimension is key to understanding this data. For example:</p>
<ul>
<li>In finance, the sequence of transactions determines the direction of capital flow.</li>
@@ -44,8 +44,8 @@
Many tools support only one type of analysis and cannot concurrently process real-time streams and historical data.</p>
</li>
</ul>
-<p> To address these issues, GeaFlow innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph processing, GeaFlow offers a groundbreaking [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-geaflow">What Is GeaFlow?<a href="#what-is-geaflow" class="hash-link" aria-label="Direct link to What Is GeaFlow?" title="Direct link to What Is GeaFlow?"></a></h2>
+<p> To address these issues, Apache GeaFlow (Incubating) innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph processing, GeaFlow off [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-apache-geaflow-incubating">What Is Apache GeaFlow (Incubating)?<a href="#what-is-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to What Is Apache GeaFlow (Incubating)?" title="Direct link to What Is Apache GeaFlow (Incubating)?"></a></h2>
<p>GeaFlow is a powerful distributed computing platform that combines graph computing and stream processing to handle dynamic graphs and temporal data efficiently. It supports complex graph algorithms and real-time analytics, making it ideal for dynamic scenarios. Key features include:</p>
<ul>
<li>
@@ -90,8 +90,8 @@ Stream graphs handle real-time updates; temporal graphs add time-based recording
<li><strong>Temporal Graphs Enhance Stream Analysis</strong><br>
Timestamps enable complex operations like trend prediction and window-based analytics.</li>
</ul>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflows-implementation"><strong>4. GeaFlow’s Implementation</strong><a href="#4-geaflows-implementation" class="hash-link" aria-label="Direct link to 4-geaflows-implementation" title="Direct link to 4-geaflows-implementation"></a></h3>
-<p>GeaFlow unifies stream and temporal graphs through:</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubatings-implementation"><strong>4. Apache GeaFlow (Incubating)’s Implementation</strong><a href="#4-apache-geaflow-incubatings-implementation" class="hash-link" aria-label="Direct link to 4-apache-geaflow-incubatings-implementation" title="Direct link to 4-apache-geaflow-incubatings-implementation"></a></h3>
+<p>Apache GeaFlow (Incubating) unifies stream and temporal graphs through:</p>
<ul>
<li><strong>Timestamp Assignment</strong><br>
Assigns <em>processing time</em> or <em>event time</em> to all data.</li>
@@ -138,9 +138,9 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Flexible</strong>: SQL-like syntax lowers development barriers.</li>
<li><strong>Scalable</strong>: Handles massive dynamic graphs via incremental computation.</li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-geaflows-temporal-capabilities">Core Highlights of GeaFlow’s Temporal Capabilities<a href="#core-highlights-of-geaflows-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities" title="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-apache-geaflow-incubatings-temporal-capabilities">Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities<a href="#core-highlights-of-apache-geaflow-incubatings-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities" title="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-time-aware-data-processing">1. Time-Aware Data Processing<a href="#1-time-aware-data-processing" class="hash-link" aria-label="Direct link to 1. Time-Aware Data Processing" title="Direct link to 1. Time-Aware Data Processing"></a></h3>
-<p>Timestamps enable precision. GeaFlow supports:</p>
+<p>Timestamps enable precision. Apache GeaFlow (Incubating) supports:</p>
<ul>
<li><strong>5-Minute Trend Analysis</strong>: Track real-time interaction frequency shifts.</li>
<li><strong>24-Hour Dynamic Patterns</strong>: Identify long-term trends (e.g., user purchase behavior).</li>
@@ -166,10 +166,10 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-start-your-temporal-data-journey">Conclusion: Start Your Temporal Data Journey<a href="#conclusion-start-your-temporal-data-journey" class="hash-link" aria-label="Direct link to Conclusion: Start Your Temporal Data Journey" title="Direct link to Conclusion: Start Your Temporal Data Journey"></a></h2>
<p>Dynamic data holds immense value, and GeaFlow’s temporal capabilities unlock it. Whether you’re a novice or an expert, GeaFlow empowers you to harness time-series data.</p>
-<p><strong>Download GeaFlow today and explore the power of temporal analytics!</strong></p>
+<p><strong>Download Apache GeaFlow (Incubating) today and explore the power of temporal analytics!</strong></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="terminology">Terminology<a href="#terminology" class="hash-link" aria-label="Direct link to Terminology" title="Direct link to Terminology"></a></h2>
-<p><strong>DSL</strong>: Domain-Specific Language. GeaFlow’s unified DSL integrates SQL and ISO/GQL for relational and graph analysis (pattern matching, algorithms), supporting hybrid table/graph operations.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/blog/28"><div class="pagination-nav__sublabel">Older post</div><div class="pagination-nav__label">Principles and Ap [...]
+<p><strong>DSL</strong>: Domain-Specific Language. GeaFlow’s unified DSL integrates SQL and ISO/GQL for relational and graph analysis (pattern matching, algorithms), supporting hybrid table/graph operations.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/blog/28"><div class="pagination-nav__sublabel">Older post</div><div class="pagination-nav__label">Principles and Ap [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/30/index.html b/blog/30/index.html
index 960b1bb..a5081ed 100644
--- a/blog/30/index.html
+++ b/blog/30/index.html
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<blockquote>
<p>Author: Lin Litao</p>
</blockquote>
@@ -32,14 +32,10 @@
<li><strong>Financial Anti-Fraud Scenario</strong>: In anti-fraud analysis, complex multi-layered fund chain mining often relies on multi-table JOIN operations for intricate multi-hop tracking. Analyst teams spend days writing SQL scripts, and the final query can take hours — by which time the funds have already been laundered. This reveals a deep contradiction in traditional data warehouses: <strong>the misalignment between the relational paradigm and real-world networked business logic [...]
<li><strong>Marketing Analysis Scenario</strong>: In analyzing marketing business relationships, identifying potential VIP customers through social connection chains requires advanced data analysis skills. Although tools like DeepInsight AI Copilot now allow users to quickly generate dimensions and metrics with 80% accuracy via large models and integrate them into self-service dashboards, these analyses often involve deep user associations, <strong>which perform poorly when expressed int [...]
</ul>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/67556465/1741674750798-f519cba9-d8ae-47d4-aec0-97c2ef31a759.jpeg" alt="" class="img_ev3q"></p>
-<p><strong>Figure 1: Performance Difference Between SQL Join and GQL Graph Hop Queries</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-constraints">2. Data Constraints<a href="#2-data-constraints" class="hash-link" aria-label="Direct link to 2. Data Constraints" title="Direct link to 2. Data Constraints"></a></h3>
<p><strong>Efficiency Constraint</strong>: When association levels exceed 3 hops, the time complexity of traditional JOIN operations grows exponentially. Analytical models centered around multi-table JOINs gradually lose their advantage and become a "shackle" to efficiency.</p>
<p><strong>Expressiveness Constraint</strong>: Traditional SQL not only requires complex expressions but also struggles to intuitively represent graph topologies using the relational model.</p>
<p><strong>Innovation Constraint</strong>: Business analysts often abandon graph technology stacks due to the need to learn GQL (Graph Query Language). The fragmented toolchain keeps graph analytics confined to technical departments, failing to empower front-line business teams.</p>
-<p><img decoding="async" loading="lazy" src="/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png" class="img_ev3q"></p>
-<p><strong>Figure 2: JOIN vs GQL Expression Examples</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-breakthrough-strategy-core-value-of-the-graph-data-warehouse">3. Breakthrough Strategy: Core Value of the Graph Data Warehouse<a href="#3-breakthrough-strategy-core-value-of-the-graph-data-warehouse" class="hash-link" aria-label="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse" title="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-lower-cognitive-costs">(1) Lower Cognitive Costs<a href="#1-lower-cognitive-costs" class="hash-link" aria-label="Direct link to (1) Lower Cognitive Costs" title="Direct link to (1) Lower Cognitive Costs"></a></h4>
<p>Users don’t need to understand graph database expertise. Complex graph association analysis can be performed through SQL operations, with the underlying system connected to a graph engine.</p>
@@ -55,22 +51,17 @@
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 1: Semantic Analysis.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on selecting entity column sequences for ID composition, identifying entity/relationship semantics in tables, discovering cross-table equivalent columns (columns with equal value relationships), and supporting expression-based column processing. Among all possible solutions, the best-performing one in terms of storage performance, computational perfo [...]
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 2: Structured Transformation.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on generating vertex/edge entities, merging vertex entities, and creating redundant edges when necessary to balance data redundancy and query performance. Virtual nodes are automatically created to bind relationships, and edge start/endpoints are configured.</font></p>
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 3: Graph Assembly.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">All vertices are merged, and edges bound to start nodes are naturally merged. Endpoint binding is optional. For two different graph conversion schemes, a difference vector can be calculated — representing how all tables map to entity changes.</font></p>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683049495-d75ae87b-9510-40ee-b22f-c6140570b1f1.png" alt="" class="img_ev3q"></p>
-<p><img decoding="async" loading="lazy" src="/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png" width="1714" height="826" class="img_ev3q"></p>
-<p><strong>Figure 3: ER to Graph Schema Conversion Example Series</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">Through algorithmic analysis of inter-table associations and automatic graph construction, this provides a basis for migrating data from its original storage location to the graph data warehouse. It also significantly reduces manual data modeling and DSL scripting efforts, enabling fast migration of traditional warehouse data to a graph warehouse with no manual intervention and immediate analysis readiness.</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-pipeline-materialized-data-interaction-capabilities">2. Data Pipeline: Materialized Data Interaction Capabilities<a href="#2-data-pipeline-materialized-data-interaction-capabilities" class="hash-link" aria-label="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities" title="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities"></a></h3>
-<p>Similar to traditional data warehouses, the graph data warehouse leverages GeaFlow engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monitoring and logging, v [...]
+<p>Similar to traditional data warehouses, the graph data warehouse leverages Apache GeaFlow (Incubating) engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monit [...]
<p><font style="color:rgb(0, 0, 0)">With the help of the Schema Converter, a materialization plan from table storage to graph storage can be generated, building a data pipeline between traditional and graph data warehouses. Based on the table-to-graph materialization plan, the system can automatically generate data sync task orchestrations according to actual business configurations like acceleration tables, relationships, fields, and permissions. These are then scheduled via the graph w [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">The data pipeline integrates deeply with mainstream big data ecosystems like ODPS/Hive/Paimon. It achieves full lifecycle data management through a three-tier architecture: at the data access layer, it automatically captures table changes, generates materialization plans, and syncs incremental mappings from tables to graph entities, currently managing graph data at the 10TB scale; at the conversion engine layer, it fully automates DSL task orche [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf.png" alt="" class="img_ev3q"></p>
+<p><img decoding="async" loading="lazy" src="/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
<p><strong>Figure 4: Open-Source Technical Architecture Overview</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-sql-gql-translation-engine">3. SQL-GQL Translation Engine<a href="#3-sql-gql-translation-engine" class="hash-link" aria-label="Direct link to 3. SQL-GQL Translation Engine" title="Direct link to 3. SQL-GQL Translation Engine"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In traditional relational databases, multi-layer table join queries often require complex JOIN statements, which are not only inefficient to develop but also struggle to meet the demands of ad-hoc analysis of massive associated data. To address this pain point, we introduced an innovative SQL-GQL translation engine that automatically converts complex SQL JOINs into graph path queries without requiring users to learn graph query languages (GQL). [...]
<p><font style="color:rgb(64, 64, 64)">Unlike SQL, which operates on two-dimensional tables based on the relational model, GQL's query structure and semantics align with graph data characteristics, especially in linearization and nested processing of query logic. Converting SQL queries to GQL involves</font> syntax structure mapping<font style="color:rgb(64, 64, 64)">,</font> data model mapping<font style="color:rgb(64, 64, 64)">, and</font> execution logic reconstruction<font style [...]
<p>Compared to traditional SQL queries<font style="color:rgb(64, 64, 64)">that may take minutes to analyze user relationships through three table joins, graph path queries can complete the same task in seconds.</font><font style="color:rgba(0, 0, 0, 0.88)">This engine has been validated in typical business scenarios like short video analysis, membership growth, and customer rights services. In the future, it will expand to support complex subqueries and expression operations, allowing mo [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683921355-149d0fea-7a3f-4fb8-ad36-f4b4c8541113.png" alt="" class="img_ev3q"></p>
-<p><strong>Figure 5: SQL AST to GQL Structure Translation Difference Example</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-technical-advantages-and-application-scenarios">3. Technical Advantages and Application Scenarios<a href="#3-technical-advantages-and-application-scenarios" class="hash-link" aria-label="Direct link to 3. Technical Advantages and Application Scenarios" title="Direct link to 3. Technical Advantages and Application Scenarios"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="31-underlying-logic-of-efficiency-gains">3.1 Underlying Logic of Efficiency Gains<a href="#31-underlying-logic-of-efficiency-gains" class="hash-link" aria-label="Direct link to 3.1 Underlying Logic of Efficiency Gains" title="Direct link to 3.1 Underlying Logic of Efficiency Gains"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In relational analysis scenarios, the graph data warehouse’s breakthrough performance stems from two core technological innovations.</font></p>
@@ -81,10 +72,10 @@
<p><font style="color:rgba(0, 0, 0, 0.88)">At the algorithm level, the system’s built-in graph computing engine transcends traditional warehouse limitations and opens interfaces for custom graph algorithm development within the open-source ecosystem. For example, traditional PageRank algorithms can identify influential nodes in social networks for targeted marketing; Weakly Connected Components (WCC) can detect anomalous communities in billion-scale transaction data. Through standardized [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">Compared to traditional data warehouses, the graph data warehouse achieves generational leaps in three dimensions: performance (1–2 orders of magnitude faster), usability (eliminating graph learning barriers via SQL-GQL auto-conversion), and analytical depth (supporting algorithmic analysis and hidden relationship discovery).</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-future-outlook">4. Future Outlook<a href="#4-future-outlook" class="hash-link" aria-label="Direct link to 4. Future Outlook" title="Direct link to 4. Future Outlook"></a></h2>
-<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine GeaFlow. In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph computing engine, and [...]
+<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine Apache GeaFlow (Incubating). In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph co [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">On the technical evolution front, the next-generation engine will break through dynamic streaming graph computing bottlenecks to support trillion-edge incremental updates. By integrating vectorized computing engines, it can jointly query property graphs and vector graphs to meet AIGC-era multimodal analysis needs and enable revolutionary experiences like generating graph queries directly from natural language. Industry applications are rapidly e [...]
<hr>
-<p>Let me know if you'd like a version formatted for a blog, documentation, or presentation!</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/28"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Principles and Applications of Incremental Match in Streaming Graph Computing</div></a><a class="pagination-nav__link paginatio [...]
+<p>Let me know if you'd like a version formatted for a blog, documentation, or presentation!</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/28"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Principles and Applications of Incremental Match in Streaming Graph Computing</div></a><a class="pagination-nav__link paginatio [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/31/index.html b/blog/31/index.html
index d3e7cd9..ef57a38 100644
--- a/blog/31/index.html
+++ b/blog/31/index.html
@@ -15,21 +15,20 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<blockquote>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>Author: Kunyu; Reviewer: Dongshuo.</p>
</blockquote>
-<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed GeaFlow to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computin [...]
+<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed Apache GeaFlow (Incubating) to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities [...]
<p>In today’s era, data is being generated at an unprecedented speed and scale, and real-time processing of massive datasets has wide applications in various fields such as anomaly detection, search recommendations, and financial transactions. As one of the core technologies for real-time data processing, <strong>stream computing</strong> has become increasingly important.</p>
<p>Unlike batch processing, which waits for all data to arrive before computation, stream computing partitions continuously generated data streams into micro-batches and performs incremental computations on each batch. This computational characteristic gives stream computing high throughput and low latency. Common stream computing engines include Flink and Spark Streaming, both of which process data using tabular representations. However, as stream computing applications deepen, more and [...]
-<p>GeaFlow, an open-source stream graph computing engine developed by Ant Group's graph computing team, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
+<p>Apache GeaFlow (Incubating), an open-source stream graph computing engine, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-computing-engine-flink">Stream Computing Engine: Flink<a href="#stream-computing-engine-flink" class="hash-link" aria-label="Direct link to Stream Computing Engine: Flink" title="Direct link to Stream Computing Engine: Flink"></a></h2>
<p>Flink is a classic table-based stream processing engine. It slices incoming data streams into micro-batches and processes the data in each batch incrementally. During execution, Flink translates computation tasks into directed graphs composed of basic operators like map, filter, and join. Each operator receives input from upstream and sends output downstream. Incremental data passes through all operators to produce results for the current batch.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1741541936849-f9e0ae71-d25d-4789-b9c6-ed0380140f2a.png" alt="" class="img_ev3q"></p>
@@ -43,44 +42,44 @@
<p>The main performance bottleneck lies in scanning RightStateView. LeftStateView and RightStateView store the left and right tables of the join, respectively. As data continuously flows in, the size of StateViews grows, causing scan times to increase dramatically and severely degrading system performance.</p>
<p><img decoding="async" loading="lazy" src="/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join Operator Implementation</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-geaflow">Stream Graph Computing Engine: GeaFlow<a href="#stream-graph-computing-engine-geaflow" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: GeaFlow" title="Direct link to Stream Graph Computing Engine: GeaFlow"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-apache-geaflow-incubating">Stream Graph Computing Engine: Apache GeaFlow (Incubating)<a href="#stream-graph-computing-engine-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)" title="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="graph-computing--stream-graphs">Graph Computing & Stream Graphs<a href="#graph-computing--stream-graphs" class="hash-link" aria-label="Direct link to Graph Computing & Stream Graphs" title="Direct link to Graph Computing & Stream Graphs"></a></h3>
<p>Graph computing is a computational paradigm based on graph data structures. A graph G(V,E) consists of a set of vertices V and edges E, where edges represent relationships between data. Using the public dataset web-Google as an example, each line contains two numbers representing a hyperlink between two web pages. As shown below, the left side shows raw data, which is traditionally modeled as a two-column table. In contrast, graph modeling treats web pages as vertices and hyperlinks a [...]
<p><img decoding="async" loading="lazy" src="/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>Table Modeling vs. Graph Modeling</p>
<p>A <strong>stream graph</strong> is the application of graph computing to streaming scenarios. It divides the graph into historical and incremental components based on data stream updates. For example, if the first two rows have been processed and we are now handling the third row, the historical graph is built from the first two rows, and the incremental graph is formed by the third row. Together, they constitute the full graph. Applying incremental graph algorithms on stream graphs e [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-architecture">GeaFlow Architecture<a href="#geaflow-architecture" class="hash-link" aria-label="Direct link to GeaFlow Architecture" title="Direct link to GeaFlow Architecture"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-architecture">Apache GeaFlow (Incubating) Architecture<a href="#apache-geaflow-incubating-architecture" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Architecture" title="Direct link to Apache GeaFlow (Incubating) Architecture"></a></h3>
<p>The GeaFlow engine’s computation flow consists of stream data input, distributed incremental graph computation, and incremental result output. Like traditional stream engines, real-time data is sliced into micro-batches by window. For each batch, the data is parsed into vertices and edges to form an incremental graph. This incremental graph and the historical graph (built from previous data) together form the complete stream graph. The computation framework applies incremental graph a [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a.png" alt="" class="img_ev3q"></p>
-<p>GeaFlow Incremental Computation</p>
+<p>Apache GeaFlow (Incubating) Incremental Computation</p>
<p>The GeaFlow computation framework is a vertex-centric iterative model. It starts with vertices in the incremental graph. In each iteration, each vertex maintains its own state and performs computation based on its associated historical and incremental graph data. The result is then passed to neighboring vertices via message passing to trigger the next iteration.</p>
-<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
+<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
<p>The diagram below illustrates the two-hop case. In the first iteration, the edge B->C creates incoming and outgoing paths, sent to B and C, respectively. In the second iteration, B receives an incoming path, adds its own incoming edges, and forms a 2-hop incoming path, which it sends to itself. Similarly, C forms a 2-hop outgoing path and sends it to B. In the final iteration, B combines the incoming and outgoing paths to produce the new paths. Unlike Flink, which must scan all his [...]
<p><img decoding="async" loading="lazy" src="/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>Two-Hop Incremental Path Computation</p>
<p>The above graph algorithm has been integrated into GeaFlow’s <code>IncKHop</code> operator, and users can directly call it using DSL:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-performance-test">GeaFlow Performance Test<a href="#geaflow-performance-test" class="hash-link" aria-label="Direct link to GeaFlow Performance Test" title="Direct link to GeaFlow Performance Test"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-performance-test">Apache GeaFlow (Incubating) Performance Test<a href="#apache-geaflow-incubating-performance-test" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Performance Test" title="Direct link to Apache GeaFlow (Incubating) Performance Test"></a></h2>
<p>To evaluate GeaFlow’s performance in stream graph computing, we designed a comparative experiment using the k-Hop algorithm. We used the public dataset <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a> as input and measured the time required to complete the computation across one-hop to four-hop scenarios. The experiment ran on 16 servers, each with 8 cores and 16GB memory.</p>
<p>As shown in the results below, the x-axis represents one-hop to four-hop relationships, and the y-axis shows the processing time on a logarithmic scale. In one- and two-hop cases, Flink outperforms GeaFlow due to the small amount of data involved in joins. However, as complexity increases, Flink’s join-based approach becomes inefficient, especially in four-hop cases, where it can’t finish within a day. GeaFlow, by contrast, scales efficiently due to its incremental graph algorithm, wh [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/8237/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221.png" alt="" class="img_ev3q"></p>
<p>k-Hop Computation Performance Comparison</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-future-work">Conclusion and Future Work<a href="#conclusion-and-future-work" class="hash-link" aria-label="Direct link to Conclusion and Future Work" title="Direct link to Conclusion and Future Work"></a></h2>
-<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. GeaFlow addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
-<p>GeaFlow is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
+<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. Apache GeaFlow (Incubating) addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
+<p>Apache GeaFlow (Incubating) is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
<p>There are many exciting tasks to explore. You can start with these beginner-friendly issues:</p>
<ul>
-<li>Support incremental k-Core algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>Support incremental k-Core algorithm (<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project: <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project: <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google Dataset: <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues: <a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>Incremental k-Hop Source Code: <a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
-</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/32"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing</div></a><a class="pagination-nav__link pagination-nav__link--next" hre [...]
+<li>Apache GeaFlow (Incubating) Issues: <a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>Incremental k-Hop Source Code: <a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/32"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing</div></a><a class="pagination-nav__link pagination- [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/32/index.html b/blog/32/index.html
index f60b513..1291c4e 100644
--- a/blog/32/index.html
+++ b/blog/32/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog/32"><meta data-rh="true" property="og:locale" content="en_US"><meta da [...]
+<title data-rh="true">Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog/32"><meta data-rh="true" property="og:locale" cont [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<ul>
<li>🍀 Experimental support for storing GeaFlow graph data in Paimon data lake</li>
<li>🍀 Enhanced graph data warehouse capabilities: Supports relational access to graph entities</li>
@@ -31,7 +31,7 @@
<li>🍀 Support for incremental matching operators</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-new-features">✨ New Features<a href="#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="#-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)" title="Direct link to 🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Ex [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="#-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data Lake (Experimental)" title="Dir [...]
<p>To enhance GeaFlow's data storage system scalability, real-time processing capabilities, and cost efficiency, this update adds support for <strong>Apache Paimon</strong>. As a next-generation streaming data lake storage format, Paimon differs significantly in design philosophy and features from RocksDB, previously used by GeaFlow:</p>
<ul>
<li><strong>Supports object storage/HDFS distributed storage</strong>, natively adapting to cloud-native environments. This enables storage-compute separation, reduces hardware dependencies, and supports elastic scaling.</li>
@@ -44,10 +44,10 @@
<li><strong>Current limitations</strong>: Only supports local filesystem as Paimon backend; recoverability not yet supported; dynamic graph data storage not yet supported.</li>
<li>Configure the storage path via the parameter <code>geaflow.store.paimon.options.warehouse</code> (default: <code>"file:///tmp/paimon/"</code>).</li>
</ul>
-<p>The current GeaFlow storage architecture is shown below:
+<p>The current Apache GeaFlow (Incubating) storage architecture is shown below:
<img decoding="async" loading="lazy" src="/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities">🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entities<a href="#-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities" class="hash-link" aria-label="Direct link to 🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entities" title="Direct link to 🍀 Grap [...]
-<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, GeaFlow introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
+<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, Apache GeaFlow (Incubating) introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
<ol>
<li><strong>Querying Vertices/Edges as Source Tables:</strong></li>
</ol>
@@ -67,7 +67,7 @@
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-unified-memory-manager-support">🍀 Unified Memory Manager Support<a href="#-unified-memory-manager-support" class="hash-link" aria-label="Direct link to 🍀 Unified Memory Manager Support" title="Direct link to 🍀 Unified Memory Manager Support"></a></h3>
-<p>Previously, GeaFlow lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
+<p>Previously, Apache GeaFlow (Incubating) lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
<p>The new <strong>Unified Memory Manager</strong> governs memory allocation, release, and monitoring across modules (shuffle, state, framework) for both on-heap and off-heap memory. Key capabilities include:</p>
<ul>
<li><strong>Unified On-heap/Off-heap Management:</strong> Abstracts memory access via <code>MemoryView</code>, shielding users from the underlying type. Off-heap chunks are pre-allocated (default chunk size: 30% of <code>-Xmx</code>, configurable via <code>off.heap.memory.chunkSize.MB</code>) and support dynamic resizing.</li>
@@ -114,7 +114,7 @@
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-acknowledgments">✨ Acknowledgments<a href="#-acknowledgments" class="hash-link" aria-label="Direct link to ✨ Acknowledgments" title="Direct link to ✨ Acknowledgments"></a></h2>
<p>Thank you to all contributors for making this release possible!
-<img decoding="async" loading="lazy" src="/assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp" width="1080" height="1080" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/30"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Join Performance Revolution: Grap [...]
+<img decoding="async" loading="lazy" src="/assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp" width="1080" height="1080" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/30"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Join Performance Revolution: Grap [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 17f5dc3..8658799 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/atom.xml b/blog/atom.xml
index 9f45848..20fa0f1 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -8,7 +8,7 @@
<subtitle>GeaFlow Blog</subtitle>
<icon>https://apache.github.io/img/favicon.png</icon>
<entry>
- <title type="html"><![CDATA[Exploring GeaFlow's Temporal Capabilities — Breathing New Life into Time-Series Data!]]></title>
+ <title type="html"><![CDATA[Exploring Apache GeaFlow (Incubating)'s Temporal Capabilities — Breathing New Life into Time-Series Data!]]></title>
<id>https://apache.github.io/blog/29</id>
<link href="https://apache.github.io/blog/29"/>
<updated>2025-06-25T00:00:00.000Z</updated>
@@ -35,8 +35,8 @@
Many tools support only one type of analysis and cannot concurrently process real-time streams and historical data.</p>
</li>
</ul>
-<p> To address these issues, GeaFlow innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph processing, GeaFlow off [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-geaflow">What Is GeaFlow?<a href="https://apache.github.io/blog/29#what-is-geaflow" class="hash-link" aria-label="Direct link to What Is GeaFlow?" title="Direct link to What Is GeaFlow?"></a></h2>
+<p> To address these issues, Apache GeaFlow (Incubating) innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph pro [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-apache-geaflow-incubating">What Is Apache GeaFlow (Incubating)?<a href="https://apache.github.io/blog/29#what-is-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to What Is Apache GeaFlow (Incubating)?" title="Direct link to What Is Apache GeaFlow (Incubating)?"></a></h2>
<p>GeaFlow is a powerful distributed computing platform that combines graph computing and stream processing to handle dynamic graphs and temporal data efficiently. It supports complex graph algorithms and real-time analytics, making it ideal for dynamic scenarios. Key features include:</p>
<ul>
<li>
@@ -81,8 +81,8 @@ Stream graphs handle real-time updates; temporal graphs add time-based recording
<li><strong>Temporal Graphs Enhance Stream Analysis</strong><br>
Timestamps enable complex operations like trend prediction and window-based analytics.</li>
</ul>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflows-implementation"><strong>4. GeaFlow’s Implementation</strong><a href="https://apache.github.io/blog/29#4-geaflows-implementation" class="hash-link" aria-label="Direct link to 4-geaflows-implementation" title="Direct link to 4-geaflows-implementation"></a></h3>
-<p>GeaFlow unifies stream and temporal graphs through:</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubatings-implementation"><strong>4. Apache GeaFlow (Incubating)’s Implementation</strong><a href="https://apache.github.io/blog/29#4-apache-geaflow-incubatings-implementation" class="hash-link" aria-label="Direct link to 4-apache-geaflow-incubatings-implementation" title="Direct link to 4-apache-geaflow-incubatings-implementation"></a></h3>
+<p>Apache GeaFlow (Incubating) unifies stream and temporal graphs through:</p>
<ul>
<li><strong>Timestamp Assignment</strong><br>
Assigns <em>processing time</em> or <em>event time</em> to all data.</li>
@@ -129,9 +129,9 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Flexible</strong>: SQL-like syntax lowers development barriers.</li>
<li><strong>Scalable</strong>: Handles massive dynamic graphs via incremental computation.</li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-geaflows-temporal-capabilities">Core Highlights of GeaFlow’s Temporal Capabilities<a href="https://apache.github.io/blog/29#core-highlights-of-geaflows-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities" title="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-apache-geaflow-incubatings-temporal-capabilities">Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities<a href="https://apache.github.io/blog/29#core-highlights-of-apache-geaflow-incubatings-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities" title="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Tem [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-time-aware-data-processing">1. Time-Aware Data Processing<a href="https://apache.github.io/blog/29#1-time-aware-data-processing" class="hash-link" aria-label="Direct link to 1. Time-Aware Data Processing" title="Direct link to 1. Time-Aware Data Processing"></a></h3>
-<p>Timestamps enable precision. GeaFlow supports:</p>
+<p>Timestamps enable precision. Apache GeaFlow (Incubating) supports:</p>
<ul>
<li><strong>5-Minute Trend Analysis</strong>: Track real-time interaction frequency shifts.</li>
<li><strong>24-Hour Dynamic Patterns</strong>: Identify long-term trends (e.g., user purchase behavior).</li>
@@ -157,7 +157,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-start-your-temporal-data-journey">Conclusion: Start Your Temporal Data Journey<a href="https://apache.github.io/blog/29#conclusion-start-your-temporal-data-journey" class="hash-link" aria-label="Direct link to Conclusion: Start Your Temporal Data Journey" title="Direct link to Conclusion: Start Your Temporal Data Journey"></a></h2>
<p>Dynamic data holds immense value, and GeaFlow’s temporal capabilities unlock it. Whether you’re a novice or an expert, GeaFlow empowers you to harness time-series data.</p>
-<p><strong>Download GeaFlow today and explore the power of temporal analytics!</strong></p>
+<p><strong>Download Apache GeaFlow (Incubating) today and explore the power of temporal analytics!</strong></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="terminology">Terminology<a href="https://apache.github.io/blog/29#terminology" class="hash-link" aria-label="Direct link to Terminology" title="Direct link to Terminology"></a></h2>
<p><strong>DSL</strong>: Domain-Specific Language. GeaFlow’s unified DSL integrates SQL and ISO/GQL for relational and graph analysis (pattern matching, algorithms), supporting hybrid table/graph operations.</p>]]></content>
@@ -168,16 +168,11 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<link href="https://apache.github.io/blog/28"/>
<updated>2025-06-03T00:00:00.000Z</updated>
<summary type="html"><![CDATA[Problem Background]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png" width="3620" height="2018" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="https://apache.github.io/blog/28#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
+ <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="https://apache.github.io/blog/28#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
<p>In streaming computing, data rarely arrives all at once but is continuously input and processed. Similarly, in graph computing/graph querying scenarios, vertices and edges are constantly read from data sources to construct graphs incrementally. In incremental graph queries, the graph evolves continuously, leading to different query results across graph versions. When new vertices/edges form an updated graph version, recomputing through the entire graph incurs high overhead and duplica [...]
-<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Geaflow is an open-source streaming graph engine by Ant Group’s graph computing team, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9.jpeg" alt="画板" class="img_ev3q"></p>
+<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Apache GeaFlow (Incubating) is an open-source streaming graph engine, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article introduces GeaF [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-challenges">Current Challenges<a href="https://apache.github.io/blog/28#current-challenges" class="hash-link" aria-label="Direct link to Current Challenges" title="Direct link to Current Challenges"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">The Geaflow engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
-<div style="text-align:center">
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q">
-</div>
+<p><font style="color:rgb(0, 0, 0)">The Apache GeaFlow (Incubating) engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
<p>The key issue is that <strong>Vertex A1 cannot trigger computation if only the delta is considered</strong>, yet it belongs to the incremental results. To resolve this, we propose a subgraph expansion method from new vertices. The query is divided into two phases:</p>
<ol>
<li><strong>Evolve Phase</strong>: Propagate <code>EvolveMessage</code> from new vertices to neighbors, adding recipients to the <code>EvolveVertices</code> set.</li>
@@ -198,8 +193,6 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</ol>
<p>Core logic in <code>GeaFlowDynamicVCTraversalFunction</code>:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">@Override</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
-<p><strong>Visualization:</strong><br>
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2024/jpeg/23857192/1734590557540-5f3f4528-fa07-4208-8425-bc514ea5e06b.jpeg" alt="画板" class="img_ev3q"></p>
<p><strong>Evolve Conditions:</strong></p>
<ul>
<li>Query iterations <code>>2</code> (no Evolve needed for ≤2 hops).</li>
@@ -208,11 +201,11 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li>No starting vertex filter in GQL (e.g., <code>Match(a:person where a.id=1)</code> excludes Evolve).</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo">Demo<a href="https://apache.github.io/blog/28#demo" class="hash-link" aria-label="Direct link to Demo" title="Direct link to Demo"></a></h2>
-<p>In Geaflow, configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
+<p>In Apache GeaFlow (Incubating), configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>In this demo, vertex window size is 20, and edge window size is 3, meaning each window loads 20 vertices and 3 edges. A 3-hop query is executed. The demo is available in IncrMatchTest.java and can be run directly.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-outlook">Conclusion and Outlook<a href="https://apache.github.io/blog/28#conclusion-and-outlook" class="hash-link" aria-label="Direct link to Conclusion and Outlook" title="Direct link to Conclusion and Outlook"></a></h2>
-<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Geaflow uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more complex incremental m [...]
+<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Apache GeaFlow (Incubating) uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more c [...]
</entry>
<entry>
<title type="html"><![CDATA[Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever]]></title>
@@ -230,14 +223,10 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Financial Anti-Fraud Scenario</strong>: In anti-fraud analysis, complex multi-layered fund chain mining often relies on multi-table JOIN operations for intricate multi-hop tracking. Analyst teams spend days writing SQL scripts, and the final query can take hours — by which time the funds have already been laundered. This reveals a deep contradiction in traditional data warehouses: <strong>the misalignment between the relational paradigm and real-world networked business logic [...]
<li><strong>Marketing Analysis Scenario</strong>: In analyzing marketing business relationships, identifying potential VIP customers through social connection chains requires advanced data analysis skills. Although tools like DeepInsight AI Copilot now allow users to quickly generate dimensions and metrics with 80% accuracy via large models and integrate them into self-service dashboards, these analyses often involve deep user associations, <strong>which perform poorly when expressed int [...]
</ul>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/67556465/1741674750798-f519cba9-d8ae-47d4-aec0-97c2ef31a759.jpeg" alt="" class="img_ev3q"></p>
-<p><strong>Figure 1: Performance Difference Between SQL Join and GQL Graph Hop Queries</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-constraints">2. Data Constraints<a href="https://apache.github.io/blog/30#2-data-constraints" class="hash-link" aria-label="Direct link to 2. Data Constraints" title="Direct link to 2. Data Constraints"></a></h3>
<p><strong>Efficiency Constraint</strong>: When association levels exceed 3 hops, the time complexity of traditional JOIN operations grows exponentially. Analytical models centered around multi-table JOINs gradually lose their advantage and become a "shackle" to efficiency.</p>
<p><strong>Expressiveness Constraint</strong>: Traditional SQL not only requires complex expressions but also struggles to intuitively represent graph topologies using the relational model.</p>
<p><strong>Innovation Constraint</strong>: Business analysts often abandon graph technology stacks due to the need to learn GQL (Graph Query Language). The fragmented toolchain keeps graph analytics confined to technical departments, failing to empower front-line business teams.</p>
-<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png" class="img_ev3q"></p>
-<p><strong>Figure 2: JOIN vs GQL Expression Examples</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-breakthrough-strategy-core-value-of-the-graph-data-warehouse">3. Breakthrough Strategy: Core Value of the Graph Data Warehouse<a href="https://apache.github.io/blog/30#3-breakthrough-strategy-core-value-of-the-graph-data-warehouse" class="hash-link" aria-label="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse" title="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-lower-cognitive-costs">(1) Lower Cognitive Costs<a href="https://apache.github.io/blog/30#1-lower-cognitive-costs" class="hash-link" aria-label="Direct link to (1) Lower Cognitive Costs" title="Direct link to (1) Lower Cognitive Costs"></a></h4>
<p>Users don’t need to understand graph database expertise. Complex graph association analysis can be performed through SQL operations, with the underlying system connected to a graph engine.</p>
@@ -253,22 +242,17 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 1: Semantic Analysis.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on selecting entity column sequences for ID composition, identifying entity/relationship semantics in tables, discovering cross-table equivalent columns (columns with equal value relationships), and supporting expression-based column processing. Among all possible solutions, the best-performing one in terms of storage performance, computational perfo [...]
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 2: Structured Transformation.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on generating vertex/edge entities, merging vertex entities, and creating redundant edges when necessary to balance data redundancy and query performance. Virtual nodes are automatically created to bind relationships, and edge start/endpoints are configured.</font></p>
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 3: Graph Assembly.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">All vertices are merged, and edges bound to start nodes are naturally merged. Endpoint binding is optional. For two different graph conversion schemes, a difference vector can be calculated — representing how all tables map to entity changes.</font></p>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683049495-d75ae87b-9510-40ee-b22f-c6140570b1f1.png" alt="" class="img_ev3q"></p>
-<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png" width="1714" height="826" class="img_ev3q"></p>
-<p><strong>Figure 3: ER to Graph Schema Conversion Example Series</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">Through algorithmic analysis of inter-table associations and automatic graph construction, this provides a basis for migrating data from its original storage location to the graph data warehouse. It also significantly reduces manual data modeling and DSL scripting efforts, enabling fast migration of traditional warehouse data to a graph warehouse with no manual intervention and immediate analysis readiness.</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-pipeline-materialized-data-interaction-capabilities">2. Data Pipeline: Materialized Data Interaction Capabilities<a href="https://apache.github.io/blog/30#2-data-pipeline-materialized-data-interaction-capabilities" class="hash-link" aria-label="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities" title="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities"></a></h3>
-<p>Similar to traditional data warehouses, the graph data warehouse leverages GeaFlow engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monitoring and logging, v [...]
+<p>Similar to traditional data warehouses, the graph data warehouse leverages Apache GeaFlow (Incubating) engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monit [...]
<p><font style="color:rgb(0, 0, 0)">With the help of the Schema Converter, a materialization plan from table storage to graph storage can be generated, building a data pipeline between traditional and graph data warehouses. Based on the table-to-graph materialization plan, the system can automatically generate data sync task orchestrations according to actual business configurations like acceleration tables, relationships, fields, and permissions. These are then scheduled via the graph w [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">The data pipeline integrates deeply with mainstream big data ecosystems like ODPS/Hive/Paimon. It achieves full lifecycle data management through a three-tier architecture: at the data access layer, it automatically captures table changes, generates materialization plans, and syncs incremental mappings from tables to graph entities, currently managing graph data at the 10TB scale; at the conversion engine layer, it fully automates DSL task orche [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf.png" alt="" class="img_ev3q"></p>
+<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
<p><strong>Figure 4: Open-Source Technical Architecture Overview</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-sql-gql-translation-engine">3. SQL-GQL Translation Engine<a href="https://apache.github.io/blog/30#3-sql-gql-translation-engine" class="hash-link" aria-label="Direct link to 3. SQL-GQL Translation Engine" title="Direct link to 3. SQL-GQL Translation Engine"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In traditional relational databases, multi-layer table join queries often require complex JOIN statements, which are not only inefficient to develop but also struggle to meet the demands of ad-hoc analysis of massive associated data. To address this pain point, we introduced an innovative SQL-GQL translation engine that automatically converts complex SQL JOINs into graph path queries without requiring users to learn graph query languages (GQL). [...]
<p><font style="color:rgb(64, 64, 64)">Unlike SQL, which operates on two-dimensional tables based on the relational model, GQL's query structure and semantics align with graph data characteristics, especially in linearization and nested processing of query logic. Converting SQL queries to GQL involves</font> syntax structure mapping<font style="color:rgb(64, 64, 64)">,</font> data model mapping<font style="color:rgb(64, 64, 64)">, and</font> execution logic reconstruction<font style="col [...]
<p>Compared to traditional SQL queries<font style="color:rgb(64, 64, 64)">that may take minutes to analyze user relationships through three table joins, graph path queries can complete the same task in seconds.</font><font style="color:rgba(0, 0, 0, 0.88)">This engine has been validated in typical business scenarios like short video analysis, membership growth, and customer rights services. In the future, it will expand to support complex subqueries and expression operations, allowing mo [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683921355-149d0fea-7a3f-4fb8-ad36-f4b4c8541113.png" alt="" class="img_ev3q"></p>
-<p><strong>Figure 5: SQL AST to GQL Structure Translation Difference Example</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-technical-advantages-and-application-scenarios">3. Technical Advantages and Application Scenarios<a href="https://apache.github.io/blog/30#3-technical-advantages-and-application-scenarios" class="hash-link" aria-label="Direct link to 3. Technical Advantages and Application Scenarios" title="Direct link to 3. Technical Advantages and Application Scenarios"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="31-underlying-logic-of-efficiency-gains">3.1 Underlying Logic of Efficiency Gains<a href="https://apache.github.io/blog/30#31-underlying-logic-of-efficiency-gains" class="hash-link" aria-label="Direct link to 3.1 Underlying Logic of Efficiency Gains" title="Direct link to 3.1 Underlying Logic of Efficiency Gains"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In relational analysis scenarios, the graph data warehouse’s breakthrough performance stems from two core technological innovations.</font></p>
@@ -279,18 +263,18 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><font style="color:rgba(0, 0, 0, 0.88)">At the algorithm level, the system’s built-in graph computing engine transcends traditional warehouse limitations and opens interfaces for custom graph algorithm development within the open-source ecosystem. For example, traditional PageRank algorithms can identify influential nodes in social networks for targeted marketing; Weakly Connected Components (WCC) can detect anomalous communities in billion-scale transaction data. Through standardized [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">Compared to traditional data warehouses, the graph data warehouse achieves generational leaps in three dimensions: performance (1–2 orders of magnitude faster), usability (eliminating graph learning barriers via SQL-GQL auto-conversion), and analytical depth (supporting algorithmic analysis and hidden relationship discovery).</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-future-outlook">4. Future Outlook<a href="https://apache.github.io/blog/30#4-future-outlook" class="hash-link" aria-label="Direct link to 4. Future Outlook" title="Direct link to 4. Future Outlook"></a></h2>
-<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine GeaFlow. In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph computing engine, and [...]
+<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine Apache GeaFlow (Incubating). In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph co [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">On the technical evolution front, the next-generation engine will break through dynamic streaming graph computing bottlenecks to support trillion-edge incremental updates. By integrating vectorized computing engines, it can jointly query property graphs and vector graphs to meet AIGC-era multimodal analysis needs and enable revolutionary experiences like generating graph queries directly from natural language. Industry applications are rapidly e [...]
<hr>
<p>Let me know if you'd like a version formatted for a blog, documentation, or presentation!</p>]]></content>
</entry>
<entry>
- <title type="html"><![CDATA[Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing]]></title>
+ <title type="html"><![CDATA[Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing]]></title>
<id>https://apache.github.io/blog/32</id>
<link href="https://apache.github.io/blog/32"/>
<updated>2025-04-03T00:00:00.000Z</updated>
- <summary type="html"><![CDATA[March 2025 saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature updates, including:]]></summary>
- <content type="html"><![CDATA[<p><strong>March 2025</strong> saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature updates, including:</p>
+ <summary type="html"><![CDATA[March 2025 saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version implements multiple significant feature updates, including:]]></summary>
+ <content type="html"><![CDATA[<p><strong>March 2025</strong> saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version implements multiple significant feature updates, including:</p>
<ul>
<li>🍀 Experimental support for storing GeaFlow graph data in Paimon data lake</li>
<li>🍀 Enhanced graph data warehouse capabilities: Supports relational access to graph entities</li>
@@ -299,7 +283,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li>🍀 Support for incremental matching operators</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-new-features">✨ New Features<a href="https://apache.github.io/blog/32#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="https://apache.github.io/blog/32#-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)" title="Direct link to 🍀 GeaFlow Graph Storage Extended [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="https://apache.github.io/blog/32#-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data [...]
<p>To enhance GeaFlow's data storage system scalability, real-time processing capabilities, and cost efficiency, this update adds support for <strong>Apache Paimon</strong>. As a next-generation streaming data lake storage format, Paimon differs significantly in design philosophy and features from RocksDB, previously used by GeaFlow:</p>
<ul>
<li><strong>Supports object storage/HDFS distributed storage</strong>, natively adapting to cloud-native environments. This enables storage-compute separation, reduces hardware dependencies, and supports elastic scaling.</li>
@@ -312,10 +296,10 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Current limitations</strong>: Only supports local filesystem as Paimon backend; recoverability not yet supported; dynamic graph data storage not yet supported.</li>
<li>Configure the storage path via the parameter <code>geaflow.store.paimon.options.warehouse</code> (default: <code>"file:///tmp/paimon/"</code>).</li>
</ul>
-<p>The current GeaFlow storage architecture is shown below:
+<p>The current Apache GeaFlow (Incubating) storage architecture is shown below:
<img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities">🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entities<a href="https://apache.github.io/blog/32#-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities" class="hash-link" aria-label="Direct link to 🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entiti [...]
-<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, GeaFlow introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
+<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, Apache GeaFlow (Incubating) introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
<ol>
<li><strong>Querying Vertices/Edges as Source Tables:</strong></li>
</ol>
@@ -335,7 +319,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-unified-memory-manager-support">🍀 Unified Memory Manager Support<a href="https://apache.github.io/blog/32#-unified-memory-manager-support" class="hash-link" aria-label="Direct link to 🍀 Unified Memory Manager Support" title="Direct link to 🍀 Unified Memory Manager Support"></a></h3>
-<p>Previously, GeaFlow lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
+<p>Previously, Apache GeaFlow (Incubating) lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
<p>The new <strong>Unified Memory Manager</strong> governs memory allocation, release, and monitoring across modules (shuffle, state, framework) for both on-heap and off-heap memory. Key capabilities include:</p>
<ul>
<li><strong>Unified On-heap/Off-heap Management:</strong> Abstracts memory access via <code>MemoryView</code>, shielding users from the underlying type. Off-heap chunks are pre-allocated (default chunk size: 30% of <code>-Xmx</code>, configurable via <code>off.heap.memory.chunkSize.MB</code>) and support dynamic resizing.</li>
@@ -390,14 +374,13 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<link href="https://apache.github.io/blog/31"/>
<updated>2025-03-25T00:00:00.000Z</updated>
<summary type="html"><![CDATA[Author Dongshuo.]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png" width="2518" height="1104" class="img_ev3q"></p>
-<blockquote>
+ <content type="html"><![CDATA[<blockquote>
<p>Author: Kunyu; Reviewer: Dongshuo.</p>
</blockquote>
-<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed GeaFlow to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computing—combining "streams [...]
+<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed Apache GeaFlow (Incubating) to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computin [...]
<p>In today’s era, data is being generated at an unprecedented speed and scale, and real-time processing of massive datasets has wide applications in various fields such as anomaly detection, search recommendations, and financial transactions. As one of the core technologies for real-time data processing, <strong>stream computing</strong> has become increasingly important.</p>
<p>Unlike batch processing, which waits for all data to arrive before computation, stream computing partitions continuously generated data streams into micro-batches and performs incremental computations on each batch. This computational characteristic gives stream computing high throughput and low latency. Common stream computing engines include Flink and Spark Streaming, both of which process data using tabular representations. However, as stream computing applications deepen, more and [...]
-<p>GeaFlow, an open-source stream graph computing engine developed by Ant Group's graph computing team, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
+<p>Apache GeaFlow (Incubating), an open-source stream graph computing engine, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-computing-engine-flink">Stream Computing Engine: Flink<a href="https://apache.github.io/blog/31#stream-computing-engine-flink" class="hash-link" aria-label="Direct link to Stream Computing Engine: Flink" title="Direct link to Stream Computing Engine: Flink"></a></h2>
<p>Flink is a classic table-based stream processing engine. It slices incoming data streams into micro-batches and processes the data in each batch incrementally. During execution, Flink translates computation tasks into directed graphs composed of basic operators like map, filter, and join. Each operator receives input from upstream and sends output downstream. Incremental data passes through all operators to produce results for the current batch.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1741541936849-f9e0ae71-d25d-4789-b9c6-ed0380140f2a.png" alt="" class="img_ev3q"></p>
@@ -411,43 +394,43 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p>The main performance bottleneck lies in scanning RightStateView. LeftStateView and RightStateView store the left and right tables of the join, respectively. As data continuously flows in, the size of StateViews grows, causing scan times to increase dramatically and severely degrading system performance.</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join Operator Implementation</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-geaflow">Stream Graph Computing Engine: GeaFlow<a href="https://apache.github.io/blog/31#stream-graph-computing-engine-geaflow" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: GeaFlow" title="Direct link to Stream Graph Computing Engine: GeaFlow"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-apache-geaflow-incubating">Stream Graph Computing Engine: Apache GeaFlow (Incubating)<a href="https://apache.github.io/blog/31#stream-graph-computing-engine-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)" title="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="graph-computing--stream-graphs">Graph Computing & Stream Graphs<a href="https://apache.github.io/blog/31#graph-computing--stream-graphs" class="hash-link" aria-label="Direct link to Graph Computing & Stream Graphs" title="Direct link to Graph Computing & Stream Graphs"></a></h3>
<p>Graph computing is a computational paradigm based on graph data structures. A graph G(V,E) consists of a set of vertices V and edges E, where edges represent relationships between data. Using the public dataset web-Google as an example, each line contains two numbers representing a hyperlink between two web pages. As shown below, the left side shows raw data, which is traditionally modeled as a two-column table. In contrast, graph modeling treats web pages as vertices and hyperlinks a [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>Table Modeling vs. Graph Modeling</p>
<p>A <strong>stream graph</strong> is the application of graph computing to streaming scenarios. It divides the graph into historical and incremental components based on data stream updates. For example, if the first two rows have been processed and we are now handling the third row, the historical graph is built from the first two rows, and the incremental graph is formed by the third row. Together, they constitute the full graph. Applying incremental graph algorithms on stream graphs e [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-architecture">GeaFlow Architecture<a href="https://apache.github.io/blog/31#geaflow-architecture" class="hash-link" aria-label="Direct link to GeaFlow Architecture" title="Direct link to GeaFlow Architecture"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-architecture">Apache GeaFlow (Incubating) Architecture<a href="https://apache.github.io/blog/31#apache-geaflow-incubating-architecture" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Architecture" title="Direct link to Apache GeaFlow (Incubating) Architecture"></a></h3>
<p>The GeaFlow engine’s computation flow consists of stream data input, distributed incremental graph computation, and incremental result output. Like traditional stream engines, real-time data is sliced into micro-batches by window. For each batch, the data is parsed into vertices and edges to form an incremental graph. This incremental graph and the historical graph (built from previous data) together form the complete stream graph. The computation framework applies incremental graph a [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a.png" alt="" class="img_ev3q"></p>
-<p>GeaFlow Incremental Computation</p>
+<p>Apache GeaFlow (Incubating) Incremental Computation</p>
<p>The GeaFlow computation framework is a vertex-centric iterative model. It starts with vertices in the incremental graph. In each iteration, each vertex maintains its own state and performs computation based on its associated historical and incremental graph data. The result is then passed to neighboring vertices via message passing to trigger the next iteration.</p>
-<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
+<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
<p>The diagram below illustrates the two-hop case. In the first iteration, the edge B->C creates incoming and outgoing paths, sent to B and C, respectively. In the second iteration, B receives an incoming path, adds its own incoming edges, and forms a 2-hop incoming path, which it sends to itself. Similarly, C forms a 2-hop outgoing path and sends it to B. In the final iteration, B combines the incoming and outgoing paths to produce the new paths. Unlike Flink, which must scan all his [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>Two-Hop Incremental Path Computation</p>
<p>The above graph algorithm has been integrated into GeaFlow’s <code>IncKHop</code> operator, and users can directly call it using DSL:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-performance-test">GeaFlow Performance Test<a href="https://apache.github.io/blog/31#geaflow-performance-test" class="hash-link" aria-label="Direct link to GeaFlow Performance Test" title="Direct link to GeaFlow Performance Test"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-performance-test">Apache GeaFlow (Incubating) Performance Test<a href="https://apache.github.io/blog/31#apache-geaflow-incubating-performance-test" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Performance Test" title="Direct link to Apache GeaFlow (Incubating) Performance Test"></a></h2>
<p>To evaluate GeaFlow’s performance in stream graph computing, we designed a comparative experiment using the k-Hop algorithm. We used the public dataset <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a> as input and measured the time required to complete the computation across one-hop to four-hop scenarios. The experiment ran on 16 servers, each with 8 cores and 16GB memory.</p>
<p>As shown in the results below, the x-axis represents one-hop to four-hop relationships, and the y-axis shows the processing time on a logarithmic scale. In one- and two-hop cases, Flink outperforms GeaFlow due to the small amount of data involved in joins. However, as complexity increases, Flink’s join-based approach becomes inefficient, especially in four-hop cases, where it can’t finish within a day. GeaFlow, by contrast, scales efficiently due to its incremental graph algorithm, wh [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/8237/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221.png" alt="" class="img_ev3q"></p>
<p>k-Hop Computation Performance Comparison</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-future-work">Conclusion and Future Work<a href="https://apache.github.io/blog/31#conclusion-and-future-work" class="hash-link" aria-label="Direct link to Conclusion and Future Work" title="Direct link to Conclusion and Future Work"></a></h2>
-<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. GeaFlow addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
-<p>GeaFlow is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
+<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. Apache GeaFlow (Incubating) addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
+<p>Apache GeaFlow (Incubating) is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
<p>There are many exciting tasks to explore. You can start with these beginner-friendly issues:</p>
<ul>
-<li>Support incremental k-Core algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>Support incremental k-Core algorithm (<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="https://apache.github.io/blog/31#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project: <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project: <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google Dataset: <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues: <a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>Incremental k-Hop Source Code: <a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+<li>Apache GeaFlow (Incubating) Issues: <a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>Incremental k-Hop Source Code: <a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
</ol>]]></content>
</entry>
<entry>
@@ -456,13 +439,12 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<link href="https://apache.github.io/blog/27"/>
<updated>2025-03-11T00:00:00.000Z</updated>
<summary type="html"><![CDATA[Author: Zhang Qi]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png" width="1024" height="576" class="img_ev3q"></p>
-<blockquote>
+ <content type="html"><![CDATA[<blockquote>
<p>Author: Zhang Qi</p>
</blockquote>
<p>It's well known that when we need to perform correlation analysis on data, we typically use SQL join operations. However, Cartesian product calculations during SQL joins require maintaining a large number of intermediate results, which significantly impacts overall data analysis performance. In contrast, graph-based approaches maintain data correlations, transforming correlation analysis into graph traversal operations and greatly reducing the cost of data analysis.</p>
<p>However, with the continuous growth in data scale and increasing demand for real-time processing, efficiently solving real-time computation problems on large-scale graph data has become increasingly urgent. Traditional computing engines such as Spark and Flink are gradually falling short of meeting the growing business demands for graph data processing. Therefore, designing a real-time processing engine tailored for large-scale graph data will bring significant advancements to big dat [...]
-<p>Stream graph computing engine <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry ad [...]
+<p>Stream graph computing engine <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-graph-computing">1. Graph Computing<a href="https://apache.github.io/blog/27#1-graph-computing" class="hash-link" aria-label="Direct link to 1. Graph Computing" title="Direct link to 1. Graph Computing"></a></h2>
<p><font style="color:rgb(51, 51, 51)">A graph is a mathematical structure composed of nodes and edges. Nodes represent various entities such as people, locations, objects, or concepts, while edges represent the relationships between these nodes. For example:</font></p>
<ul>
@@ -491,13 +473,13 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p>However, this approach has a significant drawback: it involves redundant computation. For example, if we need to compute once per hour, using Spark would require not only computing the current window’s data but also backtracking all historical data, leading to a large amount of redundant computation. Therefore, we need a graph computing solution that supports incremental computation.</p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-geaflow">4. Incremental Dynamic Graph Computing: GeaFlow<a href="https://apache.github.io/blog/27#4-incremental-dynamic-graph-computing-geaflow" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow" title="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow"></a></h2>
-<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system GeaFlow (also known as [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-apache-geaflow-incubating">4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)<a href="https://apache.github.io/blog/27#4-incremental-dynamic-graph-computing-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)" title="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating [...]
+<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system Apache GeaFlow (Incuba [...]
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>How does GeaFlow implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
+<p>How does Apache GeaFlow (Incubating) implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
<p>Using the WCC algorithm as an example, for the connected components algorithm, in a time window, each edge’s src id and tar id vertices are activated. In the first iteration, their id information is sent to neighboring nodes. If a neighboring node receives the message and finds that it needs to update its information, it continues to notify its neighbors; otherwise, its iteration terminates.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/314644/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0.png" alt="" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-architecture-overview">5. GeaFlow Architecture Overview<a href="https://apache.github.io/blog/27#5-geaflow-architecture-overview" class="hash-link" aria-label="Direct link to 5. GeaFlow Architecture Overview" title="Direct link to 5. GeaFlow Architecture Overview"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-architecture-overview">5. Apache GeaFlow (Incubating) Architecture Overview<a href="https://apache.github.io/blog/27#5-apache-geaflow-incubating-architecture-overview" class="hash-link" aria-label="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview" title="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview"></a></h2>
<p>The GeaFlow engine consists of three main parts: DSL, Framework, and State. It also provides users with Stream API, Static Graph API, and Dynamic Graph API. The DSL layer is responsible for parsing and optimizing graph query languages like SQL+ISO/GQL, as well as schema inference. It also supports various Connectors such as Hive, Hudi, Kafka, and ODPS. The Framework layer handles runtime scheduling, fault tolerance, shuffle, and coordination of components. The State layer is responsib [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-performance-testing">6. GeaFlow Performance Testing<a href="https://apache.github.io/blog/27#6-geaflow-performance-testing" class="hash-link" aria-label="Direct link to 6. GeaFlow Performance Testing" title="Direct link to 6. GeaFlow Performance Testing"></a></h2>
@@ -518,9 +500,9 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p>The GeaFlow project is fully open-sourced. We have built some of the foundational capabilities of the stream graph engine. In the future, we hope to build a unified lakehouse processing engine for graph data based on GeaFlow to meet diverse big data correlation analysis needs. We are also actively preparing to join the Apache Foundation to enrich the open-source big data ecosystem. Therefore, we warmly welcome those interested in graph technology to join our community.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="https://apache.github.io/blog/27#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal Dataset:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
</ol>]]></content>
</entry>
</feed>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index e9ec38d..8060daf 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">Blog | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog"><meta data-rh="true" property="og:locale" content="en_US"><meta data-rh="true" property="og:locale:alternate" content="zh_CN"><meta data-rh="true" name="docusaurus_locale" content="en-US"><meta data-rh="true" name="d [...]
+<title data-rh="true">Blog | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/blog"><meta data-rh="true" property="og:locale" content="en_US"><meta data-rh="true" property="og:locale:alternate" content="zh_CN"><meta data-rh="true" name="docusaurus_locale" content="en-US"><meta data-rh="true" name="d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,21 +15,20 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>In today's digital era, data has become a core resource driving decisions and innovation. However, data is not just static numbers or relationships—it constantly evolves over time. Whether tracking real-time fluctuations in stock markets, dynamic interactions in social networks, or status updates from IoT devices, the temporal dimension is key to understanding this data. For example:</p>
<ul>
<li>In finance, the sequence of transactions determines the direction of capital flow.</li>
<li>In social networks, user interactions (likes, comments) evolve over time.</li>
<li>In IoT, timestamped sensor data reflects changes in device status.</li>
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Exploring GeaFlow's Temporal Capabilities — Breathing New Life into Time-Series Data!" href="/blog/29"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/28">Principles and Applications of Incremental Match in Streaming Graph Computing</a></h2><div class="container_mt6G margin-vert--md"><time datetime=" [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Exploring Apache GeaFlow (Incubating)'s Temporal Capabilities — Breathing New Life into Time-Series Data!" href="/blog/29"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/28">Principles and Applications of Incremental Match in Streaming Graph Computing</a></h2><div class="container_mt6G margin-vert-- [...]
<p>In streaming computing, data rarely arrives all at once but is continuously input and processed. Similarly, in graph computing/graph querying scenarios, vertices and edges are constantly read from data sources to construct graphs incrementally. In incremental graph queries, the graph evolves continuously, leading to different query results across graph versions. When new vertices/edges form an updated graph version, recomputing through the entire graph incurs high overhead and duplica [...]
<blockquote>
<p>Author: Lin Litao</p>
@@ -39,25 +38,23 @@
<ul>
<li><strong>Financial Anti-Fraud Scenario</strong>: In anti-fraud analysis, complex multi-layered fund chain mining often relies on multi-table JOIN operations for intricate multi-hop tracking. Analyst teams spend days writing SQL scripts, and the final query can take hours — by which time the funds have already been laundered. This reveals a deep contradiction in traditional data warehouses: <strong>the misalignment between the relational paradigm and real-world networked business logic [...]
<li><strong>Marketing Analysis Scenario</strong>: In analyzing marketing business relationships, identifying potential VIP customers through social connection chains requires advanced data analysis skills. Although tools like DeepInsight AI Copilot now allow users to quickly generate dimensions and metrics with 80% accuracy via large models and integrate them into self-service dashboards, these analyses often involve deep user associations, <strong>which perform poorly when expressed int [...]
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever" href="/blog/30"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/32">Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing [...]
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever" href="/blog/30"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/32">Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes [...]
<ul>
<li>🍀 Experimental support for storing GeaFlow graph data in Paimon data lake</li>
<li>🍀 Enhanced graph data warehouse capabilities: Supports relational access to graph entities</li>
<li>🍀 Unified memory manager support</li>
<li>🍀 RBO rule extensions: New MatchEdgeLabelFilterRemoveRule and MatchIdFilterSimplifyRule</li>
<li>🍀 Support for incremental matching operators</li>
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing" href="/blog/32"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/31">Graph4Stream: Accelerating Stream Computing with Graph-Based Approaches</a></h2><div [...]
-<blockquote>
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing" href="/blog/32"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/31">Graph4Stream: Accelerating Stream Computing with Graph-Based Appr [...]
<p>Author: Kunyu; Reviewer: Dongshuo.</p>
</blockquote>
-<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed GeaFlow to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computin [...]
-<p>In today’s era, data is being generated at an unprecedented speed and scale, and real-time processing of massive datasets has wide applications in various fields such as anomaly detection, search recommendations, and financial transactions. As one of the core technologies for real-time data processing, <strong>stream computing</strong> has become increasingly important.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Graph4Stre [...]
-<blockquote>
+<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed Apache GeaFlow (Incubating) to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities [...]
+<p>In today’s era, data is being generated at an unprecedented speed and scale, and real-time processing of massive datasets has wide applications in various fields such as anomaly detection, search recommendations, and financial transactions. As one of the core technologies for real-time data processing, <strong>stream computing</strong> has become increasingly important.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Graph4Stre [...]
<p>Author: Zhang Qi</p>
</blockquote>
<p>It's well known that when we need to perform correlation analysis on data, we typically use SQL join operations. However, Cartesian product calculations during SQL joins require maintaining a large number of intermediate results, which significantly impacts overall data analysis performance. In contrast, graph-based approaches maintain data correlations, transforming correlation analysis into graph traversal operations and greatly reducing the cost of data analysis.</p>
<p>However, with the continuous growth in data scale and increasing demand for real-time processing, efficiently solving real-time computation problems on large-scale graph data has become increasingly urgent. Traditional computing engines such as Spark and Flink are gradually falling short of meeting the growing business demands for graph data processing. Therefore, designing a real-time processing engine tailored for large-scale graph data will bring significant advancements to big dat [...]
-<p>Stream graph computing engine <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry ad [...]
+<p>Stream graph computing engine <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/blog/rss.xml b/blog/rss.xml
index c77ab4b..bf560b5 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -9,7 +9,7 @@
<generator>https://github.com/jpmonette/feed</generator>
<language>en-US</language>
<item>
- <title><![CDATA[Exploring GeaFlow's Temporal Capabilities — Breathing New Life into Time-Series Data!]]></title>
+ <title><![CDATA[Exploring Apache GeaFlow (Incubating)'s Temporal Capabilities — Breathing New Life into Time-Series Data!]]></title>
<link>https://apache.github.io/blog/29</link>
<guid>https://apache.github.io/blog/29</guid>
<pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate>
@@ -36,8 +36,8 @@
Many tools support only one type of analysis and cannot concurrently process real-time streams and historical data.</p>
</li>
</ul>
-<p> To address these issues, GeaFlow innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph processing, GeaFlow off [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-geaflow">What Is GeaFlow?<a href="https://apache.github.io/blog/29#what-is-geaflow" class="hash-link" aria-label="Direct link to What Is GeaFlow?" title="Direct link to What Is GeaFlow?"></a></h2>
+<p> To address these issues, Apache GeaFlow (Incubating) innovatively introduces temporal graph computing. As a distributed stream-graph engine designed for dynamic data, GeaFlow efficiently tackles challenges posed by evolving datasets. For dynamically changing graph structures, users can seamlessly perform operations like graph traversal, pattern matching, and computations—meeting complex analytical needs. By integrating temporal dimensions with dynamic graph pro [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-apache-geaflow-incubating">What Is Apache GeaFlow (Incubating)?<a href="https://apache.github.io/blog/29#what-is-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to What Is Apache GeaFlow (Incubating)?" title="Direct link to What Is Apache GeaFlow (Incubating)?"></a></h2>
<p>GeaFlow is a powerful distributed computing platform that combines graph computing and stream processing to handle dynamic graphs and temporal data efficiently. It supports complex graph algorithms and real-time analytics, making it ideal for dynamic scenarios. Key features include:</p>
<ul>
<li>
@@ -82,8 +82,8 @@ Stream graphs handle real-time updates; temporal graphs add time-based recording
<li><strong>Temporal Graphs Enhance Stream Analysis</strong><br>
Timestamps enable complex operations like trend prediction and window-based analytics.</li>
</ul>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflows-implementation"><strong>4. GeaFlow’s Implementation</strong><a href="https://apache.github.io/blog/29#4-geaflows-implementation" class="hash-link" aria-label="Direct link to 4-geaflows-implementation" title="Direct link to 4-geaflows-implementation"></a></h3>
-<p>GeaFlow unifies stream and temporal graphs through:</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubatings-implementation"><strong>4. Apache GeaFlow (Incubating)’s Implementation</strong><a href="https://apache.github.io/blog/29#4-apache-geaflow-incubatings-implementation" class="hash-link" aria-label="Direct link to 4-apache-geaflow-incubatings-implementation" title="Direct link to 4-apache-geaflow-incubatings-implementation"></a></h3>
+<p>Apache GeaFlow (Incubating) unifies stream and temporal graphs through:</p>
<ul>
<li><strong>Timestamp Assignment</strong><br>
Assigns <em>processing time</em> or <em>event time</em> to all data.</li>
@@ -130,9 +130,9 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Flexible</strong>: SQL-like syntax lowers development barriers.</li>
<li><strong>Scalable</strong>: Handles massive dynamic graphs via incremental computation.</li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-geaflows-temporal-capabilities">Core Highlights of GeaFlow’s Temporal Capabilities<a href="https://apache.github.io/blog/29#core-highlights-of-geaflows-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities" title="Direct link to Core Highlights of GeaFlow’s Temporal Capabilities"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-highlights-of-apache-geaflow-incubatings-temporal-capabilities">Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities<a href="https://apache.github.io/blog/29#core-highlights-of-apache-geaflow-incubatings-temporal-capabilities" class="hash-link" aria-label="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Temporal Capabilities" title="Direct link to Core Highlights of Apache GeaFlow (Incubating)’s Tem [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-time-aware-data-processing">1. Time-Aware Data Processing<a href="https://apache.github.io/blog/29#1-time-aware-data-processing" class="hash-link" aria-label="Direct link to 1. Time-Aware Data Processing" title="Direct link to 1. Time-Aware Data Processing"></a></h3>
-<p>Timestamps enable precision. GeaFlow supports:</p>
+<p>Timestamps enable precision. Apache GeaFlow (Incubating) supports:</p>
<ul>
<li><strong>5-Minute Trend Analysis</strong>: Track real-time interaction frequency shifts.</li>
<li><strong>24-Hour Dynamic Patterns</strong>: Identify long-term trends (e.g., user purchase behavior).</li>
@@ -158,7 +158,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-start-your-temporal-data-journey">Conclusion: Start Your Temporal Data Journey<a href="https://apache.github.io/blog/29#conclusion-start-your-temporal-data-journey" class="hash-link" aria-label="Direct link to Conclusion: Start Your Temporal Data Journey" title="Direct link to Conclusion: Start Your Temporal Data Journey"></a></h2>
<p>Dynamic data holds immense value, and GeaFlow’s temporal capabilities unlock it. Whether you’re a novice or an expert, GeaFlow empowers you to harness time-series data.</p>
-<p><strong>Download GeaFlow today and explore the power of temporal analytics!</strong></p>
+<p><strong>Download Apache GeaFlow (Incubating) today and explore the power of temporal analytics!</strong></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="terminology">Terminology<a href="https://apache.github.io/blog/29#terminology" class="hash-link" aria-label="Direct link to Terminology" title="Direct link to Terminology"></a></h2>
<p><strong>DSL</strong>: Domain-Specific Language. GeaFlow’s unified DSL integrates SQL and ISO/GQL for relational and graph analysis (pattern matching, algorithms), supporting hybrid table/graph operations.</p>]]></content:encoded>
@@ -169,16 +169,11 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<guid>https://apache.github.io/blog/28</guid>
<pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate>
<description><![CDATA[Problem Background]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png" width="3620" height="2018" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="https://apache.github.io/blog/28#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
+ <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="problem-background">Problem Background<a href="https://apache.github.io/blog/28#problem-background" class="hash-link" aria-label="Direct link to Problem Background" title="Direct link to Problem Background"></a></h2>
<p>In streaming computing, data rarely arrives all at once but is continuously input and processed. Similarly, in graph computing/graph querying scenarios, vertices and edges are constantly read from data sources to construct graphs incrementally. In incremental graph queries, the graph evolves continuously, leading to different query results across graph versions. When new vertices/edges form an updated graph version, recomputing through the entire graph incurs high overhead and duplica [...]
-<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Geaflow is an open-source streaming graph engine by Ant Group’s graph computing team, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9.jpeg" alt="画板" class="img_ev3q"></p>
+<p><font style="color:rgb(51, 51, 51)">GQL (Graph Query Language)</font> <font style="color:rgb(0, 0, 0)">is an international standard developed by ISO for graph query languages,</font> <font style="color:rgb(51, 51, 51)">used to execute queries on graphs. Apache GeaFlow (Incubating) is an open-source streaming graph engine, specializing in dynamically changing graph data and supporting large-scale, high-concurrency real-time graph computing scenarios.</font> This article introduces GeaF [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-challenges">Current Challenges<a href="https://apache.github.io/blog/28#current-challenges" class="hash-link" aria-label="Direct link to Current Challenges" title="Direct link to Current Challenges"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">The Geaflow engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
-<div style="text-align:center">
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/23857192/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q">
-</div>
+<p><font style="color:rgb(0, 0, 0)">The Apache GeaFlow (Incubating) engine adopts a vertex-centric framework, where each vertex sends messages iteratively. Vertices process received messages in subsequent iterations.</font> For GQL queries, traversal starts from initial vertices for pattern matching (e.g., from node <code>A</code> to <code>B</code> to <code>C</code>). In dynamic graphs, if only newly added vertices/edges trigger computation, results may be incomplete, as illustrated below:</p>
<p>The key issue is that <strong>Vertex A1 cannot trigger computation if only the delta is considered</strong>, yet it belongs to the incremental results. To resolve this, we propose a subgraph expansion method from new vertices. The query is divided into two phases:</p>
<ol>
<li><strong>Evolve Phase</strong>: Propagate <code>EvolveMessage</code> from new vertices to neighbors, adding recipients to the <code>EvolveVertices</code> set.</li>
@@ -199,8 +194,6 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</ol>
<p>Core logic in <code>GeaFlowDynamicVCTraversalFunction</code>:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">@Override</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
-<p><strong>Visualization:</strong><br>
-<img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2024/jpeg/23857192/1734590557540-5f3f4528-fa07-4208-8425-bc514ea5e06b.jpeg" alt="画板" class="img_ev3q"></p>
<p><strong>Evolve Conditions:</strong></p>
<ul>
<li>Query iterations <code>>2</code> (no Evolve needed for ≤2 hops).</li>
@@ -209,11 +202,11 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li>No starting vertex filter in GQL (e.g., <code>Match(a:person where a.id=1)</code> excludes Evolve).</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo">Demo<a href="https://apache.github.io/blog/28#demo" class="hash-link" aria-label="Direct link to Demo" title="Direct link to Demo"></a></h2>
-<p>In Geaflow, configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
+<p>In Apache GeaFlow (Incubating), configure incremental graphs via <code>windowSize</code> for vertex/edge tables:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>In this demo, vertex window size is 20, and edge window size is 3, meaning each window loads 20 vertices and 3 edges. A 3-hop query is executed. The demo is available in IncrMatchTest.java and can be run directly.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-outlook">Conclusion and Outlook<a href="https://apache.github.io/blog/28#conclusion-and-outlook" class="hash-link" aria-label="Direct link to Conclusion and Outlook" title="Direct link to Conclusion and Outlook"></a></h2>
-<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Geaflow uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more complex incremental m [...]
+<p>In dynamic/streaming graph scenarios, graph nodes and edges change in real time. When querying such graphs, we can often trigger computation only on the incremental part using historical information, avoiding full graph traversal. Apache GeaFlow (Incubating) uses a subgraph expansion-based incremental match method, applied within a vertex-centric distributed graph computing framework, to support incremental querying in dynamic graph scenarios. In the future, we aim to implement more c [...]
</item>
<item>
<title><![CDATA[Join Performance Revolution: Graph Data Warehouse Makes SQL Analysis Faster Than Ever]]></title>
@@ -231,14 +224,10 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Financial Anti-Fraud Scenario</strong>: In anti-fraud analysis, complex multi-layered fund chain mining often relies on multi-table JOIN operations for intricate multi-hop tracking. Analyst teams spend days writing SQL scripts, and the final query can take hours — by which time the funds have already been laundered. This reveals a deep contradiction in traditional data warehouses: <strong>the misalignment between the relational paradigm and real-world networked business logic [...]
<li><strong>Marketing Analysis Scenario</strong>: In analyzing marketing business relationships, identifying potential VIP customers through social connection chains requires advanced data analysis skills. Although tools like DeepInsight AI Copilot now allow users to quickly generate dimensions and metrics with 80% accuracy via large models and integrate them into self-service dashboards, these analyses often involve deep user associations, <strong>which perform poorly when expressed int [...]
</ul>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/jpeg/67556465/1741674750798-f519cba9-d8ae-47d4-aec0-97c2ef31a759.jpeg" alt="" class="img_ev3q"></p>
-<p><strong>Figure 1: Performance Difference Between SQL Join and GQL Graph Hop Queries</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-constraints">2. Data Constraints<a href="https://apache.github.io/blog/30#2-data-constraints" class="hash-link" aria-label="Direct link to 2. Data Constraints" title="Direct link to 2. Data Constraints"></a></h3>
<p><strong>Efficiency Constraint</strong>: When association levels exceed 3 hops, the time complexity of traditional JOIN operations grows exponentially. Analytical models centered around multi-table JOINs gradually lose their advantage and become a "shackle" to efficiency.</p>
<p><strong>Expressiveness Constraint</strong>: Traditional SQL not only requires complex expressions but also struggles to intuitively represent graph topologies using the relational model.</p>
<p><strong>Innovation Constraint</strong>: Business analysts often abandon graph technology stacks due to the need to learn GQL (Graph Query Language). The fragmented toolchain keeps graph analytics confined to technical departments, failing to empower front-line business teams.</p>
-<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741674805947-d91bf10a-02eb-427c-acea-3cb96094f164-4efc37c63ab454076abdf14eac3143ad.png" class="img_ev3q"></p>
-<p><strong>Figure 2: JOIN vs GQL Expression Examples</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-breakthrough-strategy-core-value-of-the-graph-data-warehouse">3. Breakthrough Strategy: Core Value of the Graph Data Warehouse<a href="https://apache.github.io/blog/30#3-breakthrough-strategy-core-value-of-the-graph-data-warehouse" class="hash-link" aria-label="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse" title="Direct link to 3. Breakthrough Strategy: Core Value of the Graph Data Warehouse"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-lower-cognitive-costs">(1) Lower Cognitive Costs<a href="https://apache.github.io/blog/30#1-lower-cognitive-costs" class="hash-link" aria-label="Direct link to (1) Lower Cognitive Costs" title="Direct link to (1) Lower Cognitive Costs"></a></h4>
<p>Users don’t need to understand graph database expertise. Complex graph association analysis can be performed through SQL operations, with the underlying system connected to a graph engine.</p>
@@ -254,22 +243,17 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 1: Semantic Analysis.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on selecting entity column sequences for ID composition, identifying entity/relationship semantics in tables, discovering cross-table equivalent columns (columns with equal value relationships), and supporting expression-based column processing. Among all possible solutions, the best-performing one in terms of storage performance, computational perfo [...]
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 2: Structured Transformation.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">Focus on generating vertex/edge entities, merging vertex entities, and creating redundant edges when necessary to balance data redundancy and query performance. Virtual nodes are automatically created to bind relationships, and edge start/endpoints are configured.</font></p>
<p><strong><font style="color:rgba(0, 0, 0, 0.88)">Stage 3: Graph Assembly.</font></strong><font style="color:rgba(0, 0, 0, 0.88)">All vertices are merged, and edges bound to start nodes are naturally merged. Endpoint binding is optional. For two different graph conversion schemes, a difference vector can be calculated — representing how all tables map to entity changes.</font></p>
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683049495-d75ae87b-9510-40ee-b22f-c6140570b1f1.png" alt="" class="img_ev3q"></p>
-<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741683063811-75a42c49-8b17-482b-9dd2-98be89ec63b0-636b131a193ea45f3ccaa3d62dd090a4.png" width="1714" height="826" class="img_ev3q"></p>
-<p><strong>Figure 3: ER to Graph Schema Conversion Example Series</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">Through algorithmic analysis of inter-table associations and automatic graph construction, this provides a basis for migrating data from its original storage location to the graph data warehouse. It also significantly reduces manual data modeling and DSL scripting efforts, enabling fast migration of traditional warehouse data to a graph warehouse with no manual intervention and immediate analysis readiness.</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-data-pipeline-materialized-data-interaction-capabilities">2. Data Pipeline: Materialized Data Interaction Capabilities<a href="https://apache.github.io/blog/30#2-data-pipeline-materialized-data-interaction-capabilities" class="hash-link" aria-label="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities" title="Direct link to 2. Data Pipeline: Materialized Data Interaction Capabilities"></a></h3>
-<p>Similar to traditional data warehouses, the graph data warehouse leverages GeaFlow engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monitoring and logging, v [...]
+<p>Similar to traditional data warehouses, the graph data warehouse leverages Apache GeaFlow (Incubating) engine capabilities and TuMaker’s mature business platform to provide data <font style="color:rgb(0, 0, 0)">task orchestration capabilities — organizing multiple data processing tasks (like data extraction, transformation, and loading) in a logical sequence and executing them automatically. Key features include visual interfaces, task scheduling, event triggers, error handling, monit [...]
<p><font style="color:rgb(0, 0, 0)">With the help of the Schema Converter, a materialization plan from table storage to graph storage can be generated, building a data pipeline between traditional and graph data warehouses. Based on the table-to-graph materialization plan, the system can automatically generate data sync task orchestrations according to actual business configurations like acceleration tables, relationships, fields, and permissions. These are then scheduled via the graph w [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">The data pipeline integrates deeply with mainstream big data ecosystems like ODPS/Hive/Paimon. It achieves full lifecycle data management through a three-tier architecture: at the data access layer, it automatically captures table changes, generates materialization plans, and syncs incremental mappings from tables to graph entities, currently managing graph data at the 10TB scale; at the conversion engine layer, it fully automates DSL task orche [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf.png" alt="" class="img_ev3q"></p>
+<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
<p><strong>Figure 4: Open-Source Technical Architecture Overview</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-sql-gql-translation-engine">3. SQL-GQL Translation Engine<a href="https://apache.github.io/blog/30#3-sql-gql-translation-engine" class="hash-link" aria-label="Direct link to 3. SQL-GQL Translation Engine" title="Direct link to 3. SQL-GQL Translation Engine"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In traditional relational databases, multi-layer table join queries often require complex JOIN statements, which are not only inefficient to develop but also struggle to meet the demands of ad-hoc analysis of massive associated data. To address this pain point, we introduced an innovative SQL-GQL translation engine that automatically converts complex SQL JOINs into graph path queries without requiring users to learn graph query languages (GQL). [...]
<p><font style="color:rgb(64, 64, 64)">Unlike SQL, which operates on two-dimensional tables based on the relational model, GQL's query structure and semantics align with graph data characteristics, especially in linearization and nested processing of query logic. Converting SQL queries to GQL involves</font> syntax structure mapping<font style="color:rgb(64, 64, 64)">,</font> data model mapping<font style="color:rgb(64, 64, 64)">, and</font> execution logic reconstruction<font style="col [...]
<p>Compared to traditional SQL queries<font style="color:rgb(64, 64, 64)">that may take minutes to analyze user relationships through three table joins, graph path queries can complete the same task in seconds.</font><font style="color:rgba(0, 0, 0, 0.88)">This engine has been validated in typical business scenarios like short video analysis, membership growth, and customer rights services. In the future, it will expand to support complex subqueries and expression operations, allowing mo [...]
-<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/67556465/1741683921355-149d0fea-7a3f-4fb8-ad36-f4b4c8541113.png" alt="" class="img_ev3q"></p>
-<p><strong>Figure 5: SQL AST to GQL Structure Translation Difference Example</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-technical-advantages-and-application-scenarios">3. Technical Advantages and Application Scenarios<a href="https://apache.github.io/blog/30#3-technical-advantages-and-application-scenarios" class="hash-link" aria-label="Direct link to 3. Technical Advantages and Application Scenarios" title="Direct link to 3. Technical Advantages and Application Scenarios"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="31-underlying-logic-of-efficiency-gains">3.1 Underlying Logic of Efficiency Gains<a href="https://apache.github.io/blog/30#31-underlying-logic-of-efficiency-gains" class="hash-link" aria-label="Direct link to 3.1 Underlying Logic of Efficiency Gains" title="Direct link to 3.1 Underlying Logic of Efficiency Gains"></a></h3>
<p><font style="color:rgba(0, 0, 0, 0.88)">In relational analysis scenarios, the graph data warehouse’s breakthrough performance stems from two core technological innovations.</font></p>
@@ -280,18 +264,18 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><font style="color:rgba(0, 0, 0, 0.88)">At the algorithm level, the system’s built-in graph computing engine transcends traditional warehouse limitations and opens interfaces for custom graph algorithm development within the open-source ecosystem. For example, traditional PageRank algorithms can identify influential nodes in social networks for targeted marketing; Weakly Connected Components (WCC) can detect anomalous communities in billion-scale transaction data. Through standardized [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">Compared to traditional data warehouses, the graph data warehouse achieves generational leaps in three dimensions: performance (1–2 orders of magnitude faster), usability (eliminating graph learning barriers via SQL-GQL auto-conversion), and analytical depth (supporting algorithmic analysis and hidden relationship discovery).</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-future-outlook">4. Future Outlook<a href="https://apache.github.io/blog/30#4-future-outlook" class="hash-link" aria-label="Direct link to 4. Future Outlook" title="Direct link to 4. Future Outlook"></a></h2>
-<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine GeaFlow. In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph computing engine, and [...]
+<p><font style="color:rgba(0, 0, 0, 0.88)">As a core carrier of next-generation data infrastructure, we plan to gradually open-source core capabilities like the graph storage engine, graph computing framework engine, and SQL-GQL translation module to build a developer-driven technical ecosystem. In 2023, we first open-sourced the streaming graph computing engine Apache GeaFlow (Incubating). In Q3 2025, we will release a standardized graph data analysis platform, high-performance graph co [...]
<p><font style="color:rgba(0, 0, 0, 0.88)">On the technical evolution front, the next-generation engine will break through dynamic streaming graph computing bottlenecks to support trillion-edge incremental updates. By integrating vectorized computing engines, it can jointly query property graphs and vector graphs to meet AIGC-era multimodal analysis needs and enable revolutionary experiences like generating graph queries directly from natural language. Industry applications are rapidly e [...]
<hr>
<p>Let me know if you'd like a version formatted for a blog, documentation, or presentation!</p>]]></content:encoded>
</item>
<item>
- <title><![CDATA[Streaming Graph Computing Engine GeaFlow v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing]]></title>
+ <title><![CDATA[Streaming Graph Computing Engine Apache GeaFlow (Incubating) v0.6.4 Released: Supports Relational Access to Graph Data, Incremental Matching Optimizes Real-Time Processing]]></title>
<link>https://apache.github.io/blog/32</link>
<guid>https://apache.github.io/blog/32</guid>
<pubDate>Thu, 03 Apr 2025 00:00:00 GMT</pubDate>
- <description><![CDATA[March 2025 saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature updates, including:]]></description>
- <content:encoded><![CDATA[<p><strong>March 2025</strong> saw the release of streaming graph computing engine GeaFlow v0.6.4. This version implements multiple significant feature updates, including:</p>
+ <description><![CDATA[March 2025 saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version implements multiple significant feature updates, including:]]></description>
+ <content:encoded><![CDATA[<p><strong>March 2025</strong> saw the release of streaming graph computing engine Apache GeaFlow (Incubating) v0.6.4. This version implements multiple significant feature updates, including:</p>
<ul>
<li>🍀 Experimental support for storing GeaFlow graph data in Paimon data lake</li>
<li>🍀 Enhanced graph data warehouse capabilities: Supports relational access to graph entities</li>
@@ -300,7 +284,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li>🍀 Support for incremental matching operators</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-new-features">✨ New Features<a href="https://apache.github.io/blog/32#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="https://apache.github.io/blog/32#-geaflow-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 GeaFlow Graph Storage Extended to Support Paimon Data Lake (Experimental)" title="Direct link to 🍀 GeaFlow Graph Storage Extended [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental">🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data Lake (Experimental)<a href="https://apache.github.io/blog/32#-apache-geaflow-incubating-graph-storage-extended-to-support-paimon-data-lake-experimental" class="hash-link" aria-label="Direct link to 🍀 Apache GeaFlow (Incubating) Graph Storage Extended to Support Paimon Data [...]
<p>To enhance GeaFlow's data storage system scalability, real-time processing capabilities, and cost efficiency, this update adds support for <strong>Apache Paimon</strong>. As a next-generation streaming data lake storage format, Paimon differs significantly in design philosophy and features from RocksDB, previously used by GeaFlow:</p>
<ul>
<li><strong>Supports object storage/HDFS distributed storage</strong>, natively adapting to cloud-native environments. This enables storage-compute separation, reduces hardware dependencies, and supports elastic scaling.</li>
@@ -313,10 +297,10 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<li><strong>Current limitations</strong>: Only supports local filesystem as Paimon backend; recoverability not yet supported; dynamic graph data storage not yet supported.</li>
<li>Configure the storage path via the parameter <code>geaflow.store.paimon.options.warehouse</code> (default: <code>"file:///tmp/paimon/"</code>).</li>
</ul>
-<p>The current GeaFlow storage architecture is shown below:
+<p>The current Apache GeaFlow (Incubating) storage architecture is shown below:
<img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities">🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entities<a href="https://apache.github.io/blog/32#-graph-data-warehouse-capability-expansion-supports-relational-access-to-graph-entities" class="hash-link" aria-label="Direct link to 🍀 Graph Data Warehouse Capability Expansion: Supports Relational Access to Graph Entiti [...]
-<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, GeaFlow introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
+<p>In traditional relational databases, multi-table JOIN queries often require complex SQL statements, hindering development efficiency and struggling with performance for ad-hoc analysis of massive interconnected data. Addressing this pain point, Apache GeaFlow (Incubating) introduces innovative SQL support that automatically translates complex SQL JOIN statements into graph path queries—<strong>no Graph Query Language (GQL) needed</strong>. This version offers two SQL syntax features:</p>
<ol>
<li><strong>Querying Vertices/Edges as Source Tables:</strong></li>
</ol>
@@ -336,7 +320,7 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-unified-memory-manager-support">🍀 Unified Memory Manager Support<a href="https://apache.github.io/blog/32#-unified-memory-manager-support" class="hash-link" aria-label="Direct link to 🍀 Unified Memory Manager Support" title="Direct link to 🍀 Unified Memory Manager Support"></a></h3>
-<p>Previously, GeaFlow lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
+<p>Previously, Apache GeaFlow (Incubating) lacked centralized memory management. Apart from RocksDB using off-heap memory, all memory was on-heap, leading to significant GC pressure under heavy loads. Network shuffling also involved multiple data copies, reducing efficiency.</p>
<p>The new <strong>Unified Memory Manager</strong> governs memory allocation, release, and monitoring across modules (shuffle, state, framework) for both on-heap and off-heap memory. Key capabilities include:</p>
<ul>
<li><strong>Unified On-heap/Off-heap Management:</strong> Abstracts memory access via <code>MemoryView</code>, shielding users from the underlying type. Off-heap chunks are pre-allocated (default chunk size: 30% of <code>-Xmx</code>, configurable via <code>off.heap.memory.chunkSize.MB</code>) and support dynamic resizing.</li>
@@ -391,14 +375,13 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<guid>https://apache.github.io/blog/31</guid>
<pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[Author Dongshuo.]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png" width="2518" height="1104" class="img_ev3q"></p>
-<blockquote>
+ <content:encoded><![CDATA[<blockquote>
<p>Author: Kunyu; Reviewer: Dongshuo.</p>
</blockquote>
-<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed GeaFlow to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computing—combining "streams [...]
+<p>In a previous article <a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">"Stream4Graph: Incremental Computation on Dynamic Graphs"</a>, we introduced how introducing incremental computation into graph computing—essentially combining "graphs + streams"—allowed Apache GeaFlow (Incubating) to significantly outperform Spark GraphX in terms of performance. Now, the question arises: when we introduce graph computing capabilities into stream computin [...]
<p>In today’s era, data is being generated at an unprecedented speed and scale, and real-time processing of massive datasets has wide applications in various fields such as anomaly detection, search recommendations, and financial transactions. As one of the core technologies for real-time data processing, <strong>stream computing</strong> has become increasingly important.</p>
<p>Unlike batch processing, which waits for all data to arrive before computation, stream computing partitions continuously generated data streams into micro-batches and performs incremental computations on each batch. This computational characteristic gives stream computing high throughput and low latency. Common stream computing engines include Flink and Spark Streaming, both of which process data using tabular representations. However, as stream computing applications deepen, more and [...]
-<p>GeaFlow, an open-source stream graph computing engine developed by Ant Group's graph computing team, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
+<p>Apache GeaFlow (Incubating), an open-source stream graph computing engine, combines graph and stream computing to provide an efficient framework for stream graph processing, significantly improving computational performance. Below, we will introduce the limitations of traditional stream computing engines in relational computation, explain the principles behind GeaFlow's efficiency, and present performance comparisons.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-computing-engine-flink">Stream Computing Engine: Flink<a href="https://apache.github.io/blog/31#stream-computing-engine-flink" class="hash-link" aria-label="Direct link to Stream Computing Engine: Flink" title="Direct link to Stream Computing Engine: Flink"></a></h2>
<p>Flink is a classic table-based stream processing engine. It slices incoming data streams into micro-batches and processes the data in each batch incrementally. During execution, Flink translates computation tasks into directed graphs composed of basic operators like map, filter, and join. Each operator receives input from upstream and sends output downstream. Incremental data passes through all operators to produce results for the current batch.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1741541936849-f9e0ae71-d25d-4789-b9c6-ed0380140f2a.png" alt="" class="img_ev3q"></p>
@@ -412,43 +395,43 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p>The main performance bottleneck lies in scanning RightStateView. LeftStateView and RightStateView store the left and right tables of the join, respectively. As data continuously flows in, the size of StateViews grows, causing scan times to increase dramatically and severely degrading system performance.</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join Operator Implementation</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-geaflow">Stream Graph Computing Engine: GeaFlow<a href="https://apache.github.io/blog/31#stream-graph-computing-engine-geaflow" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: GeaFlow" title="Direct link to Stream Graph Computing Engine: GeaFlow"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stream-graph-computing-engine-apache-geaflow-incubating">Stream Graph Computing Engine: Apache GeaFlow (Incubating)<a href="https://apache.github.io/blog/31#stream-graph-computing-engine-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)" title="Direct link to Stream Graph Computing Engine: Apache GeaFlow (Incubating)"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="graph-computing--stream-graphs">Graph Computing & Stream Graphs<a href="https://apache.github.io/blog/31#graph-computing--stream-graphs" class="hash-link" aria-label="Direct link to Graph Computing & Stream Graphs" title="Direct link to Graph Computing & Stream Graphs"></a></h3>
<p>Graph computing is a computational paradigm based on graph data structures. A graph G(V,E) consists of a set of vertices V and edges E, where edges represent relationships between data. Using the public dataset web-Google as an example, each line contains two numbers representing a hyperlink between two web pages. As shown below, the left side shows raw data, which is traditionally modeled as a two-column table. In contrast, graph modeling treats web pages as vertices and hyperlinks a [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>Table Modeling vs. Graph Modeling</p>
<p>A <strong>stream graph</strong> is the application of graph computing to streaming scenarios. It divides the graph into historical and incremental components based on data stream updates. For example, if the first two rows have been processed and we are now handling the third row, the historical graph is built from the first two rows, and the incremental graph is formed by the third row. Together, they constitute the full graph. Applying incremental graph algorithms on stream graphs e [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-architecture">GeaFlow Architecture<a href="https://apache.github.io/blog/31#geaflow-architecture" class="hash-link" aria-label="Direct link to GeaFlow Architecture" title="Direct link to GeaFlow Architecture"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-architecture">Apache GeaFlow (Incubating) Architecture<a href="https://apache.github.io/blog/31#apache-geaflow-incubating-architecture" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Architecture" title="Direct link to Apache GeaFlow (Incubating) Architecture"></a></h3>
<p>The GeaFlow engine’s computation flow consists of stream data input, distributed incremental graph computation, and incremental result output. Like traditional stream engines, real-time data is sliced into micro-batches by window. For each batch, the data is parsed into vertices and edges to form an incremental graph. This incremental graph and the historical graph (built from previous data) together form the complete stream graph. The computation framework applies incremental graph a [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/35234/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a.png" alt="" class="img_ev3q"></p>
-<p>GeaFlow Incremental Computation</p>
+<p>Apache GeaFlow (Incubating) Incremental Computation</p>
<p>The GeaFlow computation framework is a vertex-centric iterative model. It starts with vertices in the incremental graph. In each iteration, each vertex maintains its own state and performs computation based on its associated historical and incremental graph data. The result is then passed to neighboring vertices via message passing to trigger the next iteration.</p>
-<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
+<p>Taking k-Hop as an example, the incremental algorithm works as follows: In the first iteration, all edges in the incremental graph are identified and treated as initial incoming and outgoing paths, which are sent to their start and end vertices. In subsequent iterations, these paths are extended. Once the desired hop count is reached, the paths are sent back to the starting vertex, where they are combined into final results. Detailed implementation can be found in the open-source repo [...]
<p>The diagram below illustrates the two-hop case. In the first iteration, the edge B->C creates incoming and outgoing paths, sent to B and C, respectively. In the second iteration, B receives an incoming path, adds its own incoming edges, and forms a 2-hop incoming path, which it sends to itself. Similarly, C forms a 2-hop outgoing path and sends it to B. In the final iteration, B combines the incoming and outgoing paths to produce the new paths. Unlike Flink, which must scan all his [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>Two-Hop Incremental Path Computation</p>
<p>The above graph algorithm has been integrated into GeaFlow’s <code>IncKHop</code> operator, and users can directly call it using DSL:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-performance-test">GeaFlow Performance Test<a href="https://apache.github.io/blog/31#geaflow-performance-test" class="hash-link" aria-label="Direct link to GeaFlow Performance Test" title="Direct link to GeaFlow Performance Test"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-performance-test">Apache GeaFlow (Incubating) Performance Test<a href="https://apache.github.io/blog/31#apache-geaflow-incubating-performance-test" class="hash-link" aria-label="Direct link to Apache GeaFlow (Incubating) Performance Test" title="Direct link to Apache GeaFlow (Incubating) Performance Test"></a></h2>
<p>To evaluate GeaFlow’s performance in stream graph computing, we designed a comparative experiment using the k-Hop algorithm. We used the public dataset <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a> as input and measured the time required to complete the computation across one-hop to four-hop scenarios. The experiment ran on 16 servers, each with 8 cores and 16GB memory.</p>
<p>As shown in the results below, the x-axis represents one-hop to four-hop relationships, and the y-axis shows the processing time on a logarithmic scale. In one- and two-hop cases, Flink outperforms GeaFlow due to the small amount of data involved in joins. However, as complexity increases, Flink’s join-based approach becomes inefficient, especially in four-hop cases, where it can’t finish within a day. GeaFlow, by contrast, scales efficiently due to its incremental graph algorithm, wh [...]
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/8237/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221.png" alt="" class="img_ev3q"></p>
<p>k-Hop Computation Performance Comparison</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-future-work">Conclusion and Future Work<a href="https://apache.github.io/blog/31#conclusion-and-future-work" class="hash-link" aria-label="Direct link to Conclusion and Future Work" title="Direct link to Conclusion and Future Work"></a></h2>
-<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. GeaFlow addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
-<p>GeaFlow is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
+<p>Traditional stream engines like Flink use join operators for relationship computation, which requires scanning all historical data, resulting in poor performance in large-scale associative scenarios. Apache GeaFlow (Incubating) addresses this by introducing graph computing into stream processing through a stream graph framework, significantly boosting performance with incremental graph algorithms.</p>
+<p>Apache GeaFlow (Incubating) is now open-source. We aim to build a unified lakehouse engine for graph data to support diverse associative analytics. We are also preparing to join the Apache Software Foundation to enrich the open-source big data ecosystem. If you're interested in graph technology, we welcome you to join the community.</p>
<p>There are many exciting tasks to explore. You can start with these beginner-friendly issues:</p>
<ul>
-<li>Support incremental k-Core algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>Support incremental k-Core algorithm (<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>Support incremental Minimum Spanning Tree algorithm (<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="https://apache.github.io/blog/31#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project: <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project: <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google Dataset: <a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues: <a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>Incremental k-Hop Source Code: <a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+<li>Apache GeaFlow (Incubating) Issues: <a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>Incremental k-Hop Source Code: <a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
</ol>]]></content:encoded>
</item>
<item>
@@ -457,13 +440,12 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<guid>https://apache.github.io/blog/27</guid>
<pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[Author: Zhang Qi]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png" width="1024" height="576" class="img_ev3q"></p>
-<blockquote>
+ <content:encoded><![CDATA[<blockquote>
<p>Author: Zhang Qi</p>
</blockquote>
<p>It's well known that when we need to perform correlation analysis on data, we typically use SQL join operations. However, Cartesian product calculations during SQL joins require maintaining a large number of intermediate results, which significantly impacts overall data analysis performance. In contrast, graph-based approaches maintain data correlations, transforming correlation analysis into graph traversal operations and greatly reducing the cost of data analysis.</p>
<p>However, with the continuous growth in data scale and increasing demand for real-time processing, efficiently solving real-time computation problems on large-scale graph data has become increasingly urgent. Traditional computing engines such as Spark and Flink are gradually falling short of meeting the growing business demands for graph data processing. Therefore, designing a real-time processing engine tailored for large-scale graph data will bring significant advancements to big dat [...]
-<p>Stream graph computing engine <a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry ad [...]
+<p>Stream graph computing engine <a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>, which combines the technical advantages of graph processing and stream processing. It implements incremental computation capabilities on dynamic graphs, enhancing real-time performance in high-performance correlation analysis. In the following sections, we will introduce the characteristics of graph computing technology, how the industry [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-graph-computing">1. Graph Computing<a href="https://apache.github.io/blog/27#1-graph-computing" class="hash-link" aria-label="Direct link to 1. Graph Computing" title="Direct link to 1. Graph Computing"></a></h2>
<p><font style="color:rgb(51, 51, 51)">A graph is a mathematical structure composed of nodes and edges. Nodes represent various entities such as people, locations, objects, or concepts, while edges represent the relationships between these nodes. For example:</font></p>
<ul>
@@ -492,13 +474,13 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p>However, this approach has a significant drawback: it involves redundant computation. For example, if we need to compute once per hour, using Spark would require not only computing the current window’s data but also backtracking all historical data, leading to a large amount of redundant computation. Therefore, we need a graph computing solution that supports incremental computation.</p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-geaflow">4. Incremental Dynamic Graph Computing: GeaFlow<a href="https://apache.github.io/blog/27#4-incremental-dynamic-graph-computing-geaflow" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow" title="Direct link to 4. Incremental Dynamic Graph Computing: GeaFlow"></a></h2>
-<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system GeaFlow (also known as [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-incremental-dynamic-graph-computing-apache-geaflow-incubating">4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)<a href="https://apache.github.io/blog/27#4-incremental-dynamic-graph-computing-apache-geaflow-incubating" class="hash-link" aria-label="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating)" title="Direct link to 4. Incremental Dynamic Graph Computing: Apache GeaFlow (Incubating [...]
+<p>We know that in traditional stream computing engines like Flink, the processing model allows the system to handle continuously incoming data events. When processing each event, Flink can evaluate changes and execute computations only on the changed parts. This means that in incremental computing, Flink focuses on the latest incoming data rather than the entire dataset. Inspired by Flink’s incremental computing, we developed the incremental graph computing system Apache GeaFlow (Incuba [...]
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>How does GeaFlow implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
+<p>How does Apache GeaFlow (Incubating) implement incremental graph computing? First, real-time data is input into GeaFlow through connectors. GeaFlow generates internal node-edge structure data based on the real-time data and inserts this data into the underlying graph. Nodes involved in the real-time data within the current window are activated, triggering graph iterative computation.</p>
<p>Using the WCC algorithm as an example, for the connected components algorithm, in a time window, each edge’s src id and tar id vertices are activated. In the first iteration, their id information is sent to neighboring nodes. If a neighboring node receives the message and finds that it needs to update its information, it continues to notify its neighbors; otherwise, its iteration terminates.</p>
<p><img decoding="async" loading="lazy" src="https://intranetproxy.alipay.com/skylark/lark/0/2025/png/314644/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0.png" alt="" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-architecture-overview">5. GeaFlow Architecture Overview<a href="https://apache.github.io/blog/27#5-geaflow-architecture-overview" class="hash-link" aria-label="Direct link to 5. GeaFlow Architecture Overview" title="Direct link to 5. GeaFlow Architecture Overview"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-architecture-overview">5. Apache GeaFlow (Incubating) Architecture Overview<a href="https://apache.github.io/blog/27#5-apache-geaflow-incubating-architecture-overview" class="hash-link" aria-label="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview" title="Direct link to 5. Apache GeaFlow (Incubating) Architecture Overview"></a></h2>
<p>The GeaFlow engine consists of three main parts: DSL, Framework, and State. It also provides users with Stream API, Static Graph API, and Dynamic Graph API. The DSL layer is responsible for parsing and optimizing graph query languages like SQL+ISO/GQL, as well as schema inference. It also supports various Connectors such as Hive, Hudi, Kafka, and ODPS. The Framework layer handles runtime scheduling, fault tolerance, shuffle, and coordination of components. The State layer is responsib [...]
<p><img decoding="async" loading="lazy" src="https://apache.github.io/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-performance-testing">6. GeaFlow Performance Testing<a href="https://apache.github.io/blog/27#6-geaflow-performance-testing" class="hash-link" aria-label="Direct link to 6. GeaFlow Performance Testing" title="Direct link to 6. GeaFlow Performance Testing"></a></h2>
@@ -519,9 +501,9 @@ Uses indexing and caching (e.g., sliding-window indexes) to accelerate time-rang
<p>The GeaFlow project is fully open-sourced. We have built some of the foundational capabilities of the stream graph engine. In the future, we hope to build a unified lakehouse processing engine for graph data based on GeaFlow to meet diverse big data correlation analysis needs. We are also actively preparing to join the Apache Foundation to enrich the open-source big data ecosystem. Therefore, we warmly welcome those interested in graph technology to join our community.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References<a href="https://apache.github.io/blog/27#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References"></a></h2>
<ol>
-<li>GeaFlow Project:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) Project:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal Dataset:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
</ol>]]></content:encoded>
</item>
</channel>
diff --git a/community/community/index.html b/community/community/index.html
index d015375..386ae03 100644
--- a/community/community/index.html
+++ b/community/community/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/how_to_contribute/index.html b/community/how_to_contribute/index.html
index bb1b958..cb3b847 100644
--- a/community/how_to_contribute/index.html
+++ b/community/how_to_contribute/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/how_to_release/index.html b/community/how_to_release/index.html
index a140c20..2eb67a9 100644
--- a/community/how_to_release/index.html
+++ b/community/how_to_release/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/security/index.html b/community/security/index.html
index 796eaa6..848e7e1 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/zh/community/index.html b/community/zh/community/index.html
index 161b69c..5effd97 100644
--- a/community/zh/community/index.html
+++ b/community/zh/community/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/zh/how_to_contribute/index.html b/community/zh/how_to_contribute/index.html
index f5a75f0..27e9bde 100644
--- a/community/zh/how_to_contribute/index.html
+++ b/community/zh/how_to_contribute/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/zh/how_to_release/index.html b/community/zh/how_to_release/index.html
index a9f66f1..deb41c7 100644
--- a/community/zh/how_to_release/index.html
+++ b/community/zh/how_to_release/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/community/zh/security/index.html b/community/zh/security/index.html
index 5cb5864..c047b57 100644
--- a/community/zh/security/index.html
+++ b/community/zh/security/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/graph/compute/index.html b/docs/application-development/api/graph/compute/index.html
index 28bce99..ec0cad3 100644
--- a/docs/application-development/api/graph/compute/index.html
+++ b/docs/application-development/api/graph/compute/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/graph/traversal/index.html b/docs/application-development/api/graph/traversal/index.html
index e06c931..0973512 100644
--- a/docs/application-development/api/graph/traversal/index.html
+++ b/docs/application-development/api/graph/traversal/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/overview/index.html b/docs/application-development/api/overview/index.html
index 0c5b06e..5ffa92d 100644
--- a/docs/application-development/api/overview/index.html
+++ b/docs/application-development/api/overview/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/stream/process/index.html b/docs/application-development/api/stream/process/index.html
index b1edc1e..fde0513 100644
--- a/docs/application-development/api/stream/process/index.html
+++ b/docs/application-development/api/stream/process/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/stream/sink/index.html b/docs/application-development/api/stream/sink/index.html
index aecb04b..f0e2878 100644
--- a/docs/application-development/api/stream/sink/index.html
+++ b/docs/application-development/api/stream/sink/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/api/stream/source/index.html b/docs/application-development/api/stream/source/index.html
index aec853a..90d1c73 100644
--- a/docs/application-development/api/stream/source/index.html
+++ b/docs/application-development/api/stream/source/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/chat_guide/index.html b/docs/application-development/chat_guide/index.html
index 706901f..166f4b8 100644
--- a/docs/application-development/chat_guide/index.html
+++ b/docs/application-development/chat_guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/common/index.html b/docs/application-development/connector/common/index.html
index b0f62c2..f8ad355 100644
--- a/docs/application-development/connector/common/index.html
+++ b/docs/application-development/connector/common/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/console/index.html b/docs/application-development/connector/console/index.html
index ed9106c..cc652ca 100644
--- a/docs/application-development/connector/console/index.html
+++ b/docs/application-development/connector/console/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/file/index.html b/docs/application-development/connector/file/index.html
index d98266f..dd0b8c1 100644
--- a/docs/application-development/connector/file/index.html
+++ b/docs/application-development/connector/file/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/hbase/index.html b/docs/application-development/connector/hbase/index.html
index 1e93f9e..f0080ef 100644
--- a/docs/application-development/connector/hbase/index.html
+++ b/docs/application-development/connector/hbase/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/hive/index.html b/docs/application-development/connector/hive/index.html
index 1673101..35cdad7 100644
--- a/docs/application-development/connector/hive/index.html
+++ b/docs/application-development/connector/hive/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/hudi/index.html b/docs/application-development/connector/hudi/index.html
index d94470f..619d573 100644
--- a/docs/application-development/connector/hudi/index.html
+++ b/docs/application-development/connector/hudi/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/jdbc/index.html b/docs/application-development/connector/jdbc/index.html
index d4c53c9..c1be5e0 100644
--- a/docs/application-development/connector/jdbc/index.html
+++ b/docs/application-development/connector/jdbc/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/kafka/index.html b/docs/application-development/connector/kafka/index.html
index 99020f7..3266545 100644
--- a/docs/application-development/connector/kafka/index.html
+++ b/docs/application-development/connector/kafka/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/pulsar/index.html b/docs/application-development/connector/pulsar/index.html
index 71c8a13..ca84e93 100644
--- a/docs/application-development/connector/pulsar/index.html
+++ b/docs/application-development/connector/pulsar/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/connector/udc/index.html b/docs/application-development/connector/udc/index.html
index 61b07e9..8140cce 100644
--- a/docs/application-development/connector/udc/index.html
+++ b/docs/application-development/connector/udc/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/aggregate/index.html b/docs/application-development/dsl/build-in/aggregate/index.html
index 143e825..54cee3b 100644
--- a/docs/application-development/dsl/build-in/aggregate/index.html
+++ b/docs/application-development/dsl/build-in/aggregate/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/condition/index.html b/docs/application-development/dsl/build-in/condition/index.html
index 0f9b38b..1e4562b 100644
--- a/docs/application-development/dsl/build-in/condition/index.html
+++ b/docs/application-development/dsl/build-in/condition/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/date/index.html b/docs/application-development/dsl/build-in/date/index.html
index 4559b2e..c1de185 100644
--- a/docs/application-development/dsl/build-in/date/index.html
+++ b/docs/application-development/dsl/build-in/date/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/logical/index.html b/docs/application-development/dsl/build-in/logical/index.html
index e03bcaf..60629f5 100644
--- a/docs/application-development/dsl/build-in/logical/index.html
+++ b/docs/application-development/dsl/build-in/logical/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/math/index.html b/docs/application-development/dsl/build-in/math/index.html
index 44d7d7f..fe09555 100644
--- a/docs/application-development/dsl/build-in/math/index.html
+++ b/docs/application-development/dsl/build-in/math/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/string/index.html b/docs/application-development/dsl/build-in/string/index.html
index dce04c1..4c499f0 100644
--- a/docs/application-development/dsl/build-in/string/index.html
+++ b/docs/application-development/dsl/build-in/string/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/build-in/table/index.html b/docs/application-development/dsl/build-in/table/index.html
index 660d8e9..a60c79e 100644
--- a/docs/application-development/dsl/build-in/table/index.html
+++ b/docs/application-development/dsl/build-in/table/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/overview/index.html b/docs/application-development/dsl/overview/index.html
index bf059ff..4729399 100644
--- a/docs/application-development/dsl/overview/index.html
+++ b/docs/application-development/dsl/overview/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dcl/index.html b/docs/application-development/dsl/syntax/dcl/index.html
index 80200f4..9a3efee 100644
--- a/docs/application-development/dsl/syntax/dcl/index.html
+++ b/docs/application-development/dsl/syntax/dcl/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/ddl/index.html b/docs/application-development/dsl/syntax/ddl/index.html
index b7d1a73..5e05732 100644
--- a/docs/application-development/dsl/syntax/ddl/index.html
+++ b/docs/application-development/dsl/syntax/ddl/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dml/index.html b/docs/application-development/dsl/syntax/dml/index.html
index 47a630d..7adafc6 100644
--- a/docs/application-development/dsl/syntax/dml/index.html
+++ b/docs/application-development/dsl/syntax/dml/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dql/match/index.html b/docs/application-development/dsl/syntax/dql/match/index.html
index 6530f7a..e8856ea 100644
--- a/docs/application-development/dsl/syntax/dql/match/index.html
+++ b/docs/application-development/dsl/syntax/dql/match/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dql/select/index.html b/docs/application-development/dsl/syntax/dql/select/index.html
index 3f738d2..482d92d 100644
--- a/docs/application-development/dsl/syntax/dql/select/index.html
+++ b/docs/application-development/dsl/syntax/dql/select/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dql/union/index.html b/docs/application-development/dsl/syntax/dql/union/index.html
index 24e860f..3841c73 100644
--- a/docs/application-development/dsl/syntax/dql/union/index.html
+++ b/docs/application-development/dsl/syntax/dql/union/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/syntax/dql/with/index.html b/docs/application-development/dsl/syntax/dql/with/index.html
index 6790a17..7e3bc72 100644
--- a/docs/application-development/dsl/syntax/dql/with/index.html
+++ b/docs/application-development/dsl/syntax/dql/with/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/udf/udaf/index.html b/docs/application-development/dsl/udf/udaf/index.html
index 5bf784c..957a554 100644
--- a/docs/application-development/dsl/udf/udaf/index.html
+++ b/docs/application-development/dsl/udf/udaf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/udf/udf/index.html b/docs/application-development/dsl/udf/udf/index.html
index 591099b..7869a52 100644
--- a/docs/application-development/dsl/udf/udf/index.html
+++ b/docs/application-development/dsl/udf/udf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/udf/udga/index.html b/docs/application-development/dsl/udf/udga/index.html
index 7846c01..21eda63 100644
--- a/docs/application-development/dsl/udf/udga/index.html
+++ b/docs/application-development/dsl/udf/udga/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/application-development/dsl/udf/udtf/index.html b/docs/application-development/dsl/udf/udtf/index.html
index 3cc9761..5b820be 100644
--- a/docs/application-development/dsl/udf/udtf/index.html
+++ b/docs/application-development/dsl/udf/udtf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/console_principle/index.html b/docs/concepts/console_principle/index.html
index 5eef5c3..6839ac9 100644
--- a/docs/concepts/console_principle/index.html
+++ b/docs/concepts/console_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/dsl_principle/index.html b/docs/concepts/dsl_principle/index.html
index 911da73..7ce9eaa 100644
--- a/docs/concepts/dsl_principle/index.html
+++ b/docs/concepts/dsl_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/framework_principle/index.html b/docs/concepts/framework_principle/index.html
index 0dd5de1..299a684 100644
--- a/docs/concepts/framework_principle/index.html
+++ b/docs/concepts/framework_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/glossary/index.html b/docs/concepts/glossary/index.html
index 628df0a..30bec5b 100644
--- a/docs/concepts/glossary/index.html
+++ b/docs/concepts/glossary/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/graph_view/index.html b/docs/concepts/graph_view/index.html
index e24e3f4..d152d64 100644
--- a/docs/concepts/graph_view/index.html
+++ b/docs/concepts/graph_view/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/state_principle/index.html b/docs/concepts/state_principle/index.html
index 2157a32..5317d9e 100644
--- a/docs/concepts/state_principle/index.html
+++ b/docs/concepts/state_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/concepts/stream_graph/index.html b/docs/concepts/stream_graph/index.html
index a8c9c3e..e61caab 100644
--- a/docs/concepts/stream_graph/index.html
+++ b/docs/concepts/stream_graph/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/contacts/index.html b/docs/contacts/index.html
index e6350e7..274b11a 100644
--- a/docs/contacts/index.html
+++ b/docs/contacts/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/contribution/index.html b/docs/contribution/index.html
index 491f612..6c83b7b 100644
--- a/docs/contribution/index.html
+++ b/docs/contribution/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/collaborate_with_g6vp/index.html b/docs/deploy/collaborate_with_g6vp/index.html
index edab432..2b4f931 100644
--- a/docs/deploy/collaborate_with_g6vp/index.html
+++ b/docs/deploy/collaborate_with_g6vp/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/dashboard/index.html b/docs/deploy/dashboard/index.html
index 617f9e0..5bf5ae3 100644
--- a/docs/deploy/dashboard/index.html
+++ b/docs/deploy/dashboard/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/install_guide/index.html b/docs/deploy/install_guide/index.html
index 633c733..803a368 100644
--- a/docs/deploy/install_guide/index.html
+++ b/docs/deploy/install_guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/install_llm/index.html b/docs/deploy/install_llm/index.html
index f307cd1..7509e35 100644
--- a/docs/deploy/install_llm/index.html
+++ b/docs/deploy/install_llm/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/install_minikube/index.html b/docs/deploy/install_minikube/index.html
index 34d8ab5..6f26f6c 100644
--- a/docs/deploy/install_minikube/index.html
+++ b/docs/deploy/install_minikube/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/deploy/quick_start_operator/index.html b/docs/deploy/quick_start_operator/index.html
index 2bc89ed..a4ae5dc 100644
--- a/docs/deploy/quick_start_operator/index.html
+++ b/docs/deploy/quick_start_operator/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/guide/index.html b/docs/guide/index.html
index dbe3f29..60c6b16 100644
--- a/docs/guide/index.html
+++ b/docs/guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/introduction/index.html b/docs/introduction/index.html
index 6883812..385ce2e 100644
--- a/docs/introduction/index.html
+++ b/docs/introduction/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/quick_start/quick_start/index.html b/docs/quick_start/quick_start/index.html
index 1dfc6f7..bfb3aa7 100644
--- a/docs/quick_start/quick_start/index.html
+++ b/docs/quick_start/quick_start/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/quick_start/quick_start_docker/index.html b/docs/quick_start/quick_start_docker/index.html
index c2e4cd1..83cef8e 100644
--- a/docs/quick_start/quick_start_docker/index.html
+++ b/docs/quick_start/quick_start_docker/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/quick_start/quick_start_infer&UDF/index.html b/docs/quick_start/quick_start_infer&UDF/index.html
index 8c3940b..3ec79aa 100644
--- a/docs/quick_start/quick_start_infer&UDF/index.html
+++ b/docs/quick_start/quick_start_infer&UDF/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/quick_start/quick_start_sql_to_graph/index.html b/docs/quick_start/quick_start_sql_to_graph/index.html
index ca43d4d..c2c6877 100644
--- a/docs/quick_start/quick_start_sql_to_graph/index.html
+++ b/docs/quick_start/quick_start_sql_to_graph/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/reference/vs_join/index.html b/docs/reference/vs_join/index.html
index 249db75..5f6f94e 100644
--- a/docs/reference/vs_join/index.html
+++ b/docs/reference/vs_join/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/thanks/index.html b/docs/thanks/index.html
index fd1eb65..a4ff46e 100644
--- a/docs/thanks/index.html
+++ b/docs/thanks/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/graph/compute/index.html b/docs/zh/application-development/api/graph/compute/index.html
index 2c56dd3..31a1c70 100644
--- a/docs/zh/application-development/api/graph/compute/index.html
+++ b/docs/zh/application-development/api/graph/compute/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/graph/traversal/index.html b/docs/zh/application-development/api/graph/traversal/index.html
index 492f97e..758960e 100644
--- a/docs/zh/application-development/api/graph/traversal/index.html
+++ b/docs/zh/application-development/api/graph/traversal/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/overview/index.html b/docs/zh/application-development/api/overview/index.html
index e23fcad..ebe8027 100644
--- a/docs/zh/application-development/api/overview/index.html
+++ b/docs/zh/application-development/api/overview/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/stream/process/index.html b/docs/zh/application-development/api/stream/process/index.html
index c808e5c..69d3358 100644
--- a/docs/zh/application-development/api/stream/process/index.html
+++ b/docs/zh/application-development/api/stream/process/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/stream/sink/index.html b/docs/zh/application-development/api/stream/sink/index.html
index 9394f62..8510f9b 100644
--- a/docs/zh/application-development/api/stream/sink/index.html
+++ b/docs/zh/application-development/api/stream/sink/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/api/stream/source/index.html b/docs/zh/application-development/api/stream/source/index.html
index dc91d6e..12f23d1 100644
--- a/docs/zh/application-development/api/stream/source/index.html
+++ b/docs/zh/application-development/api/stream/source/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/chat_guide/index.html b/docs/zh/application-development/chat_guide/index.html
index 148886b..74478bf 100644
--- a/docs/zh/application-development/chat_guide/index.html
+++ b/docs/zh/application-development/chat_guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/common/index.html b/docs/zh/application-development/connector/common/index.html
index cc50036..e1f2a98 100644
--- a/docs/zh/application-development/connector/common/index.html
+++ b/docs/zh/application-development/connector/common/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/console/index.html b/docs/zh/application-development/connector/console/index.html
index bd330de..9e8985a 100644
--- a/docs/zh/application-development/connector/console/index.html
+++ b/docs/zh/application-development/connector/console/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/file/index.html b/docs/zh/application-development/connector/file/index.html
index 4463aab..20bb533 100644
--- a/docs/zh/application-development/connector/file/index.html
+++ b/docs/zh/application-development/connector/file/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/hbase/index.html b/docs/zh/application-development/connector/hbase/index.html
index 762ed43..1d1941a 100644
--- a/docs/zh/application-development/connector/hbase/index.html
+++ b/docs/zh/application-development/connector/hbase/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/hive/index.html b/docs/zh/application-development/connector/hive/index.html
index adab94c..ffcd996 100644
--- a/docs/zh/application-development/connector/hive/index.html
+++ b/docs/zh/application-development/connector/hive/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/hudi/index.html b/docs/zh/application-development/connector/hudi/index.html
index df9652e..6dbd63d 100644
--- a/docs/zh/application-development/connector/hudi/index.html
+++ b/docs/zh/application-development/connector/hudi/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/jdbc/index.html b/docs/zh/application-development/connector/jdbc/index.html
index 2da18d0..d7cd805 100644
--- a/docs/zh/application-development/connector/jdbc/index.html
+++ b/docs/zh/application-development/connector/jdbc/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/kafka/index.html b/docs/zh/application-development/connector/kafka/index.html
index bd40b04..d963294 100644
--- a/docs/zh/application-development/connector/kafka/index.html
+++ b/docs/zh/application-development/connector/kafka/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/pulsar/index.html b/docs/zh/application-development/connector/pulsar/index.html
index fabc89d..f81c054 100644
--- a/docs/zh/application-development/connector/pulsar/index.html
+++ b/docs/zh/application-development/connector/pulsar/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/connector/udc/index.html b/docs/zh/application-development/connector/udc/index.html
index c906fac..41dcd7c 100644
--- a/docs/zh/application-development/connector/udc/index.html
+++ b/docs/zh/application-development/connector/udc/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/aggregate/index.html b/docs/zh/application-development/dsl/build-in/aggregate/index.html
index 22b74d2..b132528 100644
--- a/docs/zh/application-development/dsl/build-in/aggregate/index.html
+++ b/docs/zh/application-development/dsl/build-in/aggregate/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/condition/index.html b/docs/zh/application-development/dsl/build-in/condition/index.html
index 5f28e07..58ffffe 100644
--- a/docs/zh/application-development/dsl/build-in/condition/index.html
+++ b/docs/zh/application-development/dsl/build-in/condition/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/date/index.html b/docs/zh/application-development/dsl/build-in/date/index.html
index 8b42800..36baa41 100644
--- a/docs/zh/application-development/dsl/build-in/date/index.html
+++ b/docs/zh/application-development/dsl/build-in/date/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/logical/index.html b/docs/zh/application-development/dsl/build-in/logical/index.html
index 1b65fb7..15c04b6 100644
--- a/docs/zh/application-development/dsl/build-in/logical/index.html
+++ b/docs/zh/application-development/dsl/build-in/logical/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/math/index.html b/docs/zh/application-development/dsl/build-in/math/index.html
index 869d218..593c8ff 100644
--- a/docs/zh/application-development/dsl/build-in/math/index.html
+++ b/docs/zh/application-development/dsl/build-in/math/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/string/index.html b/docs/zh/application-development/dsl/build-in/string/index.html
index fb69f0b..e2da8c2 100644
--- a/docs/zh/application-development/dsl/build-in/string/index.html
+++ b/docs/zh/application-development/dsl/build-in/string/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/build-in/table/index.html b/docs/zh/application-development/dsl/build-in/table/index.html
index d3f8d3d..e85e773 100644
--- a/docs/zh/application-development/dsl/build-in/table/index.html
+++ b/docs/zh/application-development/dsl/build-in/table/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/overview/index.html b/docs/zh/application-development/dsl/overview/index.html
index 14934a3..fe4cffe 100644
--- a/docs/zh/application-development/dsl/overview/index.html
+++ b/docs/zh/application-development/dsl/overview/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dcl/index.html b/docs/zh/application-development/dsl/syntax/dcl/index.html
index 07a3abf..e7e9e34 100644
--- a/docs/zh/application-development/dsl/syntax/dcl/index.html
+++ b/docs/zh/application-development/dsl/syntax/dcl/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/ddl/index.html b/docs/zh/application-development/dsl/syntax/ddl/index.html
index c3f381a..7bbd731 100644
--- a/docs/zh/application-development/dsl/syntax/ddl/index.html
+++ b/docs/zh/application-development/dsl/syntax/ddl/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dml/index.html b/docs/zh/application-development/dsl/syntax/dml/index.html
index e455e0c..9fa9947 100644
--- a/docs/zh/application-development/dsl/syntax/dml/index.html
+++ b/docs/zh/application-development/dsl/syntax/dml/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dql/match/index.html b/docs/zh/application-development/dsl/syntax/dql/match/index.html
index ff47ec1..6fc2097 100644
--- a/docs/zh/application-development/dsl/syntax/dql/match/index.html
+++ b/docs/zh/application-development/dsl/syntax/dql/match/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dql/select/index.html b/docs/zh/application-development/dsl/syntax/dql/select/index.html
index 9a49921..6ca0119 100644
--- a/docs/zh/application-development/dsl/syntax/dql/select/index.html
+++ b/docs/zh/application-development/dsl/syntax/dql/select/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dql/union/index.html b/docs/zh/application-development/dsl/syntax/dql/union/index.html
index 58e19c5..a9e064c 100644
--- a/docs/zh/application-development/dsl/syntax/dql/union/index.html
+++ b/docs/zh/application-development/dsl/syntax/dql/union/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/syntax/dql/with/index.html b/docs/zh/application-development/dsl/syntax/dql/with/index.html
index c5f1040..db926d3 100644
--- a/docs/zh/application-development/dsl/syntax/dql/with/index.html
+++ b/docs/zh/application-development/dsl/syntax/dql/with/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/udf/udaf/index.html b/docs/zh/application-development/dsl/udf/udaf/index.html
index b5d055f..55087db 100644
--- a/docs/zh/application-development/dsl/udf/udaf/index.html
+++ b/docs/zh/application-development/dsl/udf/udaf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/udf/udf/index.html b/docs/zh/application-development/dsl/udf/udf/index.html
index 661dcf2..8b17fdf 100644
--- a/docs/zh/application-development/dsl/udf/udf/index.html
+++ b/docs/zh/application-development/dsl/udf/udf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/udf/udga/index.html b/docs/zh/application-development/dsl/udf/udga/index.html
index 89da74b..68077be 100644
--- a/docs/zh/application-development/dsl/udf/udga/index.html
+++ b/docs/zh/application-development/dsl/udf/udga/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/application-development/dsl/udf/udtf/index.html b/docs/zh/application-development/dsl/udf/udtf/index.html
index 31c09a3..bd1874a 100644
--- a/docs/zh/application-development/dsl/udf/udtf/index.html
+++ b/docs/zh/application-development/dsl/udf/udtf/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/console_principle/index.html b/docs/zh/concepts/console_principle/index.html
index ea69bdf..14bcd6b 100644
--- a/docs/zh/concepts/console_principle/index.html
+++ b/docs/zh/concepts/console_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/dsl_principle/index.html b/docs/zh/concepts/dsl_principle/index.html
index bd82b75..5b0194d 100644
--- a/docs/zh/concepts/dsl_principle/index.html
+++ b/docs/zh/concepts/dsl_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/framework_principle/index.html b/docs/zh/concepts/framework_principle/index.html
index 6465e88..490e5f9 100644
--- a/docs/zh/concepts/framework_principle/index.html
+++ b/docs/zh/concepts/framework_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/glossary/index.html b/docs/zh/concepts/glossary/index.html
index f40e066..ccc8c45 100644
--- a/docs/zh/concepts/glossary/index.html
+++ b/docs/zh/concepts/glossary/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/graph_view/index.html b/docs/zh/concepts/graph_view/index.html
index d63ad31..b521749 100644
--- a/docs/zh/concepts/graph_view/index.html
+++ b/docs/zh/concepts/graph_view/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/state_principle/index.html b/docs/zh/concepts/state_principle/index.html
index 60f43c4..52f5a05 100644
--- a/docs/zh/concepts/state_principle/index.html
+++ b/docs/zh/concepts/state_principle/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/concepts/stream_graph/index.html b/docs/zh/concepts/stream_graph/index.html
index c783b78..b3a6f2d 100644
--- a/docs/zh/concepts/stream_graph/index.html
+++ b/docs/zh/concepts/stream_graph/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/contacts/index.html b/docs/zh/contacts/index.html
index a890a1d..b413a50 100644
--- a/docs/zh/contacts/index.html
+++ b/docs/zh/contacts/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/contribution/index.html b/docs/zh/contribution/index.html
index cb2f258..48e7388 100644
--- a/docs/zh/contribution/index.html
+++ b/docs/zh/contribution/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/collaborate_with_g6vp/index.html b/docs/zh/deploy/collaborate_with_g6vp/index.html
index 7db606d..b8202ed 100644
--- a/docs/zh/deploy/collaborate_with_g6vp/index.html
+++ b/docs/zh/deploy/collaborate_with_g6vp/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/dashboard/index.html b/docs/zh/deploy/dashboard/index.html
index 4ee2f71..68d9023 100644
--- a/docs/zh/deploy/dashboard/index.html
+++ b/docs/zh/deploy/dashboard/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/install_guide/index.html b/docs/zh/deploy/install_guide/index.html
index b8bd5e0..b3e3cb5 100644
--- a/docs/zh/deploy/install_guide/index.html
+++ b/docs/zh/deploy/install_guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/install_llm/index.html b/docs/zh/deploy/install_llm/index.html
index 503abb7..4d6edbc 100644
--- a/docs/zh/deploy/install_llm/index.html
+++ b/docs/zh/deploy/install_llm/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/install_minikube/index.html b/docs/zh/deploy/install_minikube/index.html
index 4fc6674..a8bb7a2 100644
--- a/docs/zh/deploy/install_minikube/index.html
+++ b/docs/zh/deploy/install_minikube/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/deploy/quick_start_operator/index.html b/docs/zh/deploy/quick_start_operator/index.html
index eb19322..f95c956 100644
--- a/docs/zh/deploy/quick_start_operator/index.html
+++ b/docs/zh/deploy/quick_start_operator/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/guide/index.html b/docs/zh/guide/index.html
index acfd79d..30c5189 100644
--- a/docs/zh/guide/index.html
+++ b/docs/zh/guide/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/introduction/index.html b/docs/zh/introduction/index.html
index 222484b..1e2bdd0 100644
--- a/docs/zh/introduction/index.html
+++ b/docs/zh/introduction/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/quick_start/quick_start/index.html b/docs/zh/quick_start/quick_start/index.html
index 2e3b9fd..5048fd2 100644
--- a/docs/zh/quick_start/quick_start/index.html
+++ b/docs/zh/quick_start/quick_start/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/quick_start/quick_start_docker/index.html b/docs/zh/quick_start/quick_start_docker/index.html
index fef3499..c223ae0 100644
--- a/docs/zh/quick_start/quick_start_docker/index.html
+++ b/docs/zh/quick_start/quick_start_docker/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/quick_start/quick_start_infer&UDF/index.html b/docs/zh/quick_start/quick_start_infer&UDF/index.html
index 2ccbbd4..1d36d08 100644
--- a/docs/zh/quick_start/quick_start_infer&UDF/index.html
+++ b/docs/zh/quick_start/quick_start_infer&UDF/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/quick_start/quick_start_sql_to_graph/index.html b/docs/zh/quick_start/quick_start_sql_to_graph/index.html
index 27cace6..52853a4 100644
--- a/docs/zh/quick_start/quick_start_sql_to_graph/index.html
+++ b/docs/zh/quick_start/quick_start_sql_to_graph/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/reference/vs_join/index.html b/docs/zh/reference/vs_join/index.html
index 7d76270..73f2c2e 100644
--- a/docs/zh/reference/vs_join/index.html
+++ b/docs/zh/reference/vs_join/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/docs/zh/thanks/index.html b/docs/zh/thanks/index.html
index 6070382..39835d8 100644
--- a/docs/zh/thanks/index.html
+++ b/docs/zh/thanks/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/download/index.html b/download/index.html
index 16fcec3..c570b21 100644
--- a/download/index.html
+++ b/download/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/index.html b/index.html
index 5a6cc89..7e2c452 100644
--- a/index.html
+++ b/index.html
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 0c2a635..0e294d7 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/search/index.html b/search/index.html
index e7a46e8..c03eb76 100644
--- a/search/index.html
+++ b/search/index.html
@@ -15,8 +15,8 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/assets/css/styles.0d7412ce.css">
-<script src="/assets/js/runtime~main.2473f0ef.js" defer="defer"></script>
-<script src="/assets/js/main.2f6cb1f3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.8d1155bf.js" defer="defer"></script>
+<script src="/assets/js/main.55991ef2.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
diff --git a/zh-CN/404.html b/zh-CN/404.html
index 9510c98..8b1c268 100644
--- a/zh-CN/404.html
+++ b/zh-CN/404.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/Home/components/Architecture/index.html b/zh-CN/Home/components/Architecture/index.html
index a9bceb5..8a5334e 100644
--- a/zh-CN/Home/components/Architecture/index.html
+++ b/zh-CN/Home/components/Architecture/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/Home/components/Banner/index.html b/zh-CN/Home/components/Banner/index.html
index 0f6c295..bf1fab9 100644
--- a/zh-CN/Home/components/Banner/index.html
+++ b/zh-CN/Home/components/Banner/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/Home/components/Introduction/index.html b/zh-CN/Home/components/Introduction/index.html
index ecade83..8224766 100644
--- a/zh-CN/Home/components/Introduction/index.html
+++ b/zh-CN/Home/components/Introduction/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/Home/components/Repo/index.html b/zh-CN/Home/components/Repo/index.html
index e62c569..05df417 100644
--- a/zh-CN/Home/components/Repo/index.html
+++ b/zh-CN/Home/components/Repo/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/Home/index.html b/zh-CN/Home/index.html
index ae0860a..626a00c 100644
--- a/zh-CN/Home/index.html
+++ b/zh-CN/Home/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png b/zh-CN/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png
deleted file mode 100644
index 7c22126..0000000
Binary files a/zh-CN/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png and /dev/null differ
diff --git a/zh-CN/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png b/zh-CN/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png
deleted file mode 100644
index 57a4db8..0000000
Binary files a/zh-CN/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png and /dev/null differ
diff --git a/zh-CN/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png b/zh-CN/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png
deleted file mode 100644
index 9932c9c..0000000
Binary files a/zh-CN/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png and /dev/null differ
diff --git a/zh-CN/assets/js/06a90f65.0cdb7033.js b/zh-CN/assets/js/06a90f65.0cdb7033.js
deleted file mode 100644
index 4a22f20..0000000
--- a/zh-CN/assets/js/06a90f65.0cdb7033.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8626],{1662:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var o=n(4644),l=n(4848),r=n(8453);const s={title:"\u6d41\u5f0f\u56fe\u8ba1\u7b97\u5f15\u64ce GeaFlow v0.6.4 \u53d1\u5e03\uff0c\u652f\u6301\u5173\u7cfb\u578b\u8bbf\u95ee\u56fe\u6570\u636e\uff0c\u589e\u91cf\u5339\u914d\u4f18\u5316\u5b9e\u65f6\u5904\u7406",date:"2025-4-3"},c= [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/06a90f65.497eed49.js b/zh-CN/assets/js/06a90f65.497eed49.js
new file mode 100644
index 0000000..9f3f58a
--- /dev/null
+++ b/zh-CN/assets/js/06a90f65.497eed49.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8626],{1662:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});var o=n(4644),l=n(4848),r=n(8453);const s={title:"\u6d41\u5f0f\u56fe\u8ba1\u7b97\u5f15\u64ce Apache GeaFlow (Incubating) v0.6.4 \u53d1\u5e03\uff0c\u652f\u6301\u5173\u7cfb\u578b\u8bbf\u95ee\u56fe\u6570\u636e\uff0c\u589e\u91cf\u5339\u914d\u4f18\u5316\u5b9e\u65f6\u5904\u7406" [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/185e0e38.276c0fe7.js b/zh-CN/assets/js/185e0e38.276c0fe7.js
new file mode 100644
index 0000000..cfbfefb
--- /dev/null
+++ b/zh-CN/assets/js/185e0e38.276c0fe7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8686],{398:n=>{n.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/29","metadata":{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"Apache GeaFlow (Incubating) \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/185e0e38.bcb4401b.js b/zh-CN/assets/js/185e0e38.bcb4401b.js
deleted file mode 100644
index 8b290e8..0000000
--- a/zh-CN/assets/js/185e0e38.bcb4401b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8686],{398:n=>{n.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/29","metadata":{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"GeaFlow \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91cd\u8981\uff1f","dat [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6e425d28.d5f9ea0a.js b/zh-CN/assets/js/6e425d28.d5f9ea0a.js
deleted file mode 100644
index 25b88e8..0000000
--- a/zh-CN/assets/js/6e425d28.d5f9ea0a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4335],{355:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9-dfc03546ce004eda8a9b5b9f4fa32395.jpeg"},1344:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/1734590557540-5f3f4528-fa07-4208-8425-bc514ea5e06b-7288b389d119f3703c9f311b754d04d4.jpeg"},2209:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,m [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6e425d28.d8d47760.js b/zh-CN/assets/js/6e425d28.d8d47760.js
new file mode 100644
index 0000000..e675448
--- /dev/null
+++ b/zh-CN/assets/js/6e425d28.d8d47760.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4335],{355:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9-dfc03546ce004eda8a9b5b9f4fa32395.jpeg"},1344:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/1734590557540-5f3f4528-fa07-4208-8425-bc514ea5e06b-7288b389d119f3703c9f311b754d04d4.jpeg"},2209:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,m [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/75884e4c.0be93faf.js b/zh-CN/assets/js/75884e4c.0be93faf.js
deleted file mode 100644
index c9e35d6..0000000
--- a/zh-CN/assets/js/75884e4c.0be93faf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1541],{1311:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"GeaFlow \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91cd\u8981\uff1f","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTru [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/75884e4c.cfa29e59.js b/zh-CN/assets/js/75884e4c.cfa29e59.js
new file mode 100644
index 0000000..a99438a
--- /dev/null
+++ b/zh-CN/assets/js/75884e4c.cfa29e59.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1541],{1311:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"Apache GeaFlow (Incubating) \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91cd\u8981\uff1f","date":"2025-06-25T00:00:00.000 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/7dcafcf6.4cb5c11c.js b/zh-CN/assets/js/7dcafcf6.4cb5c11c.js
deleted file mode 100644
index 45d08e7..0000000
--- a/zh-CN/assets/js/7dcafcf6.4cb5c11c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1495],{1311:n=>{n.exports=JSON.parse('{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"GeaFlow \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91cd\u8981\uff1f","date":"2025-06-25T00:00:00.000Z","tags":[],"hasTru [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/7dcafcf6.e15a1455.js b/zh-CN/assets/js/7dcafcf6.e15a1455.js
new file mode 100644
index 0000000..1ff79b4
--- /dev/null
+++ b/zh-CN/assets/js/7dcafcf6.e15a1455.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1495],{1311:n=>{n.exports=JSON.parse('{"permalink":"/zh-CN/blog/29","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/29.md","title":"Apache GeaFlow (Incubating) \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","description":"\u4e3a\u4ec0\u4e48\u65f6\u5e8f\u80fd\u529b\u5982\u6b64\u91cd\u8981\uff1f","date":"2025-06-25T00:00:00.000 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/814f3328.71d956a9.js b/zh-CN/assets/js/814f3328.71d956a9.js
new file mode 100644
index 0000000..a272bd0
--- /dev/null
+++ b/zh-CN/assets/js/814f3328.71d956a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"All posts","items":[{"title":"Apache GeaFlow (Incubating) \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","permalink":"/zh-CN/blog/29","unlisted":false,"date":"2025-06-25T00:00:00.000Z"},{"title":"\u6d41\u56fe\u8ba1\u7b97\u4e4b\u589e\u91cfmatch\u539f\u7406\u4e0e\u5e94\u7528","permalink":"/ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/814f3328.b6350a0c.js b/zh-CN/assets/js/814f3328.b6350a0c.js
deleted file mode 100644
index 21e4087..0000000
--- a/zh-CN/assets/js/814f3328.b6350a0c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"All posts","items":[{"title":"GeaFlow \u65f6\u5e8f\u80fd\u529b\u63a2\u79d8\u2014\u2014\u8ba9\u65f6\u95f4\u6570\u636e\u7115\u53d1\u65b0\u751f\uff01","permalink":"/zh-CN/blog/29","unlisted":false,"date":"2025-06-25T00:00:00.000Z"},{"title":"\u6d41\u56fe\u8ba1\u7b97\u4e4b\u589e\u91cfmatch\u539f\u7406\u4e0e\u5e94\u7528","permalink":"/zh-CN/blog/28","unli [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/86c1d116.ad9a7e1f.js b/zh-CN/assets/js/86c1d116.ad9a7e1f.js
new file mode 100644
index 0000000..a71943a
--- /dev/null
+++ b/zh-CN/assets/js/86c1d116.ad9a7e1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[5193],{273:(e,n,l)=>{l.d(n,{A:()=>r});const r=l.p+"assets/images/1756792583809-8c862fd5-1d7f-4b8b-9b34-e63d1692deb6-feae04b4060e56f6a44da154c2d903de.webp"},2567:(e,n,l)=>{l.d(n,{A:()=>r});const r=l.p+"assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp"},2881:(e,n,l)=>{l.d(n,{A:()=>r});const r=l.p+"assets/images/1756792583755-e264437e-59a4-4483-81 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/86c1d116.ee11d782.js b/zh-CN/assets/js/86c1d116.ee11d782.js
deleted file mode 100644
index 4061579..0000000
--- a/zh-CN/assets/js/86c1d116.ee11d782.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[5193],{273:(e,l,n)=>{n.d(l,{A:()=>r});const r=n.p+"assets/images/1756792583809-8c862fd5-1d7f-4b8b-9b34-e63d1692deb6-feae04b4060e56f6a44da154c2d903de.webp"},2567:(e,l,n)=>{n.d(l,{A:()=>r});const r=n.p+"assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp"},2881:(e,l,n)=>{n.d(l,{A:()=>r});const r=n.p+"assets/images/1756792583755-e264437e-59a4-4483-81 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/943ae4f2.5fd71589.js b/zh-CN/assets/js/943ae4f2.5fd71589.js
deleted file mode 100644
index a84cf92..0000000
--- a/zh-CN/assets/js/943ae4f2.5fd71589.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1831],{304:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/1740386529457-b43e2d49-6000-4acf-862c-314ae4f23dbc-b978a4ee5cb4528562660d57e2a936a3.png"},565:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/1740454568183-6d42716b-fc84-41a8-945c-c97b81d61135-4ef6d310ca58e8c379c470ae3062d305.png"},1024:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>t,meta [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/943ae4f2.89abb66e.js b/zh-CN/assets/js/943ae4f2.89abb66e.js
new file mode 100644
index 0000000..f98bdf5
--- /dev/null
+++ b/zh-CN/assets/js/943ae4f2.89abb66e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1831],{304:(e,n,a)=>{a.d(n,{A:()=>s});const s=a.p+"assets/images/1740386529457-b43e2d49-6000-4acf-862c-314ae4f23dbc-b978a4ee5cb4528562660d57e2a936a3.png"},565:(e,n,a)=>{a.d(n,{A:()=>s});const s=a.p+"assets/images/1740454568183-6d42716b-fc84-41a8-945c-c97b81d61135-4ef6d310ca58e8c379c470ae3062d305.png"},1024:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,meta [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/a26032ac.ee13ea01.js b/zh-CN/assets/js/a26032ac.ee13ea01.js
new file mode 100644
index 0000000..2930167
--- /dev/null
+++ b/zh-CN/assets/js/a26032ac.ee13ea01.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7855],{2943:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/1741854036431-9d80b215-73fc-4838-bdda-905d59ebf08e-c2a67e3606a65f1d5a4801c15ea976aa.png"},4268:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/1741674750798-f519cba9-d8ae-47d4-aec0-97c2ef31a759-88c635ffaf7fa6c9c49116e1a5baaeda.jpeg"},5454:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/30","source":"@site/i18n/zh-CN/docusa [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/a26032ac.f1bde98f.js b/zh-CN/assets/js/a26032ac.f1bde98f.js
deleted file mode 100644
index 790d891..0000000
--- a/zh-CN/assets/js/a26032ac.f1bde98f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7855],{2943:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/1741854036431-9d80b215-73fc-4838-bdda-905d59ebf08e-c2a67e3606a65f1d5a4801c15ea976aa.png"},4268:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/1741674750798-f519cba9-d8ae-47d4-aec0-97c2ef31a759-88c635ffaf7fa6c9c49116e1a5baaeda.jpeg"},5454:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/30","source":"@site/i18n/zh-CN/docusa [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b095ded5.590083aa.js b/zh-CN/assets/js/b095ded5.590083aa.js
new file mode 100644
index 0000000..c105e71
--- /dev/null
+++ b/zh-CN/assets/js/b095ded5.590083aa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1919],{2943:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/1741854036431-9d80b215-73fc-4838-bdda-905d59ebf08e-c2a67e3606a65f1d5a4801c15ea976aa.png"},5454:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/30","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/30.md","title":"Join\u6027\u80fd\u53d8\u9769\uff1a\u56fe\u6570\u4ed3\u8ba9SQL\u5206\u6790\u5feb\u4eba\u4e00\u6b65","descripti [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b095ded5.c108d714.js b/zh-CN/assets/js/b095ded5.c108d714.js
deleted file mode 100644
index 8d9da7b..0000000
--- a/zh-CN/assets/js/b095ded5.c108d714.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[1919],{2943:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/1741854036431-9d80b215-73fc-4838-bdda-905d59ebf08e-c2a67e3606a65f1d5a4801c15ea976aa.png"},5454:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/30","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/30.md","title":"Join\u6027\u80fd\u53d8\u9769\uff1a\u56fe\u6570\u4ed3\u8ba9SQL\u5206\u6790\u5feb\u4eba\u4e00\u6b65","descripti [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b8c69b13.218175c1.js b/zh-CN/assets/js/b8c69b13.218175c1.js
new file mode 100644
index 0000000..c732eef
--- /dev/null
+++ b/zh-CN/assets/js/b8c69b13.218175c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8775],{466:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/31","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/31.md","title":"Graph4Stream\uff1a\u57fa\u4e8e\u56fe\u7684\u6d41\u8ba1\u7b97\u52a0\u901f","description":"\u4f5c\u8005\uff1a\u5764\u7fbd\uff1b\u5ba1\u6821\uff1a\u4e1c\u6714\u3002","date":"2025-03-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter": [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b8c69b13.b9008a44.js b/zh-CN/assets/js/b8c69b13.b9008a44.js
deleted file mode 100644
index ff64cf9..0000000
--- a/zh-CN/assets/js/b8c69b13.b9008a44.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8775],{466:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/31","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/31.md","title":"Graph4Stream\uff1a\u57fa\u4e8e\u56fe\u7684\u6d41\u8ba1\u7b97\u52a0\u901f","description":"\u4f5c\u8005\uff1a\u5764\u7fbd\uff1b\u5ba1\u6821\uff1a\u4e1c\u6714\u3002","date":"2025-03-25T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter": [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b9089f90.6a7042b3.js b/zh-CN/assets/js/b9089f90.6a7042b3.js
deleted file mode 100644
index fc9149d..0000000
--- a/zh-CN/assets/js/b9089f90.6a7042b3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8582],{5331:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var o=n(7122),s=n(4848),r=n(8453);const a={title:"\u6d41\u56fe\u8ba1\u7b97\u4e4b\u589e\u91cfmatch\u539f\u7406\u4e0e\u5e94\u7528",date:"2025-6-3"},i=void 0,c={authorsImageUrls:[]},l=[{value:"\u95ee\u9898\u80cc\u666f",id:"\u95ee\u9898\u80cc\u666f",level:2}];function u(e){con [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/b9089f90.9ad54c8f.js b/zh-CN/assets/js/b9089f90.9ad54c8f.js
new file mode 100644
index 0000000..239ef34
--- /dev/null
+++ b/zh-CN/assets/js/b9089f90.9ad54c8f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[8582],{5331:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var o=n(7122),r=n(4848),s=n(8453);const a={title:"\u6d41\u56fe\u8ba1\u7b97\u4e4b\u589e\u91cfmatch\u539f\u7406\u4e0e\u5e94\u7528",date:"2025-6-3"},c=void 0,i={authorsImageUrls:[]},l=[{value:"\u95ee\u9898\u80cc\u666f",id:"\u95ee\u9898\u80cc\u666f",level:2}];function u(e){con [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/eb28f0ec.82445210.js b/zh-CN/assets/js/eb28f0ec.82445210.js
new file mode 100644
index 0000000..a33a6ea
--- /dev/null
+++ b/zh-CN/assets/js/eb28f0ec.82445210.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4750],{3419:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/27","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/27.md","title":"Stream4Graph\uff1a\u52a8\u6001\u56fe\u4e0a\u7684\u589e\u91cf\u8ba1\u7b97","description":"\u4f5c\u8005\uff1a\u5f20\u5947","date":"2025-03-11T00:00:00.000Z","tags":[],"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Stream4Graph\uff1a\u52a8\u6001\ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/eb28f0ec.8f6b78ef.js b/zh-CN/assets/js/eb28f0ec.8f6b78ef.js
deleted file mode 100644
index 934599f..0000000
--- a/zh-CN/assets/js/eb28f0ec.8f6b78ef.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[4750],{3152:(e,t,n)=>{n.d(t,{A:()=>r});const r=n.p+"assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png"},3419:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/27","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/27.md","title":"Stream4Graph\uff1a\u52a8\u6001\u56fe\u4e0a\u7684\u589e\u91cf\u8ba1\u7b97","description":"\u4f5c\u8005\uff1a\u [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/fcae414e.1a484401.js b/zh-CN/assets/js/fcae414e.1a484401.js
new file mode 100644
index 0000000..f8e90d5
--- /dev/null
+++ b/zh-CN/assets/js/fcae414e.1a484401.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7460],{23:(e,n,l)=>{l.d(n,{A:()=>s});const s=l.p+"assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png"},466:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/31","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/31.md","title":"Graph4Stream\uff1a\u57fa\u4e8e\u56fe\u7684\u6d41\u8ba1\u7b97\u52a0\u901f","description":"\u4f5c\u8005\uff1a\u576 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/fcae414e.7fa28240.js b/zh-CN/assets/js/fcae414e.7fa28240.js
deleted file mode 100644
index 823a2b0..0000000
--- a/zh-CN/assets/js/fcae414e.7fa28240.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkgeaflow_website=self.webpackChunkgeaflow_website||[]).push([[7460],{23:(e,n,l)=>{l.d(n,{A:()=>s});const s=l.p+"assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png"},466:e=>{e.exports=JSON.parse('{"permalink":"/zh-CN/blog/31","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/31.md","title":"Graph4Stream\uff1a\u57fa\u4e8e\u56fe\u7684\u6d41\u8ba1\u7b97\u52a0\u901f","description":"\u4f5c\u8005\uff1a\u576 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/runtime~main.edc1846e.js b/zh-CN/assets/js/runtime~main.2efe8f41.js
similarity index 94%
rename from zh-CN/assets/js/runtime~main.edc1846e.js
rename to zh-CN/assets/js/runtime~main.2efe8f41.js
index b4c05de..4b3fe5c 100644
--- a/zh-CN/assets/js/runtime~main.edc1846e.js
+++ b/zh-CN/assets/js/runtime~main.2efe8f41.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=t,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b||0 [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=t,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b||0 [...]
\ No newline at end of file
diff --git a/zh-CN/blog/27/index.html b/zh-CN/blog/27/index.html
index 730b7d6..f2a3d53 100644
--- a/zh-CN/blog/27/index.html
+++ b/zh-CN/blog/27/index.html
@@ -15,20 +15,19 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<blockquote>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>作者:张奇</p>
</blockquote>
<p>众所周知,当我们需要对数据做关联性分析的时候,一般会采用表连接(SQL join)的方式完成。但是 SQL join 时的笛卡尔积计算需要维护大量的中间结果,从而对整体的数据分析性能带来巨大影响。相比而言,基于图的方式维护数据的关联性,原本的关联性分析可以转换为图上的遍历操作,从而大幅降低数据分析的成本。</p>
<p>然而,随着数据规模的不断增长,以及对数据处理更强的实时性需求,如何高效地解决大规模图数据上的实时计算问题,就变得越来越紧迫。传统的计算引擎,如 Spark、Flink 对于图数据的处理已经逐渐不能满足业务日益增长的诉求,因此设计一套面向大规模图数据的实时处理引擎,将会对大数据处理技术革新带来巨大的帮助。</p>
-<p>蚂蚁图计算团队开源的流图计算引擎<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 GeaFlow 在动态图上的计算性能表现。</p>
+<p>开源的流图计算引擎<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 Apache GeaFlow (Incubating) 在动态图上的计算性能表现。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-图计算">1. 图计算<a href="#1-图计算" class="hash-link" aria-label="1. 图计算的直接链接" title="1. 图计算的直接链接"></a></h2>
<p><font style="color:rgb(51, 51, 51)">图是一种数学结构,由节点和边组成。节点代表各种实体,比如人、地点、事物或概念,而边则表示这些节点之间的关系。例如:</font></p>
<ul>
@@ -57,16 +56,16 @@
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p><font style="color:rgb(64, 64, 64)">但这种方案有一个比较大的缺点,就是它存在着重复计算的问题,假如我们需要以 1 小时一个窗口做一次计算,那么在使用 Spark 进行计算时,不仅要将当前窗口的数据计算进去,历史所有数据也需要进行回溯,存在大量重复计算,这样做效率不高,因此我们需要一套能够进行增量计算的图计算方案。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算geaflow">4. 动态图增量计算:GeaFlow<a href="#4-动态图增量计算geaflow" class="hash-link" aria-label="4. 动态图增量计算:GeaFlow的直接链接" title="4. 动态图增量计算:GeaFlow的直接链接"></a></h2>
-<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 GeaFlow(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算apache-geaflow-incubating">4. 动态图增量计算:Apache GeaFlow (Incubating)<a href="#4-动态图增量计算apache-geaflow-incubating" class="hash-link" aria-label="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接" title="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接"></a></h2>
+<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 Apache GeaFlow (Incubating)(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>那么 GeaFlow 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
+<p>那么 Apache GeaFlow (Incubating) 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
<p>这里以 WCC 算法为例,对联通分量算法而言,在一个时间窗口内每条边对应的 src id 和 tar id 对应的顶点会被激活,第一次迭代需要将其 id 信息通知其邻居节点。如果邻居节点收到消息后,发现需要更新自己的信息,那么它需要继续将更新消息通知给它的邻居节点;如果说邻居节点不需要更新自己的信息,那么它就不需要通知其邻居节点,它对应的迭代终止。</p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0-1c1f991809d12cfdb99fce31a47e532f.png" width="1986" height="802" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-架构简析">5. GeaFlow 架构简析<a href="#5-geaflow-架构简析" class="hash-link" aria-label="5. GeaFlow 架构简析的直接链接" title="5. GeaFlow 架构简析的直接链接"></a></h2>
-<p>GeaFlow 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-架构简析">5. Apache GeaFlow (Incubating) 架构简析<a href="#5-apache-geaflow-incubating-架构简析" class="hash-link" aria-label="5. Apache GeaFlow (Incubating) 架构简析的直接链接" title="5. Apache GeaFlow (Incubating) 架构简析的直接链接"></a></h2>
+<p>Apache GeaFlow (Incubating) 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-性能测试">6. GeaFlow 性能测试<a href="#6-geaflow-性能测试" class="hash-link" aria-label="6. GeaFlow 性能测试的直接链接" title="6. GeaFlow 性能测试的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-apache-geaflow-incubating-性能测试">6. Apache GeaFlow (Incubating) 性能测试<a href="#6-apache-geaflow-incubating-性能测试" class="hash-link" aria-label="6. Apache GeaFlow (Incubating) 性能测试的直接链接" title="6. Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
<p>为了验证 GeaFlow 的增量图计算性能,我们设计了这样的实验。一批数据按照固定时间窗口实时输入到计算引擎中,我们分别用 Spark 和 GeaFlow 对全图做联通分量算法计算,比较两者计算耗时。实验在 3 台 24 核内存 128G 的机器上开展,使用的数据集是公开数据集<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">soc-Livejournal</a>,测试的图算法是弱联通分量算法。我们以 50w 条数据作为一个计算窗口,每输入到引擎中 50w 条数据,就触发一次图计算。</p>
<p>Spark 作为批处理引擎,对于每一批窗口来的数据,不管窗口规模是大是小,都需要对增量图数据连同历史图数据进行全量计算。在 Spark 上,可以直接调用 Spark GraphX 内部内置的 WCC 算法进行计算。</p>
<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">object SparkTest {</span><br></span><span class="token-line" style="color:#bfc7d5"><span [...]
@@ -81,20 +80,20 @@
<li><font style="color:rgb(6, 6, 7)">GeaFlow 通过增量计算避免了全量数据的重复处理,计算效率更高,计算时间更短性能不明显下降。</font></li>
<li><font style="color:rgb(6, 6, 7)">GeaFlow 支持 SQL+GQL 混合处理语言,更适合开发复杂的图数据处理任务。</font></li>
</ol>
-<p>GeaFlow 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>Apache GeaFlow (Incubating) 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
-<li>优化 GQL match 语句性能。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
-<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
+<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/apache/geaflow/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
+<li>优化 GQL match 语句性能。(<a href="https://github.com/apache/geaflow/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
+<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/apache/geaflow/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="#参考链接" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal 数据集地址:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/31"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">Graph4Stream:基于图的流计算加速</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-图计算" class="table-of-contents__link toc-highlig [...]
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/31"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">Graph4Stream:基于图的流计算加速</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-图计算" class="table-of-contents__link toc-highlig [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/28/index.html b/zh-CN/blog/28/index.html
index a10bb3b..aa33c4e 100644
--- a/zh-CN/blog/28/index.html
+++ b/zh-CN/blog/28/index.html
@@ -15,20 +15,19 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="#问题背景" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>在流式计算中,数据往往不是全部一批到来,而会源源不断地进行输入和计算,在图计算/图查询领域,也存在类似的场景,图的点边不断地从数据源读取,进行构图,从而形成增量图。在增量图查询中,图随时发生着变化,在不同的图版本中,进行图查询的结果也会有所不同。对于某一次新增的点边,构成了一个新的版本的图,如果重新对全图(即当前所有点边)进行图遍历,开销较大,并且也会和历史数据有重复。由于历史的数据已经计算过一遍,理想情况下,只需要对增量所影响的部分进行计算/查询,而不需要对全图重新进行查询。</p>
-<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Geaflow 是蚂蚁图计算团队开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Geaflow 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
+<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Apache GeaFlow (Incubating) 是开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Apache GeaFlow (Incubating) 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
<p><img decoding="async" loading="lazy" alt="画板" src="/zh-CN/assets/images/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9-dfc03546ce004eda8a9b5b9f4fa32395.jpeg" width="3017" height="671" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="当前问题">当前问题<a href="#当前问题" class="hash-link" aria-label="当前问题的直接链接" title="当前问题的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">Geaflow 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
+<p><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
<div style="text-align:center">
<img decoding="async" loading="lazy" src="/graph/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q"></div>
<p>如上问题关键在于如果只考虑增量的部分,则点 A1 无法触发计算,但是点 A1 实际包含于增量结果中。所以需要设法让点 A1 参与计算,我们考虑一种从新增点扩充子图的方法,将 a 触发。将整个查询分为 2 个阶段,Evolve 扩展阶段和 Traversal 阶段。在 Evolve 阶段中,从起始点开始,向邻居发送 EvolveMessage,后续的 iteration 中,收到 EvolveMessage 的点加入到 EvolveVertices 集合中。而后的 Traversal 阶段则会使用 EvolveVertices 里的点触发遍历,即表示当前窗口的触发点。</p>
@@ -56,11 +55,11 @@
<li>GQL 语句中没有起始点:如果有起始点,则只需使用起始点计算,不需要扩展子图,例如查询语句 Match(a:person where a.id = 1))return a.name。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo-示例">Demo 示例<a href="#demo-示例" class="hash-link" aria-label="Demo 示例的直接链接" title="Demo 示例的直接链接"></a></h2>
-<p>在 Geaflow 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
+<p>在 Apache GeaFlow (Incubating) 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>在 Demo 中,设置点 windowSize 为 20,边 windowSize 为 3,即构图时每个 window 导入 20 个点,3 条边。并执行 3 跳的查询语句。<strong>示例 Demo 在 IncrMatchTest.java 中, 可直接运行执行 Demo。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="#总结和展望" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Geaflow 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/29"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">GeaFlow 时序能力探秘——让时间数据焕发新生!< [...]
+<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Apache GeaFlow (Incubating) 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/29"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">Apache [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/29/index.html b/zh-CN/blog/29/index.html
index 7dfdef4..a577475 100644
--- a/zh-CN/blog/29/index.html
+++ b/zh-CN/blog/29/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">GeaFlow 时序能力探秘——让时间数据焕发新生! | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog/29"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_locale" content="zh-C [...]
+<title data-rh="true">Apache GeaFlow (Incubating) 时序能力探秘——让时间数据焕发新生! | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog/29"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_l [...]
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p><strong><font style="color:rgb(63, 63, 63)"><br>
</font></strong><font style="color:rgb(63, 63, 63)"> 在当今数字化时代,数据已经成为驱动决策和创新的核心资源。然而,数据不仅仅是静态的数字或关系,它会随着时间不断变化。无论是股票市场的实时波动、社交网络中的动态互动,还是物联网设备的状态更新,时间维度都是理解这些数据的关键,例如:</font></p>
<ul>
@@ -43,13 +43,13 @@
<li><strong><font style="color:rgb(63, 63, 63)">缺乏灵活性</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)"> 很多工具只支持单一类型的数据分析,无法同时处理实时流数据和历史数据。</font></p>
-<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,GeaFlow 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-geaflow"><font style="color:rgb(63, 63, 63)">什么是 GeaFlow?</font><font style="color:rgb(63, 63, 63)"></font><a href="#什么是-geaflow" class="hash-link" aria-label="什么是-geaflow的直接链接" title="什么是-geaflow的直接链接"></a></h2>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
+<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,Apache GeaFlow (Incubating) 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-apache-geaflow-incubating"><font style="color:rgb(63, 63, 63)">什么是 Apache GeaFlow (Incubating)?</font><font style="color:rgb(63, 63, 63)"></font><a href="#什么是-apache-geaflow-incubating" class="hash-link" aria-label="什么是-apache-geaflow-incubating的直接链接" title="什么是-apache-geaflow-incubating的直接链接"></a></h2>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">分布式架构</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">流图与时序图的无缝集成</font></li>
</ul>
@@ -97,7 +97,7 @@
<li><strong><font style="color:rgb(63, 63, 63)">时序图增强了流图的分析能力</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)">通过引入时间戳,时序图使得流图能够进行更复杂的分析,例如时间窗口分析、趋势预测等。</font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflow-的实现细节"><strong>4. GeaFlow 的实现细节</strong><a href="#4-geaflow-的实现细节" class="hash-link" aria-label="4-geaflow-的实现细节的直接链接" title="4-geaflow-的实现细节的直接链接"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubating-的实现细节"><strong>4. Apache GeaFlow (Incubating) 的实现细节</strong><a href="#4-apache-geaflow-incubating-的实现细节" class="hash-link" aria-label="4-apache-geaflow-incubating-的实现细节的直接链接" title="4-apache-geaflow-incubating-的实现细节的直接链接"></a></h3>
<p><font style="color:rgb(63, 63, 63)">GeaFlow 通过以下技术手段实现了流图与时序图的无缝结合:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">时间戳分配机制</font></strong><font style="color:rgb(63, 63, 63)"></font></li>
@@ -295,14 +295,14 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</font></ol><font style="color:rgb(63, 63, 63)">
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="10-技术优势"><strong>10. 技术优势</strong><a href="#10-技术优势" class="hash-link" aria-label="10-技术优势的直接链接" title="10-技术优势的直接链接"></a></h3>
<ul>
-<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
+<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">时间敏感性:</font></strong><font style="color:rgb(63, 63, 63)">通过时间戳字段,精确管理好友关系的时间顺序。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">灵活性:</font></strong><font style="color:rgb(63, 63, 63)">SQL 驱动的开发模式,降低了开发门槛,提升了开发效率。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">可拓展性:</font></strong><font style="color:rgb(63, 63, 63)">支持大规模动态图的增量计算,能够轻松应对社交平台的海量用户数据。</font></li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">GeaFlow 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="#geaflow-时序能力的核心亮点" class="hash-link" aria-label="geaflow-时序能力的核心亮点的直接链接" title="geaflow-时序能力的核心亮点的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="#apache-geaflow-incubating-时序能力的核心亮点" class="hash-link" aria-label="apache-geaflow-incubating-时序能力的核心亮点的直接链接" title="apache-geaflow-incubating-时序能力的核心亮点的直接链接"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-时间感知的数据处理"><strong>1. 时间感知的数据处理</strong><a href="#1-时间感知的数据处理" class="hash-link" aria-label="1-时间感知的数据处理的直接链接" title="1-时间感知的数据处理的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。GeaFlow 支持基于时间窗口的分析,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。Apache GeaFlow (Incubating) 支持基于时间窗口的分析,例如:</font></p>
<ul>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">最近 5 分钟的趋势变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)">
@@ -310,25 +310,25 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</li>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">过去一天的动态模式</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
-</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
+</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-动态图与时序结合"><strong>2. 动态图与时序结合</strong><a href="#2-动态图与时序结合" class="hash-link" aria-label="2-动态图与时序结合的直接链接" title="2-动态图与时序结合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">社交网络中好友关系的变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在社交网络中,用户的好友关系可能会随着时间发生变化。GeaFlow 可以动态更新图结构,捕捉这些变化。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融交易网络中的资金流动</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融交易网络中,资金流动是一个动态过程。GeaFlow 可以实时追踪资金流动路径,并识别潜在的风险点。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-实时与历史数据的无缝融合"><strong>3. 实时与历史数据的无缝融合</strong><a href="#3-实时与历史数据的无缝融合" class="hash-link" aria-label="3-实时与历史数据的无缝融合的直接链接" title="3-实时与历史数据的无缝融合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">物联网设备监控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在物联网场景中,GeaFlow 可以实时监控设备状态,同时结合历史数据,预测设备可能出现的故障。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融风控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融风控场景中,GeaFlow 可以实时监控交易网络,同时结合历史数据,识别异常行为或潜在风险。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-丰富的内置算法"><strong>4. 丰富的内置算法</strong><a href="#4-丰富的内置算法" class="hash-link" aria-label="4-丰富的内置算法的直接链接" title="4-丰富的内置算法的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 提供针对时序数据优化的算法,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 提供针对时序数据优化的算法,例如:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">最短路径</font></li>
<li><font style="color:rgb(63, 63, 63)">弱联通分量</font></li>
@@ -339,8 +339,8 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(63, 63, 63)">数据的动态变化蕴藏着无限价值,而 GeaFlow 的时序能力正是解锁这一价值的钥匙。无论您是数据分析新手,还是希望提升动态数据处理能力的专业人士,GeaFlow 都将为您提供强大的支持。</font></p>
<p><font style="color:rgb(63, 63, 63)">立即下载 GeaFlow,亲身体验其时序能力的强大之处吧!让我们一起探索时间数据的无限可能!</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="术语font-stylecolorrgb73-80-87font"><font style="color:rgb(63, 63, 63)">术语</font><strong><font style="color:rgb(73, 80, 87)"></font></strong><a href="#术语font-stylecolorrgb73-80-87font" class="hash-link" aria-label="术语font-stylecolorrgb73-80-87font的直接链接" title="术语font-stylecolorrgb73-80-87font的直接链接"></a></h2>
-<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 GeaFlow 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
-</font></font></font></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--next" href="/zh-CN/blog/28"><div class="pagination-nav__sublabel">较旧一篇</div><div class="pagination-nav__label">流图计算之增量match原理与应用</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#为什么时序能力如此重要" class="table-of-contents_ [...]
+<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 Apache GeaFlow (Incubating) 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
+</font></font></font></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--next" href="/zh-CN/blog/28"><div class="pagination-nav__sublabel">较旧一篇</div><div class="pagination-nav__label">流图计算之增量match原理与应用</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#为什么时序能力如此重要" class="table-of-contents_ [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/30/index.html b/zh-CN/blog/30/index.html
index 03eee3d..58ee136 100644
--- a/zh-CN/blog/30/index.html
+++ b/zh-CN/blog/30/index.html
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<blockquote>
<p>作者:林力韬</p>
</blockquote>
@@ -60,7 +60,7 @@
<p><strong>图 3 ER 图转图 Schema 示例组图</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">通过算法自动分析多表之间的关联关系并自动构建图的点边,可以为数据从原始存储位置迁移至图数仓提供依据,同时显著消除人工数据建模、人工编写数据导入 DSL 的工作量,无人工介入即可使传统数仓数据快速迁移到图数据仓库中,立即开始分析。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-数据通道物化数据交互能力">2. 数据通道:物化数据交互能力<a href="#2-数据通道物化数据交互能力" class="hash-link" aria-label="2. 数据通道:物化数据交互能力的直接链接" title="2. 数据通道:物化数据交互能力的直接链接"></a></h3>
-<p>类似于传统数据仓库,图数仓基于 GeaFlow 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
+<p>类似于传统数据仓库,图数仓基于 Apache GeaFlow (Incubating) 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
<p><font style="color:rgb(0, 0, 0)">在 Schema 转换器的加持下,可以得到从表存储到图存储的物化方案,它</font><font style="color:rgba(0, 0, 0, 0.88)">构建了连接传统数仓与图数仓的数据通道。基于表转图的物化方案,可以根据业务实际配置的加速表、加速关系、字段、权限等信息,全自动生成数据同步的任务编排,再通过图数仓平台调度,实现数据迁移全程无感,后续实时更新与增量同步,同步效率可达延迟十分钟级别。</font></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">数据通道能力面向主流大数据生态系统,可深度集成 ODPS/Hive/Paimon 等基础设施,通过三层架构实现全生命周期数据管理:在数据接入层,自动捕获表的变化,产出物化方案,同步表-图实体映射的增量部分,当前可管理 10TB 级别图数据;在转换引擎层,全自动化生成导数的 DSL 任务编排,调度到集群执行;在存储优化层,支持 CStore/GraphDB/RocksDB 等自研或开源图存储解决方案,实践中已经过万亿级超大业务图的检验。此外,查询热数据预加载可根据图的实际使用情况,在 TB 级数据规模下仍能维持秒级查询相应,真正实现从表数仓到图数仓的全栈切换,SQL 之下全为图。</font></p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
@@ -82,7 +82,7 @@
<p><font style="color:rgba(0, 0, 0, 0.88)">相较于传统数仓,图数仓在三个维度实现代际跨越:性能层面,关联查询效率提升 1-2 个数量级;易用性层面,通过 SQL-GQL 自动转换消除图领域学习成本;分析深度层面,支持算法分析和隐性关系挖掘。</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="四未来展望">四、未来展望<a href="#四未来展望" class="hash-link" aria-label="四、未来展望的直接链接" title="四、未来展望的直接链接"></a></h2>
<p><font style="color:rgba(0, 0, 0, 0.88)">作为下一代数据基础设施的核心载体,我们计划逐步将图存储引擎、图计算框架引擎、SQL-GQL 翻译模块等核心能力开源,构建开发者共创的技术生态。2023 年已率先开源流图计算引擎 GeaFlow,2025 年 Q3 将继续开放图模型数据分析标准化平台,高性能的图计算引擎,支持社区开发者开发异构数据源连接器。这种开放协作模式不仅加速技术迭代,更推动产品成为 ISO/IEC 39075 GQL 国际标准的最佳实践平台,助力 SQL-GQL 混合查询渐成行业规范。</font></p>
-<p><font style="color:rgba(0, 0, 0, 0.88)">技术演进层面,下一代引擎将突破动态流图计算瓶颈,实现万亿边规模数据的增量更新。通过融合向量化计算引擎,可同时处理属性图与向量图的联合查询,满足 AIGC 时代的多模态分析需求,并支持自然语言直接生成图查询语句的颠覆性体验。行业应用前景正呈现爆发态势,未来图数据仓库将承载多数企业关联数据分析负载,成为智能决策的核心引擎。</font></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/28"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">流图计算之增量match原理与应用</div></a><a cla [...]
+<p><font style="color:rgba(0, 0, 0, 0.88)">技术演进层面,下一代引擎将突破动态流图计算瓶颈,实现万亿边规模数据的增量更新。通过融合向量化计算引擎,可同时处理属性图与向量图的联合查询,满足 AIGC 时代的多模态分析需求,并支持自然语言直接生成图查询语句的颠覆性体验。行业应用前景正呈现爆发态势,未来图数据仓库将承载多数企业关联数据分析负载,成为智能决策的核心引擎。</font></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/28"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">流图计算之增量match原理与应用</div></a><a cla [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/31/index.html b/zh-CN/blog/31/index.html
index f5db780..9e5953f 100644
--- a/zh-CN/blog/31/index.html
+++ b/zh-CN/blog/31/index.html
@@ -15,23 +15,22 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
-<blockquote>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>作者:坤羽;审校:东朔。</p>
</blockquote>
-<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,GeaFlow 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
+<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,Apache GeaFlow (Incubating) 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
<p>当今时代,<font style="color:rgb(51, 51, 51)">数据正以前所未有的速度和规模产生,对海量数据进行实时处理在异常检测、搜索推荐、金融交易等各个领域都有着广泛的应用。流计算</font><font style="color:rgb(0, 0, 0)">作为最主要的实时数据处理技术也变得越来越重要。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<p><font style="color:rgb(0, 0, 0)">与批处理需要等待数据全部到齐才进行计算不同,流计算将持续生成的数据流划分成微批,对每个微批的数据进行增量计算。这样的计算特性使得流计算具有高吞吐、低延迟的特性。常见的流计算引擎包括 Flink、Spark Streaming 等,他们都采用表的方式处理流中的数据。随着流计算应用的深入,越来越多的计算场景涉及到大数据之间关联关系的计算,此时基于表的流计算引擎性能会大幅下降。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<p><font style="color:rgb(0, 0, 0)">蚂蚁图计算团队开源的流图计算引擎</font>GeaFlow<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
+<p><font style="color:rgb(0, 0, 0)">开源的流图计算引擎</font>Apache GeaFlow (Incubating)<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流计算引擎flink"><font style="color:rgb(0, 0, 0)">流计算引擎:Flink</font><a href="#流计算引擎flink" class="hash-link" aria-label="流计算引擎flink的直接链接" title="流计算引擎flink的直接链接"></a></h2>
<p><font style="color:rgb(0, 0, 0)">Flink 是经典的基于表的流处理引擎,他将输入的数据流切分成微批,每次计算当前批次的数据。在计算过程中,Flink 将计算任务翻译成由 map、filter、join 等基础算子组成的有向图,每个算子都有他的上游输入和下游输出。增量数据经过所有算子的计算后输出当前批次的结果。</font></p>
@@ -50,46 +49,46 @@
<p><font style="color:rgb(0, 0, 0)">join 计算主要的性能瓶颈就在遍历 RightStateView。LeftStateView 和 RightStateView 实际上存储 join 的左表和右表。随着数据不断输入,StateView 中的数据量持续膨胀,最终导致遍历的耗时急剧上升,严重影响系统性能。</font></p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join 算子实现</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎geaflow">流图计算引擎:GeaFlow<a href="#流图计算引擎geaflow" class="hash-link" aria-label="流图计算引擎:GeaFlow的直接链接" title="流图计算引擎:GeaFlow的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎apache-geaflow-incubating">流图计算引擎:Apache GeaFlow (Incubating)<a href="#流图计算引擎apache-geaflow-incubating" class="hash-link" aria-label="流图计算引擎:Apache GeaFlow (Incubating)的直接链接" title="流图计算引擎:Apache GeaFlow (Incubating)的直接链接"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图计算流图">图计算&流图<a href="#图计算流图" class="hash-link" aria-label="图计算&流图的直接链接" title="图计算&流图的直接链接"></a></h3>
<p>图计算是一种基于图数据格式的计算范式,其中图 G(V,E)由点集合 V 和边集合 E 构成,边代表了数据之间的关联关系。以公开数据集 web-Google 为例,其中每一行数据由两个数字组成,代表了两个页面之间的跳转关系。如下图所示,左侧是原始数据,常规的数据建模方式是建立一张包含两列数据的表,而图的建模方式是将网页作为点,将页面的跳转关系作为边,构成一张跳转网络图。在表的建模方式中,关联关系的计算是通过表的 join 实现的,join 需要遍历左表或者右表。而在图计算中,关联关系被直接存储在边中,省去了遍历的过程。</p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>表建模 vs. 图建模</p>
<p><font style="color:rgb(0, 0, 0)">流图是图在流场景中的应用,他依据数据流对图的更新将图分成历史图和增量图两个部分。例如在上图中,假设第一行和第二行数据已经输入并完成相应计算,当前处理第三行数据。此时历史图就是由前两行数据建模得到,而增量图是由第三行数据组成的图,两者合并起来就得到完整的图。在流图上应用增量图算法,可以高效完成计算任务,实现实时计算。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-架构"><font style="color:rgb(0, 0, 0)">GeaFlow 架构</font><a href="#geaflow-架构" class="hash-link" aria-label="geaflow-架构的直接链接" title="geaflow-架构的直接链接"></a></h3>
-<p>GeaFlow 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-架构"><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 架构</font><a href="#apache-geaflow-incubating-架构" class="hash-link" aria-label="apache-geaflow-incubating-架构的直接链接" title="apache-geaflow-incubating-架构的直接链接"></a></h3>
+<p>Apache GeaFlow (Incubating) 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a-13fb01ce0fc0e6e24394158fe6f6d7ce.png" width="2172" height="882" class="img_ev3q"></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 增量计算</font></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 计算框架是以点为中心的迭代计算模型。他以增量图中的点作为第一轮迭代的起点。在每一轮迭代中,每个点都独立维护自身的状态,根据与每个点关联的历史图和增量图完成当前迭代轮次的计算,最后将计算结果通过消息传递给邻居点,开启下一轮迭代。</font></p>
-<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
+<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
<p><font style="color:rgb(0, 0, 0)">下图是两跳场景的描述。在第一轮迭代,增量边 B->C 分别构建入向路径和出向路径,将他们分别发送给点 B 和点 C。在第二轮迭代,B 收到入向路径,并加上当前点的入边形成 2 跳入向路径,发送给点 B。同样点 C 也收到出向路径,加上当前的出边形成 2 跳出向路径,发送给点 B。最后一轮迭代在 B 点将收到的出向和入向路径整合成新增的路径。可以看到,和 Flink 中需要查找所有的历史关系不同,GeaFlow 采用基于流图的增量图算法,计算量和图中的增量路径成正比。</font></p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>两跳增量路径计算</p>
<p><font style="color:rgb(0, 0, 0)">上述图算法已经集成到 GeaFlow 的 IncKHop 算子中,用户可以直接通过 DSL 调用。</font></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-性能测试">GeaFlow 性能测试<a href="#geaflow-性能测试" class="hash-link" aria-label="GeaFlow 性能测试的直接链接" title="GeaFlow 性能测试的直接链接"></a></h2>
-<p>为了验证 GeaFlow 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-性能测试">Apache GeaFlow (Incubating) 性能测试<a href="#apache-geaflow-incubating-性能测试" class="hash-link" aria-label="Apache GeaFlow (Incubating) 性能测试的直接链接" title="Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
+<p>为了验证 Apache GeaFlow (Incubating) 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
<p>实验结果如图所示,横坐标是分别是一跳关系、两跳关系、三跳关系、四跳关系,纵坐标是处理完所有数据的耗时,采用对数指标。可以看到在一跳、两跳场景中,Flink 的性能要好于 GeaFlow,这是因为在一跳、两跳场景中参与 join 计算的数据量比较小,join 需要遍历的左表和右表都很小,遍历本身耗时短,而且 Flink 的计算框架可以缓存 join 的历史计算结果。但是到了三跳、四跳场景时候,由于计算复杂度的上升,join 算子需要遍历的表迅速膨胀,带来计算性能的急剧下降,甚至四跳场景超过一天也无法完成计算。而 GeaFlow<font style="color:rgb(0, 0, 0)">采用基于流图增量图算法,计算耗时只和增量路径相关,和历史的关联关系计算结果无关,所以性能明显优于 Flink。</font></p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221-271813564bc0981ca8d84a83398b49fb.png" width="2922" height="1802" class="img_ev3q"></p>
<p>k-Hop 计算性能对比</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="#总结和展望" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
<p>传统的 Flink 等流计算引擎在计算关联关系时需要用到 join 算子,join 算子需要遍历全量的历史数据,这使得他们在大数据关联计算场景中性能不佳。GeaFlow 引擎通过支持流图计算框架,将图计算引入到流计算中,采用增量图计算的方法大大提升了实时数据的处理系性能。</p>
-<p>目前 GeaFlow 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>目前 Apache GeaFlow (Incubating) 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持增量 k-Core 算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>支持增量最小生成树算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>支持增量 k-Core 算法。(<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>支持增量最小生成树算法。(<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="#参考链接" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google 数据集地址:<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>增量 k-Hop 算法实现源码:<a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
-</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/32"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/zh-CN/blog/27"><div class="pagination-nav__sublabel">较旧一篇</div><div class="pagination-nav__label">Stream4Graph:动态图上的增量计 [...]
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>增量 k-Hop 算法实现源码:<a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/32"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/zh-CN/blog/27"><div class="pagination-nav__sublabel">较旧一篇</div><div class="pagination-nav__label">S [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/32/index.html b/zh-CN/blog/32/index.html
index 6d71287..519b15d 100644
--- a/zh-CN/blog/32/index.html
+++ b/zh-CN/blog/32/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理 | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog/32"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_ [...]
+<title data-rh="true">流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理 | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog/32"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="tru [...]
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<ul>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font></li>
@@ -31,7 +31,7 @@
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">支持增量匹配算子</font></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-新增功能">✨ 新增功能<a href="#-新增功能" class="hash-link" aria-label="✨ 新增功能的直接链接" title="✨ 新增功能的直接链接"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="#geaflow-图存储扩展支持-paimon-数据湖实验性功能" class="hash-link" aria-label="geaflow-图存储扩展支持-paimon-数据湖实验性功能的直接链接" title="geaflow-图存储扩展支持-paimon-数据湖实验性功能的直接链接"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="#apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能" class="hash-link" aria-label="apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能的直接链接" title="apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能的直接链接"></a></h3>
<p><font style="color:rgb(63, 63, 63)">为提升 GeaFlow 数据存储系统的扩展性、实时数据处理能力及成本效率,本次更新加入了对 Apache Paimon 的支持。Paimon 作为新一代流式数据湖存储格式,在设计理念、功能特性上,与 GeaFlow 之前使用的 RocksDB 存在许多差异:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">支持对象存储/HDFS 分布式存储,天然适配云原生环境。因此可实现存储与计算分离,降低硬件依赖,支持弹性扩展。</font></li>
@@ -44,7 +44,7 @@
<li><font style="color:rgb(63, 63, 63)">当前为实验性功能,仅支持使用本地文件系统作为 paimon 的存储后端,且暂不支持 recover 能力,暂不支持动态图数据存储。</font></li>
<li><font style="color:rgb(63, 63, 63)">通过配置<code>geaflow.store.paimon.options.warehouse</code>参数来指定存储路径,默认路径为"file:///tmp/paimon/"。</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">当前 GeaFlow 的存储架构图如下。</font></p>
+<p><font style="color:rgb(63, 63, 63)">当前 Apache GeaFlow (Incubating) 的存储架构图如下。</font></p>
<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<p><font style="color:rgb(63, 63, 63)"></font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图数仓能力扩展支持对图中的实体进行关系型访问"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font><a href="#图数仓能力扩展支持对图中的实体进行关系型访问" class="hash-link" aria-label="图数仓能力扩展支持对图中的实体进行关系型访问的直接链接" title="图数仓能力扩展支持对图中的实体进行关系型访问的直接链接"></a></h3>
@@ -112,7 +112,7 @@
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-致谢">✨ 致谢<a href="#-致谢" class="hash-link" aria-label="✨ 致谢的直接链接" title="✨ 致谢的直接链接"></a></h2>
<p><font style="color:rgb(62, 62, 62)">感谢所有贡献者使这次发布成为可能! </font></p>
<p><font style="color:rgb(62, 62, 62)"></font></p>
-<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp" width="1080" height="1080" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/30"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">Join性能变革:图数仓让SQL分析快人一步</div></a><a class="p [...]
+<p><img decoding="async" loading="lazy" src="/zh-CN/assets/images/1756792583799-ea7feea1-1279-4089-bbb9-61fc0b6331b2-7f07dc703b7e6107972fae4a9d45f89a.webp" width="1080" height="1080" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><a class="pagination-nav__link pagination-nav__link--prev" href="/zh-CN/blog/30"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__label">Join性能变革:图数仓让SQL分析快人一步</div></a><a class="p [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/archive/index.html b/zh-CN/blog/archive/index.html
index 1fb86ce..f6d4aa6 100644
--- a/zh-CN/blog/archive/index.html
+++ b/zh-CN/blog/archive/index.html
@@ -15,14 +15,14 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/atom.xml b/zh-CN/blog/atom.xml
index 3c54ee3..d9c7f28 100644
--- a/zh-CN/blog/atom.xml
+++ b/zh-CN/blog/atom.xml
@@ -8,7 +8,7 @@
<subtitle>GeaFlow Blog</subtitle>
<icon>https://apache.github.io/zh-CN/img/favicon.png</icon>
<entry>
- <title type="html"><![CDATA[GeaFlow 时序能力探秘——让时间数据焕发新生!]]></title>
+ <title type="html"><![CDATA[Apache GeaFlow (Incubating) 时序能力探秘——让时间数据焕发新生!]]></title>
<id>https://apache.github.io/zh-CN/blog/29</id>
<link href="https://apache.github.io/zh-CN/blog/29"/>
<updated>2025-06-25T00:00:00.000Z</updated>
@@ -34,13 +34,13 @@
<li><strong><font style="color:rgb(63, 63, 63)">缺乏灵活性</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)"> 很多工具只支持单一类型的数据分析,无法同时处理实时流数据和历史数据。</font></p>
-<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,GeaFlow 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-geaflow"><font style="color:rgb(63, 63, 63)">什么是 GeaFlow?</font><font style="color:rgb(63, 63, 63)"></font><a href="https://apache.github.io/zh-CN/blog/29#%E4%BB%80%E4%B9%88%E6%98%AF-geaflow" class="hash-link" aria-label="什么是-geaflow的直接链接" title="什么是-geaflow的直接链接"></a></h2>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
+<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,Apache GeaFlow (Incubating) 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-apache-geaflow-incubating"><font style="color:rgb(63, 63, 63)">什么是 Apache GeaFlow (Incubating)?</font><font style="color:rgb(63, 63, 63)"></font><a href="https://apache.github.io/zh-CN/blog/29#%E4%BB%80%E4%B9%88%E6%98%AF-apache-geaflow-incubating" class="hash-link" aria-label="什么是-apache-geaflow-incubating的直接链接" title="什么是-apache-geaflow-incubating的直接链接"></a></h2>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">分布式架构</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">流图与时序图的无缝集成</font></li>
</ul>
@@ -88,7 +88,7 @@
<li><strong><font style="color:rgb(63, 63, 63)">时序图增强了流图的分析能力</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)">通过引入时间戳,时序图使得流图能够进行更复杂的分析,例如时间窗口分析、趋势预测等。</font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflow-的实现细节"><strong>4. GeaFlow 的实现细节</strong><a href="https://apache.github.io/zh-CN/blog/29#4-geaflow-%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%BB%86%E8%8A%82" class="hash-link" aria-label="4-geaflow-的实现细节的直接链接" title="4-geaflow-的实现细节的直接链接"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubating-的实现细节"><strong>4. Apache GeaFlow (Incubating) 的实现细节</strong><a href="https://apache.github.io/zh-CN/blog/29#4-apache-geaflow-incubating-%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%BB%86%E8%8A%82" class="hash-link" aria-label="4-apache-geaflow-incubating-的实现细节的直接链接" title="4-apache-geaflow-incubating-的实现细节的直接链接"></a></h3>
<p><font style="color:rgb(63, 63, 63)">GeaFlow 通过以下技术手段实现了流图与时序图的无缝结合:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">时间戳分配机制</font></strong><font style="color:rgb(63, 63, 63)"></font></li>
@@ -286,14 +286,14 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</font></ol><font style="color:rgb(63, 63, 63)">
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="10-技术优势"><strong>10. 技术优势</strong><a href="https://apache.github.io/zh-CN/blog/29#10-%E6%8A%80%E6%9C%AF%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="10-技术优势的直接链接" title="10-技术优势的直接链接"></a></h3>
<ul>
-<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
+<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">时间敏感性:</font></strong><font style="color:rgb(63, 63, 63)">通过时间戳字段,精确管理好友关系的时间顺序。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">灵活性:</font></strong><font style="color:rgb(63, 63, 63)">SQL 驱动的开发模式,降低了开发门槛,提升了开发效率。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">可拓展性:</font></strong><font style="color:rgb(63, 63, 63)">支持大规模动态图的增量计算,能够轻松应对社交平台的海量用户数据。</font></li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">GeaFlow 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="https://apache.github.io/zh-CN/blog/29#geaflow-%E6%97%B6%E5%BA%8F%E8%83%BD%E5%8A%9B%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BA%AE%E7%82%B9" class="hash-link" aria-label="geaflow-时序能力的核心亮点的直接链接" title="geaflow-时序能力的核心亮点的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="https://apache.github.io/zh-CN/blog/29#apache-geaflow-incubating-%E6%97%B6%E5%BA%8F%E8%83%BD%E5%8A%9B%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BA%AE%E7%82%B9" class="hash-link" aria-label="apache-geaflow-incubating-时序能力的核心亮点的直接链接" title="apache-geaflow-incubating-时序能力的核心亮点的直接链接"> [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-时间感知的数据处理"><strong>1. 时间感知的数据处理</strong><a href="https://apache.github.io/zh-CN/blog/29#1-%E6%97%B6%E9%97%B4%E6%84%9F%E7%9F%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86" class="hash-link" aria-label="1-时间感知的数据处理的直接链接" title="1-时间感知的数据处理的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。GeaFlow 支持基于时间窗口的分析,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。Apache GeaFlow (Incubating) 支持基于时间窗口的分析,例如:</font></p>
<ul>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">最近 5 分钟的趋势变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)">
@@ -301,25 +301,25 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</li>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">过去一天的动态模式</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
-</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
+</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-动态图与时序结合"><strong>2. 动态图与时序结合</strong><a href="https://apache.github.io/zh-CN/blog/29#2-%E5%8A%A8%E6%80%81%E5%9B%BE%E4%B8%8E%E6%97%B6%E5%BA%8F%E7%BB%93%E5%90%88" class="hash-link" aria-label="2-动态图与时序结合的直接链接" title="2-动态图与时序结合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">社交网络中好友关系的变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在社交网络中,用户的好友关系可能会随着时间发生变化。GeaFlow 可以动态更新图结构,捕捉这些变化。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融交易网络中的资金流动</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融交易网络中,资金流动是一个动态过程。GeaFlow 可以实时追踪资金流动路径,并识别潜在的风险点。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-实时与历史数据的无缝融合"><strong>3. 实时与历史数据的无缝融合</strong><a href="https://apache.github.io/zh-CN/blog/29#3-%E5%AE%9E%E6%97%B6%E4%B8%8E%E5%8E%86%E5%8F%B2%E6%95%B0%E6%8D%AE%E7%9A%84%E6%97%A0%E7%BC%9D%E8%9E%8D%E5%90%88" class="hash-link" aria-label="3-实时与历史数据的无缝融合的直接链接" title="3-实时与历史数据的无缝融合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">物联网设备监控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在物联网场景中,GeaFlow 可以实时监控设备状态,同时结合历史数据,预测设备可能出现的故障。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融风控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融风控场景中,GeaFlow 可以实时监控交易网络,同时结合历史数据,识别异常行为或潜在风险。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-丰富的内置算法"><strong>4. 丰富的内置算法</strong><a href="https://apache.github.io/zh-CN/blog/29#4-%E4%B8%B0%E5%AF%8C%E7%9A%84%E5%86%85%E7%BD%AE%E7%AE%97%E6%B3%95" class="hash-link" aria-label="4-丰富的内置算法的直接链接" title="4-丰富的内置算法的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 提供针对时序数据优化的算法,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 提供针对时序数据优化的算法,例如:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">最短路径</font></li>
<li><font style="color:rgb(63, 63, 63)">弱联通分量</font></li>
@@ -330,7 +330,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(63, 63, 63)">数据的动态变化蕴藏着无限价值,而 GeaFlow 的时序能力正是解锁这一价值的钥匙。无论您是数据分析新手,还是希望提升动态数据处理能力的专业人士,GeaFlow 都将为您提供强大的支持。</font></p>
<p><font style="color:rgb(63, 63, 63)">立即下载 GeaFlow,亲身体验其时序能力的强大之处吧!让我们一起探索时间数据的无限可能!</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="术语font-stylecolorrgb73-80-87font"><font style="color:rgb(63, 63, 63)">术语</font><strong><font style="color:rgb(73, 80, 87)"></font></strong><a href="https://apache.github.io/zh-CN/blog/29#%E6%9C%AF%E8%AF%ADfont-stylecolorrgb73-80-87font" class="hash-link" aria-label="术语font-stylecolorrgb73-80-87font的直接链接" title="术语font-stylecolorrgb73-80-87font的直接链接"></a></h2>
-<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 GeaFlow 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
+<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 Apache GeaFlow (Incubating) 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
</font></font></font>]]></content>
</entry>
<entry>
@@ -339,13 +339,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<link href="https://apache.github.io/zh-CN/blog/28"/>
<updated>2025-06-03T00:00:00.000Z</updated>
<summary type="html"><![CDATA[问题背景]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png" width="3620" height="2018" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="https://apache.github.io/zh-CN/blog/28#%E9%97%AE%E9%A2%98%E8%83%8C%E6%99%AF" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
+ <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="https://apache.github.io/zh-CN/blog/28#%E9%97%AE%E9%A2%98%E8%83%8C%E6%99%AF" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
<p>在流式计算中,数据往往不是全部一批到来,而会源源不断地进行输入和计算,在图计算/图查询领域,也存在类似的场景,图的点边不断地从数据源读取,进行构图,从而形成增量图。在增量图查询中,图随时发生着变化,在不同的图版本中,进行图查询的结果也会有所不同。对于某一次新增的点边,构成了一个新的版本的图,如果重新对全图(即当前所有点边)进行图遍历,开销较大,并且也会和历史数据有重复。由于历史的数据已经计算过一遍,理想情况下,只需要对增量所影响的部分进行计算/查询,而不需要对全图重新进行查询。</p>
-<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Geaflow 是蚂蚁图计算团队开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Geaflow 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
+<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Apache GeaFlow (Incubating) 是开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Apache GeaFlow (Incubating) 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
<p><img decoding="async" loading="lazy" alt="画板" src="https://apache.github.io/zh-CN/assets/images/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9-dfc03546ce004eda8a9b5b9f4fa32395.jpeg" width="3017" height="671" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="当前问题">当前问题<a href="https://apache.github.io/zh-CN/blog/28#%E5%BD%93%E5%89%8D%E9%97%AE%E9%A2%98" class="hash-link" aria-label="当前问题的直接链接" title="当前问题的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">Geaflow 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
+<p><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
<div style="text-align:center">
<img decoding="async" loading="lazy" src="https://apache.github.io/graph/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q"></div>
<p>如上问题关键在于如果只考虑增量的部分,则点 A1 无法触发计算,但是点 A1 实际包含于增量结果中。所以需要设法让点 A1 参与计算,我们考虑一种从新增点扩充子图的方法,将 a 触发。将整个查询分为 2 个阶段,Evolve 扩展阶段和 Traversal 阶段。在 Evolve 阶段中,从起始点开始,向邻居发送 EvolveMessage,后续的 iteration 中,收到 EvolveMessage 的点加入到 EvolveVertices 集合中。而后的 Traversal 阶段则会使用 EvolveVertices 里的点触发遍历,即表示当前窗口的触发点。</p>
@@ -373,11 +372,11 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li>GQL 语句中没有起始点:如果有起始点,则只需使用起始点计算,不需要扩展子图,例如查询语句 Match(a:person where a.id = 1))return a.name。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo-示例">Demo 示例<a href="https://apache.github.io/zh-CN/blog/28#demo-%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="Demo 示例的直接链接" title="Demo 示例的直接链接"></a></h2>
-<p>在 Geaflow 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
+<p>在 Apache GeaFlow (Incubating) 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>在 Demo 中,设置点 windowSize 为 20,边 windowSize 为 3,即构图时每个 window 导入 20 个点,3 条边。并执行 3 跳的查询语句。<strong>示例 Demo 在 IncrMatchTest.java 中, 可直接运行执行 Demo。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="https://apache.github.io/zh-CN/blog/28#%E6%80%BB%E7%BB%93%E5%92%8C%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Geaflow 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p>]]></content>
+<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Apache GeaFlow (Incubating) 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Join性能变革:图数仓让SQL分析快人一步]]></title>
@@ -423,7 +422,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><strong>图 3 ER 图转图 Schema 示例组图</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">通过算法自动分析多表之间的关联关系并自动构建图的点边,可以为数据从原始存储位置迁移至图数仓提供依据,同时显著消除人工数据建模、人工编写数据导入 DSL 的工作量,无人工介入即可使传统数仓数据快速迁移到图数据仓库中,立即开始分析。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-数据通道物化数据交互能力">2. 数据通道:物化数据交互能力<a href="https://apache.github.io/zh-CN/blog/30#2-%E6%95%B0%E6%8D%AE%E9%80%9A%E9%81%93%E7%89%A9%E5%8C%96%E6%95%B0%E6%8D%AE%E4%BA%A4%E4%BA%92%E8%83%BD%E5%8A%9B" class="hash-link" aria-label="2. 数据通道:物化数据交互能力的直接链接" title="2. 数据通道:物化数据交互能力的直接链接"></a></h3>
-<p>类似于传统数据仓库,图数仓基于 GeaFlow 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
+<p>类似于传统数据仓库,图数仓基于 Apache GeaFlow (Incubating) 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
<p><font style="color:rgb(0, 0, 0)">在 Schema 转换器的加持下,可以得到从表存储到图存储的物化方案,它</font><font style="color:rgba(0, 0, 0, 0.88)">构建了连接传统数仓与图数仓的数据通道。基于表转图的物化方案,可以根据业务实际配置的加速表、加速关系、字段、权限等信息,全自动生成数据同步的任务编排,再通过图数仓平台调度,实现数据迁移全程无感,后续实时更新与增量同步,同步效率可达延迟十分钟级别。</font></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">数据通道能力面向主流大数据生态系统,可深度集成 ODPS/Hive/Paimon 等基础设施,通过三层架构实现全生命周期数据管理:在数据接入层,自动捕获表的变化,产出物化方案,同步表-图实体映射的增量部分,当前可管理 10TB 级别图数据;在转换引擎层,全自动化生成导数的 DSL 任务编排,调度到集群执行;在存储优化层,支持 CStore/GraphDB/RocksDB 等自研或开源图存储解决方案,实践中已经过万亿级超大业务图的检验。此外,查询热数据预加载可根据图的实际使用情况,在 TB 级数据规模下仍能维持秒级查询相应,真正实现从表数仓到图数仓的全栈切换,SQL 之下全为图。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
@@ -448,12 +447,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgba(0, 0, 0, 0.88)">技术演进层面,下一代引擎将突破动态流图计算瓶颈,实现万亿边规模数据的增量更新。通过融合向量化计算引擎,可同时处理属性图与向量图的联合查询,满足 AIGC 时代的多模态分析需求,并支持自然语言直接生成图查询语句的颠覆性体验。行业应用前景正呈现爆发态势,未来图数据仓库将承载多数企业关联数据分析负载,成为智能决策的核心引擎。</font></p>]]></content>
</entry>
<entry>
- <title type="html"><![CDATA[流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理]]></title>
+ <title type="html"><![CDATA[流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理]]></title>
<id>https://apache.github.io/zh-CN/blog/32</id>
<link href="https://apache.github.io/zh-CN/blog/32"/>
<updated>2025-04-03T00:00:00.000Z</updated>
- <summary type="html"><![CDATA[2025 年 3 月发布了流式图计算引擎 GeaFlow v0.6.4,新版本实现了多个重要特性更新,包括:]]></summary>
- <content type="html"><![CDATA[<p><font style="color:rgb(63, 63, 63)">2025 年 3 月发布了流式图计算引擎 GeaFlow v0.6.4,新版本实现了多个重要特性更新,包括:</font></p>
+ <summary type="html"><![CDATA[2025 年 3 月发布了流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4,新版本实现了多个重要特性更新,包括:]]></summary>
+ <content type="html"><![CDATA[<p><font style="color:rgb(63, 63, 63)">2025 年 3 月发布了流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4,新版本实现了多个重要特性更新,包括:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font></li>
@@ -462,7 +461,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">支持增量匹配算子</font></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-新增功能">✨ 新增功能<a href="https://apache.github.io/zh-CN/blog/32#-%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="✨ 新增功能的直接链接" title="✨ 新增功能的直接链接"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="https://apache.github.io/zh-CN/blog/32#geaflow-%E5%9B%BE%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81-paimon-%E6%95%B0%E6%8D%AE%E6%B9%96%E5%AE%9E%E9%AA%8C%E6%80%A7%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="geaflow-图存储扩展支持-paimon-数据湖实验性功能的直接链接" title="geaflow-图存储扩 [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="https://apache.github.io/zh-CN/blog/32#apache-geaflow-incubating-%E5%9B%BE%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81-paimon-%E6%95%B0%E6%8D%AE%E6%B9%96%E5%AE%9E%E9%AA%8C%E6%80%A7%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="a [...]
<p><font style="color:rgb(63, 63, 63)">为提升 GeaFlow 数据存储系统的扩展性、实时数据处理能力及成本效率,本次更新加入了对 Apache Paimon 的支持。Paimon 作为新一代流式数据湖存储格式,在设计理念、功能特性上,与 GeaFlow 之前使用的 RocksDB 存在许多差异:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">支持对象存储/HDFS 分布式存储,天然适配云原生环境。因此可实现存储与计算分离,降低硬件依赖,支持弹性扩展。</font></li>
@@ -475,7 +474,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(63, 63, 63)">当前为实验性功能,仅支持使用本地文件系统作为 paimon 的存储后端,且暂不支持 recover 能力,暂不支持动态图数据存储。</font></li>
<li><font style="color:rgb(63, 63, 63)">通过配置<code>geaflow.store.paimon.options.warehouse</code>参数来指定存储路径,默认路径为"file:///tmp/paimon/"。</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">当前 GeaFlow 的存储架构图如下。</font></p>
+<p><font style="color:rgb(63, 63, 63)">当前 Apache GeaFlow (Incubating) 的存储架构图如下。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<p><font style="color:rgb(63, 63, 63)"></font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图数仓能力扩展支持对图中的实体进行关系型访问"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font><a href="https://apache.github.io/zh-CN/blog/32#%E5%9B%BE%E6%95%B0%E4%BB%93%E8%83%BD%E5%8A%9B%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81%E5%AF%B9%E5%9B%BE%E4%B8%AD%E7%9A%84%E5%AE%9E%E4%BD%93%E8%BF%9B%E8%A1%8C%E5%85%B3%E7%B3%BB%E5%9E%8B%E8%AE%BF%E9%97%AE" class="hash-link" aria-label="图数仓能力扩展支持对图中的实体进行关系型访问的直接链接" [...]
@@ -551,16 +550,15 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<link href="https://apache.github.io/zh-CN/blog/31"/>
<updated>2025-03-25T00:00:00.000Z</updated>
<summary type="html"><![CDATA[作者:坤羽;审校:东朔。]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png" width="2518" height="1104" class="img_ev3q"></p>
-<blockquote>
+ <content type="html"><![CDATA[<blockquote>
<p>作者:坤羽;审校:东朔。</p>
</blockquote>
-<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,GeaFlow 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
+<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,Apache GeaFlow (Incubating) 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
<p>当今时代,<font style="color:rgb(51, 51, 51)">数据正以前所未有的速度和规模产生,对海量数据进行实时处理在异常检测、搜索推荐、金融交易等各个领域都有着广泛的应用。流计算</font><font style="color:rgb(0, 0, 0)">作为最主要的实时数据处理技术也变得越来越重要。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<p><font style="color:rgb(0, 0, 0)">与批处理需要等待数据全部到齐才进行计算不同,流计算将持续生成的数据流划分成微批,对每个微批的数据进行增量计算。这样的计算特性使得流计算具有高吞吐、低延迟的特性。常见的流计算引擎包括 Flink、Spark Streaming 等,他们都采用表的方式处理流中的数据。随着流计算应用的深入,越来越多的计算场景涉及到大数据之间关联关系的计算,此时基于表的流计算引擎性能会大幅下降。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<p><font style="color:rgb(0, 0, 0)">蚂蚁图计算团队开源的流图计算引擎</font>GeaFlow<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
+<p><font style="color:rgb(0, 0, 0)">开源的流图计算引擎</font>Apache GeaFlow (Incubating)<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流计算引擎flink"><font style="color:rgb(0, 0, 0)">流计算引擎:Flink</font><a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Eflink" class="hash-link" aria-label="流计算引擎flink的直接链接" title="流计算引擎flink的直接链接"></a></h2>
<p><font style="color:rgb(0, 0, 0)">Flink 是经典的基于表的流处理引擎,他将输入的数据流切分成微批,每次计算当前批次的数据。在计算过程中,Flink 将计算任务翻译成由 map、filter、join 等基础算子组成的有向图,每个算子都有他的上游输入和下游输出。增量数据经过所有算子的计算后输出当前批次的结果。</font></p>
@@ -579,45 +577,45 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(0, 0, 0)">join 计算主要的性能瓶颈就在遍历 RightStateView。LeftStateView 和 RightStateView 实际上存储 join 的左表和右表。随着数据不断输入,StateView 中的数据量持续膨胀,最终导致遍历的耗时急剧上升,严重影响系统性能。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join 算子实现</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎geaflow">流图计算引擎:GeaFlow<a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E5%9B%BE%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Egeaflow" class="hash-link" aria-label="流图计算引擎:GeaFlow的直接链接" title="流图计算引擎:GeaFlow的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎apache-geaflow-incubating">流图计算引擎:Apache GeaFlow (Incubating)<a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E5%9B%BE%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Eapache-geaflow-incubating" class="hash-link" aria-label="流图计算引擎:Apache GeaFlow (Incubating)的直接链接" title="流图计算引擎:Apache GeaFlow (Incubating)的直接链接"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图计算流图">图计算&流图<a href="https://apache.github.io/zh-CN/blog/31#%E5%9B%BE%E8%AE%A1%E7%AE%97%E6%B5%81%E5%9B%BE" class="hash-link" aria-label="图计算&流图的直接链接" title="图计算&流图的直接链接"></a></h3>
<p>图计算是一种基于图数据格式的计算范式,其中图 G(V,E)由点集合 V 和边集合 E 构成,边代表了数据之间的关联关系。以公开数据集 web-Google 为例,其中每一行数据由两个数字组成,代表了两个页面之间的跳转关系。如下图所示,左侧是原始数据,常规的数据建模方式是建立一张包含两列数据的表,而图的建模方式是将网页作为点,将页面的跳转关系作为边,构成一张跳转网络图。在表的建模方式中,关联关系的计算是通过表的 join 实现的,join 需要遍历左表或者右表。而在图计算中,关联关系被直接存储在边中,省去了遍历的过程。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>表建模 vs. 图建模</p>
<p><font style="color:rgb(0, 0, 0)">流图是图在流场景中的应用,他依据数据流对图的更新将图分成历史图和增量图两个部分。例如在上图中,假设第一行和第二行数据已经输入并完成相应计算,当前处理第三行数据。此时历史图就是由前两行数据建模得到,而增量图是由第三行数据组成的图,两者合并起来就得到完整的图。在流图上应用增量图算法,可以高效完成计算任务,实现实时计算。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-架构"><font style="color:rgb(0, 0, 0)">GeaFlow 架构</font><a href="https://apache.github.io/zh-CN/blog/31#geaflow-%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="geaflow-架构的直接链接" title="geaflow-架构的直接链接"></a></h3>
-<p>GeaFlow 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-架构"><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 架构</font><a href="https://apache.github.io/zh-CN/blog/31#apache-geaflow-incubating-%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="apache-geaflow-incubating-架构的直接链接" title="apache-geaflow-incubating-架构的直接链接"></a></h3>
+<p>Apache GeaFlow (Incubating) 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a-13fb01ce0fc0e6e24394158fe6f6d7ce.png" width="2172" height="882" class="img_ev3q"></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 增量计算</font></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 计算框架是以点为中心的迭代计算模型。他以增量图中的点作为第一轮迭代的起点。在每一轮迭代中,每个点都独立维护自身的状态,根据与每个点关联的历史图和增量图完成当前迭代轮次的计算,最后将计算结果通过消息传递给邻居点,开启下一轮迭代。</font></p>
-<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
+<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
<p><font style="color:rgb(0, 0, 0)">下图是两跳场景的描述。在第一轮迭代,增量边 B->C 分别构建入向路径和出向路径,将他们分别发送给点 B 和点 C。在第二轮迭代,B 收到入向路径,并加上当前点的入边形成 2 跳入向路径,发送给点 B。同样点 C 也收到出向路径,加上当前的出边形成 2 跳出向路径,发送给点 B。最后一轮迭代在 B 点将收到的出向和入向路径整合成新增的路径。可以看到,和 Flink 中需要查找所有的历史关系不同,GeaFlow 采用基于流图的增量图算法,计算量和图中的增量路径成正比。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>两跳增量路径计算</p>
<p><font style="color:rgb(0, 0, 0)">上述图算法已经集成到 GeaFlow 的 IncKHop 算子中,用户可以直接通过 DSL 调用。</font></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-性能测试">GeaFlow 性能测试<a href="https://apache.github.io/zh-CN/blog/31#geaflow-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="GeaFlow 性能测试的直接链接" title="GeaFlow 性能测试的直接链接"></a></h2>
-<p>为了验证 GeaFlow 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-性能测试">Apache GeaFlow (Incubating) 性能测试<a href="https://apache.github.io/zh-CN/blog/31#apache-geaflow-incubating-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="Apache GeaFlow (Incubating) 性能测试的直接链接" title="Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
+<p>为了验证 Apache GeaFlow (Incubating) 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
<p>实验结果如图所示,横坐标是分别是一跳关系、两跳关系、三跳关系、四跳关系,纵坐标是处理完所有数据的耗时,采用对数指标。可以看到在一跳、两跳场景中,Flink 的性能要好于 GeaFlow,这是因为在一跳、两跳场景中参与 join 计算的数据量比较小,join 需要遍历的左表和右表都很小,遍历本身耗时短,而且 Flink 的计算框架可以缓存 join 的历史计算结果。但是到了三跳、四跳场景时候,由于计算复杂度的上升,join 算子需要遍历的表迅速膨胀,带来计算性能的急剧下降,甚至四跳场景超过一天也无法完成计算。而 GeaFlow<font style="color:rgb(0, 0, 0)">采用基于流图增量图算法,计算耗时只和增量路径相关,和历史的关联关系计算结果无关,所以性能明显优于 Flink。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221-271813564bc0981ca8d84a83398b49fb.png" width="2922" height="1802" class="img_ev3q"></p>
<p>k-Hop 计算性能对比</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="https://apache.github.io/zh-CN/blog/31#%E6%80%BB%E7%BB%93%E5%92%8C%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
<p>传统的 Flink 等流计算引擎在计算关联关系时需要用到 join 算子,join 算子需要遍历全量的历史数据,这使得他们在大数据关联计算场景中性能不佳。GeaFlow 引擎通过支持流图计算框架,将图计算引入到流计算中,采用增量图计算的方法大大提升了实时数据的处理系性能。</p>
-<p>目前 GeaFlow 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>目前 Apache GeaFlow (Incubating) 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持增量 k-Core 算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>支持增量最小生成树算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>支持增量 k-Core 算法。(<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>支持增量最小生成树算法。(<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="https://apache.github.io/zh-CN/blog/31#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google 数据集地址:<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>增量 k-Hop 算法实现源码:<a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>增量 k-Hop 算法实现源码:<a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
</ol>]]></content>
</entry>
<entry>
@@ -626,13 +624,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<link href="https://apache.github.io/zh-CN/blog/27"/>
<updated>2025-03-11T00:00:00.000Z</updated>
<summary type="html"><![CDATA[作者:张奇]]></summary>
- <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png" width="1024" height="576" class="img_ev3q"></p>
-<blockquote>
+ <content type="html"><![CDATA[<blockquote>
<p>作者:张奇</p>
</blockquote>
<p>众所周知,当我们需要对数据做关联性分析的时候,一般会采用表连接(SQL join)的方式完成。但是 SQL join 时的笛卡尔积计算需要维护大量的中间结果,从而对整体的数据分析性能带来巨大影响。相比而言,基于图的方式维护数据的关联性,原本的关联性分析可以转换为图上的遍历操作,从而大幅降低数据分析的成本。</p>
<p>然而,随着数据规模的不断增长,以及对数据处理更强的实时性需求,如何高效地解决大规模图数据上的实时计算问题,就变得越来越紧迫。传统的计算引擎,如 Spark、Flink 对于图数据的处理已经逐渐不能满足业务日益增长的诉求,因此设计一套面向大规模图数据的实时处理引擎,将会对大数据处理技术革新带来巨大的帮助。</p>
-<p>蚂蚁图计算团队开源的流图计算引擎<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 GeaFlow 在动态图上的计算性能表现。</p>
+<p>开源的流图计算引擎<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 Apache GeaFlow (Incubating) 在动态图上的计算性能表现。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-图计算">1. 图计算<a href="https://apache.github.io/zh-CN/blog/27#1-%E5%9B%BE%E8%AE%A1%E7%AE%97" class="hash-link" aria-label="1. 图计算的直接链接" title="1. 图计算的直接链接"></a></h2>
<p><font style="color:rgb(51, 51, 51)">图是一种数学结构,由节点和边组成。节点代表各种实体,比如人、地点、事物或概念,而边则表示这些节点之间的关系。例如:</font></p>
<ul>
@@ -661,16 +658,16 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p><font style="color:rgb(64, 64, 64)">但这种方案有一个比较大的缺点,就是它存在着重复计算的问题,假如我们需要以 1 小时一个窗口做一次计算,那么在使用 Spark 进行计算时,不仅要将当前窗口的数据计算进去,历史所有数据也需要进行回溯,存在大量重复计算,这样做效率不高,因此我们需要一套能够进行增量计算的图计算方案。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算geaflow">4. 动态图增量计算:GeaFlow<a href="https://apache.github.io/zh-CN/blog/27#4-%E5%8A%A8%E6%80%81%E5%9B%BE%E5%A2%9E%E9%87%8F%E8%AE%A1%E7%AE%97geaflow" class="hash-link" aria-label="4. 动态图增量计算:GeaFlow的直接链接" title="4. 动态图增量计算:GeaFlow的直接链接"></a></h2>
-<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 GeaFlow(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算apache-geaflow-incubating">4. 动态图增量计算:Apache GeaFlow (Incubating)<a href="https://apache.github.io/zh-CN/blog/27#4-%E5%8A%A8%E6%80%81%E5%9B%BE%E5%A2%9E%E9%87%8F%E8%AE%A1%E7%AE%97apache-geaflow-incubating" class="hash-link" aria-label="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接" title="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接"></a></h2>
+<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 Apache GeaFlow (Incubating)(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>那么 GeaFlow 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
+<p>那么 Apache GeaFlow (Incubating) 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
<p>这里以 WCC 算法为例,对联通分量算法而言,在一个时间窗口内每条边对应的 src id 和 tar id 对应的顶点会被激活,第一次迭代需要将其 id 信息通知其邻居节点。如果邻居节点收到消息后,发现需要更新自己的信息,那么它需要继续将更新消息通知给它的邻居节点;如果说邻居节点不需要更新自己的信息,那么它就不需要通知其邻居节点,它对应的迭代终止。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0-1c1f991809d12cfdb99fce31a47e532f.png" width="1986" height="802" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-架构简析">5. GeaFlow 架构简析<a href="https://apache.github.io/zh-CN/blog/27#5-geaflow-%E6%9E%B6%E6%9E%84%E7%AE%80%E6%9E%90" class="hash-link" aria-label="5. GeaFlow 架构简析的直接链接" title="5. GeaFlow 架构简析的直接链接"></a></h2>
-<p>GeaFlow 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-架构简析">5. Apache GeaFlow (Incubating) 架构简析<a href="https://apache.github.io/zh-CN/blog/27#5-apache-geaflow-incubating-%E6%9E%B6%E6%9E%84%E7%AE%80%E6%9E%90" class="hash-link" aria-label="5. Apache GeaFlow (Incubating) 架构简析的直接链接" title="5. Apache GeaFlow (Incubating) 架构简析的直接链接"></a></h2>
+<p>Apache GeaFlow (Incubating) 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-性能测试">6. GeaFlow 性能测试<a href="https://apache.github.io/zh-CN/blog/27#6-geaflow-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="6. GeaFlow 性能测试的直接链接" title="6. GeaFlow 性能测试的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-apache-geaflow-incubating-性能测试">6. Apache GeaFlow (Incubating) 性能测试<a href="https://apache.github.io/zh-CN/blog/27#6-apache-geaflow-incubating-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="6. Apache GeaFlow (Incubating) 性能测试的直接链接" title="6. Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
<p>为了验证 GeaFlow 的增量图计算性能,我们设计了这样的实验。一批数据按照固定时间窗口实时输入到计算引擎中,我们分别用 Spark 和 GeaFlow 对全图做联通分量算法计算,比较两者计算耗时。实验在 3 台 24 核内存 128G 的机器上开展,使用的数据集是公开数据集<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">soc-Livejournal</a>,测试的图算法是弱联通分量算法。我们以 50w 条数据作为一个计算窗口,每输入到引擎中 50w 条数据,就触发一次图计算。</p>
<p>Spark 作为批处理引擎,对于每一批窗口来的数据,不管窗口规模是大是小,都需要对增量图数据连同历史图数据进行全量计算。在 Spark 上,可以直接调用 Spark GraphX 内部内置的 WCC 算法进行计算。</p>
<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">object SparkTest {</span><br></span><span class="token-line" style="color:#bfc7d5"><span [...]
@@ -685,19 +682,19 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(6, 6, 7)">GeaFlow 通过增量计算避免了全量数据的重复处理,计算效率更高,计算时间更短性能不明显下降。</font></li>
<li><font style="color:rgb(6, 6, 7)">GeaFlow 支持 SQL+GQL 混合处理语言,更适合开发复杂的图数据处理任务。</font></li>
</ol>
-<p>GeaFlow 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>Apache GeaFlow (Incubating) 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
-<li>优化 GQL match 语句性能。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
-<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
+<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/apache/geaflow/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
+<li>优化 GQL match 语句性能。(<a href="https://github.com/apache/geaflow/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
+<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/apache/geaflow/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="https://apache.github.io/zh-CN/blog/27#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal 数据集地址:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
</ol>]]></content>
</entry>
</feed>
\ No newline at end of file
diff --git a/zh-CN/blog/index.html b/zh-CN/blog/index.html
index b294460..dac1799 100644
--- a/zh-CN/blog/index.html
+++ b/zh-CN/blog/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
-<title data-rh="true">Blog | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_locale" content="zh-CN"><meta data-rh="true" n [...]
+<title data-rh="true">Blog | GeaFlow</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://apache.github.io/zh-CN/blog"><meta data-rh="true" property="og:locale" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_locale" content="zh-CN"><meta data-rh="true" n [...]
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="GeaFlow Atom Feed">
@@ -15,22 +15,21 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
-<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
<p><strong><font style="color:rgb(63, 63, 63)"><br>
</font></strong><font style="color:rgb(63, 63, 63)"> 在当今数字化时代,数据已经成为驱动决策和创新的核心资源。然而,数据不仅仅是静态的数字或关系,它会随着时间不断变化。无论是股票市场的实时波动、社交网络中的动态互动,还是物联网设备的状态更新,时间维度都是理解这些数据的关键,例如:</font></p>
<ul>
<li>在金融领域,交易的时间顺序决定了资金流动的方向。</li>
<li>在社交网络中,用户的互动行为(如点赞、评论)随时间演变。</li>
<li>在物联网中,传感器采集的数据带有时间戳,反映了设备状态的变化。</li>
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 GeaFlow 时序能力探秘——让时间数据焕发新生! 的全文" href="/zh-CN/blog/29"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/28">流图计算之增量match原理与应用</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-06-03T00:00:00.000Z">2025年6月3日</time></div></header><div class="markdown"><p><img decoding="async" loading="lazy" src="/z [...]
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="#问题背景" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Apache GeaFlow (Incubating) 时序能力探秘——让时间数据焕发新生! 的全文" href="/zh-CN/blog/29"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/28">流图计算之增量match原理与应用</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-06-03T00:00:00.000Z">2025年6月3日</time></div></header><div class="markdown"><h2 class="anchor anchorWit [...]
<p>在流式计算中,数据往往不是全部一批到来,而会源源不断地进行输入和计算,在图计算/图查询领域,也存在类似的场景,图的点边不断地从数据源读取,进行构图,从而形成增量图。在增量图查询中,图随时发生着变化,在不同的图版本中,进行图查询的结果也会有所不同。对于某一次新增的点边,构成了一个新的版本的图,如果重新对全图(即当前所有点边)进行图遍历,开销较大,并且也会和历史数据有重复。由于历史的数据已经计算过一遍,理想情况下,只需要对增量所影响的部分进行计算/查询,而不需要对全图重新进行查询。</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 流图计算之增量match原理与应用 的全文" href="/zh-CN/blog/28"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="
title_f1Hy"><a [...]
<blockquote>
<p>作者:林力韬</p>
@@ -40,25 +39,23 @@
<ul>
<li><strong>金融反欺诈场景</strong>:在反欺诈分析中,复杂的多层资金链条挖掘往往依赖多表 JOIN 操作,进行复杂多跳的追踪。分析师团队耗费数天编写 SQL 脚本,最终查询耗时可达小时级别——而此时资金已完成洗白转移。这揭示出传统数仓的深层矛盾:<strong>关系型范式与真实世界网状业务逻辑的错位</strong>,常面临查询耗时高、查询逻辑复杂等挑战。</li>
<li><strong>营销分析场景</strong>:在分析营销业务关系时,试图通过用户社交关系链挖掘潜在 VIP 客户,往往要用到专业的数分技能。尽管当下借助诸如 DeepInsight AI Copilot 等工具,可以通过大模型快速生成至少能打 80 分的维度和度量,集成到自助分析面板。但通常这些分析都涉及深层次的用户关联,<strong>在 SQL 中直观表达性能较差</strong>。</li>
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Join性能变革:图数仓让SQL分析快人一步 的全文" href="/zh-CN/blog/30"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/32">流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-04-03T00:00:00.000Z">2025年4月3日</time></div></header><div class="markdown"><p><font style="color [...]
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Join性能变革:图数仓让SQL分析快人一步 的全文" href="/zh-CN/blog/30"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/32">流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-04-03T00:00:00.000Z">2025年4月3日</time></div></header><div class="markdown">< [...]
<ul>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">统一的内存管理器支持</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">RBO 规则扩展:新增 MatchEdgeLabelFilterRemoveRule 和 MatchIdFilterSimplifyRule</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">支持增量匹配算子</font></li>
-</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理 的全文" href="/zh-CN/blog/32"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/31">Graph4Stream:基于图的流计算加速</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-03-25T00:00:00.000Z">2025年3月25日</time></div></header><div class="markdown"><p><img decoding="as [...]
-<blockquote>
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理 的全文" href="/zh-CN/blog/32"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/31">Graph4Stream:基于图的流计算加速</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-03-25T00:00:00.000Z">2025年3月25日</time></div></header><div class="markdown"> [...]
<p>作者:坤羽;审校:东朔。</p>
</blockquote>
-<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,GeaFlow 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
-<p>当今时代,<font style="color:rgb(51, 51, 51)">数据正以前所未有的速度和规模产生,对海量数据进行实时处理在异常检测、搜索推荐、金融交易等各个领域都有着广泛的应用。流计算</font><font style="color:rgb(0, 0, 0)">作为最主要的实时数据处理技术也变得越来越重要。</font></p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Graph4Stream:基于图的流计算加速 的全文" href="/zh-CN/blog/31"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/27">Stream4Graph:动态图上的增量计算</a></h2><div class=" [...]
-<blockquote>
+<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,Apache GeaFlow (Incubating) 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
+<p>当今时代,<font style="color:rgb(51, 51, 51)">数据正以前所未有的速度和规模产生,对海量数据进行实时处理在异常检测、搜索推荐、金融交易等各个领域都有着广泛的应用。流计算</font><font style="color:rgb(0, 0, 0)">作为最主要的实时数据处理技术也变得越来越重要。</font></p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Graph4Stream:基于图的流计算加速 的全文" href="/zh-CN/blog/31"><b>阅读更多</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/zh-CN/blog/27">Stream4Graph:动态图上的增量计算</a></h2><div class=" [...]
<p>作者:张奇</p>
</blockquote>
<p>众所周知,当我们需要对数据做关联性分析的时候,一般会采用表连接(SQL join)的方式完成。但是 SQL join 时的笛卡尔积计算需要维护大量的中间结果,从而对整体的数据分析性能带来巨大影响。相比而言,基于图的方式维护数据的关联性,原本的关联性分析可以转换为图上的遍历操作,从而大幅降低数据分析的成本。</p>
<p>然而,随着数据规模的不断增长,以及对数据处理更强的实时性需求,如何高效地解决大规模图数据上的实时计算问题,就变得越来越紧迫。传统的计算引擎,如 Spark、Flink 对于图数据的处理已经逐渐不能满足业务日益增长的诉求,因此设计一套面向大规模图数据的实时处理引擎,将会对大数据处理技术革新带来巨大的帮助。</p>
-<p>蚂蚁图计算团队开源的流图计算引擎<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 GeaFlow 在动态图上的计算性能表现。</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Stream4Graph:动态图上的增量计算 的全文" href="/zh-CN/blog/27"><b>阅读更多</b></a></div></footer></article><nav class="pagination-nav" aria-label="博文列表分页导航"></nav> [...]
+<p>开源的流图计算引擎<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 Apache GeaFlow (Incubating) 在动态图上的计算性能表现。</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="阅读 Stream4Graph:动态图上的增量计算 的全文" href="/zh-CN/blog/27"><b>阅读更多</b></a></div></footer></article><nav class="pagination-nav" aria-label="博 [...]
<p>Copyright © 2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
<p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
</body>
diff --git a/zh-CN/blog/rss.xml b/zh-CN/blog/rss.xml
index 1ae568a..bd7c9b8 100644
--- a/zh-CN/blog/rss.xml
+++ b/zh-CN/blog/rss.xml
@@ -9,7 +9,7 @@
<generator>https://github.com/jpmonette/feed</generator>
<language>zh-CN</language>
<item>
- <title><![CDATA[GeaFlow 时序能力探秘——让时间数据焕发新生!]]></title>
+ <title><![CDATA[Apache GeaFlow (Incubating) 时序能力探秘——让时间数据焕发新生!]]></title>
<link>https://apache.github.io/zh-CN/blog/29</link>
<guid>https://apache.github.io/zh-CN/blog/29</guid>
<pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate>
@@ -35,13 +35,13 @@
<li><strong><font style="color:rgb(63, 63, 63)">缺乏灵活性</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)"> 很多工具只支持单一类型的数据分析,无法同时处理实时流数据和历史数据。</font></p>
-<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,GeaFlow 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-geaflow"><font style="color:rgb(63, 63, 63)">什么是 GeaFlow?</font><font style="color:rgb(63, 63, 63)"></font><a href="https://apache.github.io/zh-CN/blog/29#%E4%BB%80%E4%B9%88%E6%98%AF-geaflow" class="hash-link" aria-label="什么是-geaflow的直接链接" title="什么是-geaflow的直接链接"></a></h2>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
+<p><font style="color:rgb(63, 63, 63)"> 为了解决上述问题,Apache GeaFlow (Incubating) 创新性地提出了时序图计算的概念。作为一款专为动态图数据处理设计的分布式流图计算引擎,GeaFlow 能够高效应对动态数据带来的挑战。针对实时变化的图结构,用户可以轻松进行图遍历、图匹配和图计算等操作,从而满足复杂场景下的分析需求。通过结合时间维度与动态图处理能力,GeaFlow 为实时数据分析提供了全新的解决方案,帮助用户更精准地挖掘动态数据中的价值。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-apache-geaflow-incubating"><font style="color:rgb(63, 63, 63)">什么是 Apache GeaFlow (Incubating)?</font><font style="color:rgb(63, 63, 63)"></font><a href="https://apache.github.io/zh-CN/blog/29#%E4%BB%80%E4%B9%88%E6%98%AF-apache-geaflow-incubating" class="hash-link" aria-label="什么是-apache-geaflow-incubating的直接链接" title="什么是-apache-geaflow-incubating的直接链接"></a></h2>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 是一个强大的分布式计算平台,结合了图计算和流处理的优势,能够高效处理动态图和时序数据。它不仅支持复杂的图算法,还具备实时分析能力,适用于各种动态场景。其主要特点包括:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">分布式架构</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 基于分布式计算框架,能够高效处理超大规模的动态图数据(例如数十亿节点和边)。通过分区和副本机制,GeaFlow 确保了系统的高可用性和可扩展性。</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">流图与时序图的无缝集成</font></li>
</ul>
@@ -89,7 +89,7 @@
<li><strong><font style="color:rgb(63, 63, 63)">时序图增强了流图的分析能力</font></strong></li>
</ul>
<p><font style="color:rgb(63, 63, 63)">通过引入时间戳,时序图使得流图能够进行更复杂的分析,例如时间窗口分析、趋势预测等。</font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-geaflow-的实现细节"><strong>4. GeaFlow 的实现细节</strong><a href="https://apache.github.io/zh-CN/blog/29#4-geaflow-%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%BB%86%E8%8A%82" class="hash-link" aria-label="4-geaflow-的实现细节的直接链接" title="4-geaflow-的实现细节的直接链接"></a></h3>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-apache-geaflow-incubating-的实现细节"><strong>4. Apache GeaFlow (Incubating) 的实现细节</strong><a href="https://apache.github.io/zh-CN/blog/29#4-apache-geaflow-incubating-%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%BB%86%E8%8A%82" class="hash-link" aria-label="4-apache-geaflow-incubating-的实现细节的直接链接" title="4-apache-geaflow-incubating-的实现细节的直接链接"></a></h3>
<p><font style="color:rgb(63, 63, 63)">GeaFlow 通过以下技术手段实现了流图与时序图的无缝结合:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">时间戳分配机制</font></strong><font style="color:rgb(63, 63, 63)"></font></li>
@@ -287,14 +287,14 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</font></ol><font style="color:rgb(63, 63, 63)">
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="10-技术优势"><strong>10. 技术优势</strong><a href="https://apache.github.io/zh-CN/blog/29#10-%E6%8A%80%E6%9C%AF%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="10-技术优势的直接链接" title="10-技术优势的直接链接"></a></h3>
<ul>
-<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
+<li><strong><font style="color:rgb(63, 63, 63)">实时性</font></strong><font style="color:rgba(0, 0, 0, 0.9)">:</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持毫秒级的数据流处理,确保用户关系图始终是最新的。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">时间敏感性:</font></strong><font style="color:rgb(63, 63, 63)">通过时间戳字段,精确管理好友关系的时间顺序。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">灵活性:</font></strong><font style="color:rgb(63, 63, 63)">SQL 驱动的开发模式,降低了开发门槛,提升了开发效率。</font></li>
<li><strong><font style="color:rgb(63, 63, 63)">可拓展性:</font></strong><font style="color:rgb(63, 63, 63)">支持大规模动态图的增量计算,能够轻松应对社交平台的海量用户数据。</font></li>
</ul>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">GeaFlow 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="https://apache.github.io/zh-CN/blog/29#geaflow-%E6%97%B6%E5%BA%8F%E8%83%BD%E5%8A%9B%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BA%AE%E7%82%B9" class="hash-link" aria-label="geaflow-时序能力的核心亮点的直接链接" title="geaflow-时序能力的核心亮点的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-时序能力的核心亮点"><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 时序能力的核心亮点</font><font style="color:rgba(0, 0, 0, 0.9)"></font><a href="https://apache.github.io/zh-CN/blog/29#apache-geaflow-incubating-%E6%97%B6%E5%BA%8F%E8%83%BD%E5%8A%9B%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BA%AE%E7%82%B9" class="hash-link" aria-label="apache-geaflow-incubating-时序能力的核心亮点的直接链接" title="apache-geaflow-incubating-时序能力的核心亮点的直接链接"> [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-时间感知的数据处理"><strong>1. 时间感知的数据处理</strong><a href="https://apache.github.io/zh-CN/blog/29#1-%E6%97%B6%E9%97%B4%E6%84%9F%E7%9F%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86" class="hash-link" aria-label="1-时间感知的数据处理的直接链接" title="1-时间感知的数据处理的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。GeaFlow 支持基于时间窗口的分析,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">每条数据都带有时间戳,能够精确记录事件发生的时间。Apache GeaFlow (Incubating) 支持基于时间窗口的分析,例如:</font></p>
<ul>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">最近 5 分钟的趋势变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)">
@@ -302,25 +302,25 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
</li>
<li>
<p><strong><font style="color:rgb(63, 63, 63)">过去一天的动态模式</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
-</font><font style="color:rgb(63, 63, 63)">GeaFlow 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
+</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 支持长时间跨度的分析,帮助用户发现长期趋势。例如,在电商推荐系统中,分析用户在过去一天内的购买行为。</font></p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-动态图与时序结合"><strong>2. 动态图与时序结合</strong><a href="https://apache.github.io/zh-CN/blog/29#2-%E5%8A%A8%E6%80%81%E5%9B%BE%E4%B8%8E%E6%97%B6%E5%BA%8F%E7%BB%93%E5%90%88" class="hash-link" aria-label="2-动态图与时序结合的直接链接" title="2-动态图与时序结合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 将图结构与时间维度结合,能够捕捉图中关系的演变。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">社交网络中好友关系的变化</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在社交网络中,用户的好友关系可能会随着时间发生变化。GeaFlow 可以动态更新图结构,捕捉这些变化。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融交易网络中的资金流动</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融交易网络中,资金流动是一个动态过程。GeaFlow 可以实时追踪资金流动路径,并识别潜在的风险点。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-实时与历史数据的无缝融合"><strong>3. 实时与历史数据的无缝融合</strong><a href="https://apache.github.io/zh-CN/blog/29#3-%E5%AE%9E%E6%97%B6%E4%B8%8E%E5%8E%86%E5%8F%B2%E6%95%B0%E6%8D%AE%E7%9A%84%E6%97%A0%E7%BC%9D%E8%9E%8D%E5%90%88" class="hash-link" aria-label="3-实时与历史数据的无缝融合的直接链接" title="3-实时与历史数据的无缝融合的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 不仅支持实时流数据的处理,还能结合历史数据进行对比分析。这种能力特别适合需要长期趋势分析和短期实时监控的场景。例如:</font></p>
<ul>
<li><strong><font style="color:rgb(63, 63, 63)">物联网设备监控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"></font></li><font style="color:rgba(0, 0, 0, 0.9)">
</font></ul><font style="color:rgba(0, 0, 0, 0.9)">
</font><p><font style="color:rgba(0, 0, 0, 0.9)"></font><font style="color:rgb(63, 63, 63)">在物联网场景中,GeaFlow 可以实时监控设备状态,同时结合历史数据,预测设备可能出现的故障。</font><strong><font style="color:rgb(63, 63, 63)"></font></strong> - <strong><font style="color:rgb(63, 63, 63)">金融风控</font></strong><font style="color:rgba(0, 0, 0, 0.9)"><br>
</font><font style="color:rgb(63, 63, 63)">在金融风控场景中,GeaFlow 可以实时监控交易网络,同时结合历史数据,识别异常行为或潜在风险。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-丰富的内置算法"><strong>4. 丰富的内置算法</strong><a href="https://apache.github.io/zh-CN/blog/29#4-%E4%B8%B0%E5%AF%8C%E7%9A%84%E5%86%85%E7%BD%AE%E7%AE%97%E6%B3%95" class="hash-link" aria-label="4-丰富的内置算法的直接链接" title="4-丰富的内置算法的直接链接"></a></h3>
-<p><font style="color:rgb(63, 63, 63)">GeaFlow 提供针对时序数据优化的算法,例如:</font></p>
+<p><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 提供针对时序数据优化的算法,例如:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">最短路径</font></li>
<li><font style="color:rgb(63, 63, 63)">弱联通分量</font></li>
@@ -331,7 +331,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(63, 63, 63)">数据的动态变化蕴藏着无限价值,而 GeaFlow 的时序能力正是解锁这一价值的钥匙。无论您是数据分析新手,还是希望提升动态数据处理能力的专业人士,GeaFlow 都将为您提供强大的支持。</font></p>
<p><font style="color:rgb(63, 63, 63)">立即下载 GeaFlow,亲身体验其时序能力的强大之处吧!让我们一起探索时间数据的无限可能!</font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="术语font-stylecolorrgb73-80-87font"><font style="color:rgb(63, 63, 63)">术语</font><strong><font style="color:rgb(73, 80, 87)"></font></strong><a href="https://apache.github.io/zh-CN/blog/29#%E6%9C%AF%E8%AF%ADfont-stylecolorrgb73-80-87font" class="hash-link" aria-label="术语font-stylecolorrgb73-80-87font的直接链接" title="术语font-stylecolorrgb73-80-87font的直接链接"></a></h2>
-<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 GeaFlow 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
+<p><strong><font style="color:rgb(63, 63, 63)">DSL: </font></strong><font style="color:rgb(63, 63, 63)">Domain-Specific Language。融合 DSL 是 Apache GeaFlow (Incubating) 提供的图表一体的数据分析语言,支持标准 SQL+ISO/GQL 进行图表分析.通过融合 DSL 可以对表数据做关系运算处理,也可以对图数据做图匹配和图算法计算,同时也支持同时图表数据的联合处理。</font></p>
</font></font></font>]]></content:encoded>
</item>
<item>
@@ -340,13 +340,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<guid>https://apache.github.io/zh-CN/blog/28</guid>
<pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate>
<description><![CDATA[问题背景]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1743162676746-973d8e75-11b5-43d7-8832-724e7332b964-641348051a356f1885ea6c9a3a45fb64.png" width="3620" height="2018" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="https://apache.github.io/zh-CN/blog/28#%E9%97%AE%E9%A2%98%E8%83%8C%E6%99%AF" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
+ <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题背景">问题背景<a href="https://apache.github.io/zh-CN/blog/28#%E9%97%AE%E9%A2%98%E8%83%8C%E6%99%AF" class="hash-link" aria-label="问题背景的直接链接" title="问题背景的直接链接"></a></h2>
<p>在流式计算中,数据往往不是全部一批到来,而会源源不断地进行输入和计算,在图计算/图查询领域,也存在类似的场景,图的点边不断地从数据源读取,进行构图,从而形成增量图。在增量图查询中,图随时发生着变化,在不同的图版本中,进行图查询的结果也会有所不同。对于某一次新增的点边,构成了一个新的版本的图,如果重新对全图(即当前所有点边)进行图遍历,开销较大,并且也会和历史数据有重复。由于历史的数据已经计算过一遍,理想情况下,只需要对增量所影响的部分进行计算/查询,而不需要对全图重新进行查询。</p>
-<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Geaflow 是蚂蚁图计算团队开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Geaflow 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
+<p><font style="color:rgb(51, 51, 51)">GQL(Graph Query Language)</font><font style="color:rgb(0, 0, 0)">是国际标准化组织(ISO)为标准化图查询语言所制定的一个标准,</font><font style="color:rgb(51, 51, 51)">用于在图上执行查询的语言。Apache GeaFlow (Incubating) 是开源的流图计算引擎,专注于处理动态变化的图数据,支持大规模、高并发的实时图计算场景。</font>本文将介绍在 Apache GeaFlow (Incubating) 引擎中,对增量图使用 GQL 进行增量 Match 的方法,目的尽可能地只对增量的数据进行查询,避免冗余的全量计算。</p>
<p><img decoding="async" loading="lazy" alt="画板" src="https://apache.github.io/zh-CN/assets/images/1741574572676-ff7e2c56-14d0-470c-b21d-604f928c6ec9-dfc03546ce004eda8a9b5b9f4fa32395.jpeg" width="3017" height="671" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="当前问题">当前问题<a href="https://apache.github.io/zh-CN/blog/28#%E5%BD%93%E5%89%8D%E9%97%AE%E9%A2%98" class="hash-link" aria-label="当前问题的直接链接" title="当前问题的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">Geaflow 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
+<p><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 引擎基于点中心框架(vertex center),通过迭代的方式,每一轮迭代中,每个点向其他点发送消息,并在下一轮收到消息时进行处理、分析。</font>在 Geaflow 的框架中,GQL 的查询需要从前往后进行 Traversal 遍历走图,即从起始节点开始出发,进行扩散,依次进行点边匹配,直到匹配到所需要的查询 pattern。在动态图里场景,如果只使用当前批次新增的点边触发计算,增量的结果会有缺失,例如下面例子所示。</p>
<div style="text-align:center">
<img decoding="async" loading="lazy" src="https://apache.github.io/graph/1741576149930-b169b7da-0600-4fca-b6ad-5eadcfdbff5b.jpeg" alt="画板" height="281" width="486" class="img_ev3q"></div>
<p>如上问题关键在于如果只考虑增量的部分,则点 A1 无法触发计算,但是点 A1 实际包含于增量结果中。所以需要设法让点 A1 参与计算,我们考虑一种从新增点扩充子图的方法,将 a 触发。将整个查询分为 2 个阶段,Evolve 扩展阶段和 Traversal 阶段。在 Evolve 阶段中,从起始点开始,向邻居发送 EvolveMessage,后续的 iteration 中,收到 EvolveMessage 的点加入到 EvolveVertices 集合中。而后的 Traversal 阶段则会使用 EvolveVertices 里的点触发遍历,即表示当前窗口的触发点。</p>
@@ -374,11 +373,11 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li>GQL 语句中没有起始点:如果有起始点,则只需使用起始点计算,不需要扩展子图,例如查询语句 Match(a:person where a.id = 1))return a.name。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="demo-示例">Demo 示例<a href="https://apache.github.io/zh-CN/blog/28#demo-%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="Demo 示例的直接链接" title="Demo 示例的直接链接"></a></h2>
-<p>在 Geaflow 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
+<p>在 Apache GeaFlow (Incubating) 中,通过设置点表或边表的 windowSize 来默认实现增量逻辑,即每一批读入 windowSize 大小的点边数据,来构建增量图。</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">CREATE</span><span class="token plain"> GRAPH modern </span><span [...]
<p>在 Demo 中,设置点 windowSize 为 20,边 windowSize 为 3,即构图时每个 window 导入 20 个点,3 条边。并执行 3 跳的查询语句。<strong>示例 Demo 在 IncrMatchTest.java 中, 可直接运行执行 Demo。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="https://apache.github.io/zh-CN/blog/28#%E6%80%BB%E7%BB%93%E5%92%8C%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
-<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Geaflow 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p>]]></content:encoded>
+<p><font style="color:rgb(0, 0, 0)">在动态图/流图的场景中,图的点边是在实时变化的,在进行图查询时,对于不同窗口数据的图,我们往往可以根据一些历史信息,只对增量的部分触发计算,来进行增量地计算,避免触发全图的遍历。Apache GeaFlow (Incubating) 使用了一种基于子图扩展的增量 match 方法,应用于点中心分布式图计算框架,在动态图场景下进行增量的查询,未来期望实现更多更复杂场景下的增量匹配逻辑。</font></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Join性能变革:图数仓让SQL分析快人一步]]></title>
@@ -424,7 +423,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><strong>图 3 ER 图转图 Schema 示例组图</strong></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">通过算法自动分析多表之间的关联关系并自动构建图的点边,可以为数据从原始存储位置迁移至图数仓提供依据,同时显著消除人工数据建模、人工编写数据导入 DSL 的工作量,无人工介入即可使传统数仓数据快速迁移到图数据仓库中,立即开始分析。</font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-数据通道物化数据交互能力">2. 数据通道:物化数据交互能力<a href="https://apache.github.io/zh-CN/blog/30#2-%E6%95%B0%E6%8D%AE%E9%80%9A%E9%81%93%E7%89%A9%E5%8C%96%E6%95%B0%E6%8D%AE%E4%BA%A4%E4%BA%92%E8%83%BD%E5%8A%9B" class="hash-link" aria-label="2. 数据通道:物化数据交互能力的直接链接" title="2. 数据通道:物化数据交互能力的直接链接"></a></h3>
-<p>类似于传统数据仓库,图数仓基于 GeaFlow 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
+<p>类似于传统数据仓库,图数仓基于 Apache GeaFlow (Incubating) 引擎能力与 TuMaker 成熟的业务平台提供数据<font style="color:rgb(0, 0, 0)">任务编排能力,即将多个数据处理任务(如数据抽取、转换、加载等)按照一定的逻辑顺序组织起来,自动执行的过程。提供可视化界面、任务调度机制、监听事件触发、错误处理、监控与日志、版本控制与回滚、智能调度集群资源等关键能力。</font></p>
<p><font style="color:rgb(0, 0, 0)">在 Schema 转换器的加持下,可以得到从表存储到图存储的物化方案,它</font><font style="color:rgba(0, 0, 0, 0.88)">构建了连接传统数仓与图数仓的数据通道。基于表转图的物化方案,可以根据业务实际配置的加速表、加速关系、字段、权限等信息,全自动生成数据同步的任务编排,再通过图数仓平台调度,实现数据迁移全程无感,后续实时更新与增量同步,同步效率可达延迟十分钟级别。</font></p>
<p><font style="color:rgba(0, 0, 0, 0.88)">数据通道能力面向主流大数据生态系统,可深度集成 ODPS/Hive/Paimon 等基础设施,通过三层架构实现全生命周期数据管理:在数据接入层,自动捕获表的变化,产出物化方案,同步表-图实体映射的增量部分,当前可管理 10TB 级别图数据;在转换引擎层,全自动化生成导数的 DSL 任务编排,调度到集群执行;在存储优化层,支持 CStore/GraphDB/RocksDB 等自研或开源图存储解决方案,实践中已经过万亿级超大业务图的检验。此外,查询热数据预加载可根据图的实际使用情况,在 TB 级数据规模下仍能维持秒级查询相应,真正实现从表数仓到图数仓的全栈切换,SQL 之下全为图。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741684625347-a229239e-fd58-4d42-adc9-f272e3f13fdf-cec9f72efc7816e0019a9fc3c7826ccf.png" width="3528" height="1934" class="img_ev3q"></p>
@@ -449,12 +448,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgba(0, 0, 0, 0.88)">技术演进层面,下一代引擎将突破动态流图计算瓶颈,实现万亿边规模数据的增量更新。通过融合向量化计算引擎,可同时处理属性图与向量图的联合查询,满足 AIGC 时代的多模态分析需求,并支持自然语言直接生成图查询语句的颠覆性体验。行业应用前景正呈现爆发态势,未来图数据仓库将承载多数企业关联数据分析负载,成为智能决策的核心引擎。</font></p>]]></content:encoded>
</item>
<item>
- <title><![CDATA[流式图计算引擎 GeaFlow v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理]]></title>
+ <title><![CDATA[流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4 发布,支持关系型访问图数据,增量匹配优化实时处理]]></title>
<link>https://apache.github.io/zh-CN/blog/32</link>
<guid>https://apache.github.io/zh-CN/blog/32</guid>
<pubDate>Thu, 03 Apr 2025 00:00:00 GMT</pubDate>
- <description><![CDATA[2025 年 3 月发布了流式图计算引擎 GeaFlow v0.6.4,新版本实现了多个重要特性更新,包括:]]></description>
- <content:encoded><![CDATA[<p><font style="color:rgb(63, 63, 63)">2025 年 3 月发布了流式图计算引擎 GeaFlow v0.6.4,新版本实现了多个重要特性更新,包括:</font></p>
+ <description><![CDATA[2025 年 3 月发布了流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4,新版本实现了多个重要特性更新,包括:]]></description>
+ <content:encoded><![CDATA[<p><font style="color:rgb(63, 63, 63)">2025 年 3 月发布了流式图计算引擎 Apache GeaFlow (Incubating) v0.6.4,新版本实现了多个重要特性更新,包括:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font></li>
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font></li>
@@ -463,7 +462,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">支持增量匹配算子</font></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-新增功能">✨ 新增功能<a href="https://apache.github.io/zh-CN/blog/32#-%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="✨ 新增功能的直接链接" title="✨ 新增功能的直接链接"></a></h2>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">GeaFlow 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="https://apache.github.io/zh-CN/blog/32#geaflow-%E5%9B%BE%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81-paimon-%E6%95%B0%E6%8D%AE%E6%B9%96%E5%AE%9E%E9%AA%8C%E6%80%A7%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="geaflow-图存储扩展支持-paimon-数据湖实验性功能的直接链接" title="geaflow-图存储扩 [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-图存储扩展支持-paimon-数据湖实验性功能"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">Apache GeaFlow (Incubating) 图存储扩展支持 paimon 数据湖(实验性功能)</font><a href="https://apache.github.io/zh-CN/blog/32#apache-geaflow-incubating-%E5%9B%BE%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81-paimon-%E6%95%B0%E6%8D%AE%E6%B9%96%E5%AE%9E%E9%AA%8C%E6%80%A7%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="a [...]
<p><font style="color:rgb(63, 63, 63)">为提升 GeaFlow 数据存储系统的扩展性、实时数据处理能力及成本效率,本次更新加入了对 Apache Paimon 的支持。Paimon 作为新一代流式数据湖存储格式,在设计理念、功能特性上,与 GeaFlow 之前使用的 RocksDB 存在许多差异:</font></p>
<ul>
<li><font style="color:rgb(63, 63, 63)">支持对象存储/HDFS 分布式存储,天然适配云原生环境。因此可实现存储与计算分离,降低硬件依赖,支持弹性扩展。</font></li>
@@ -476,7 +475,7 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(63, 63, 63)">当前为实验性功能,仅支持使用本地文件系统作为 paimon 的存储后端,且暂不支持 recover 能力,暂不支持动态图数据存储。</font></li>
<li><font style="color:rgb(63, 63, 63)">通过配置<code>geaflow.store.paimon.options.warehouse</code>参数来指定存储路径,默认路径为"file:///tmp/paimon/"。</font></li>
</ul>
-<p><font style="color:rgb(63, 63, 63)">当前 GeaFlow 的存储架构图如下。</font></p>
+<p><font style="color:rgb(63, 63, 63)">当前 Apache GeaFlow (Incubating) 的存储架构图如下。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1756792583755-e264437e-59a4-4483-81b9-6b1b26a49279-6d12af95a761b59d946a28b3c6ebf039.webp" width="1080" height="1024" class="img_ev3q"></p>
<p><font style="color:rgb(63, 63, 63)"></font></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图数仓能力扩展支持对图中的实体进行关系型访问"><font style="color:rgb(63, 63, 63)">🍀</font><font style="color:rgb(63, 63, 63)">图数仓能力扩展:支持对图中的实体进行关系型访问</font><a href="https://apache.github.io/zh-CN/blog/32#%E5%9B%BE%E6%95%B0%E4%BB%93%E8%83%BD%E5%8A%9B%E6%89%A9%E5%B1%95%E6%94%AF%E6%8C%81%E5%AF%B9%E5%9B%BE%E4%B8%AD%E7%9A%84%E5%AE%9E%E4%BD%93%E8%BF%9B%E8%A1%8C%E5%85%B3%E7%B3%BB%E5%9E%8B%E8%AE%BF%E9%97%AE" class="hash-link" aria-label="图数仓能力扩展支持对图中的实体进行关系型访问的直接链接" [...]
@@ -552,16 +551,15 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<guid>https://apache.github.io/zh-CN/blog/31</guid>
<pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[作者:坤羽;审校:东朔。]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741852109942-9310f385-a0c2-4c32-987f-77b5c9df911a-4d1f5aaebac28f57f3c630dc86e80d78.png" width="2518" height="1104" class="img_ev3q"></p>
-<blockquote>
+ <content:encoded><![CDATA[<blockquote>
<p>作者:坤羽;审校:东朔。</p>
</blockquote>
-<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,GeaFlow 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
+<p>之前在「姊妹篇」<a href="https://zhuanlan.zhihu.com/p/27618053733" target="_blank" rel="noopener noreferrer">《Stream4Graph:动态图上的增量计算》</a>中,向大家介绍了在图计算技术中引入增量计算能力「图+流」,Apache GeaFlow (Incubating) 流图计算相比 Spark GraphX 取得了显著的性能提升。那么在流计算技术中引入图计算能力「流+图」,GeaFlow 流图计算相比 Flink 关联计算性能如何呢?</p>
<p>当今时代,<font style="color:rgb(51, 51, 51)">数据正以前所未有的速度和规模产生,对海量数据进行实时处理在异常检测、搜索推荐、金融交易等各个领域都有着广泛的应用。流计算</font><font style="color:rgb(0, 0, 0)">作为最主要的实时数据处理技术也变得越来越重要。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<p><font style="color:rgb(0, 0, 0)">与批处理需要等待数据全部到齐才进行计算不同,流计算将持续生成的数据流划分成微批,对每个微批的数据进行增量计算。这样的计算特性使得流计算具有高吞吐、低延迟的特性。常见的流计算引擎包括 Flink、Spark Streaming 等,他们都采用表的方式处理流中的数据。随着流计算应用的深入,越来越多的计算场景涉及到大数据之间关联关系的计算,此时基于表的流计算引擎性能会大幅下降。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<p><font style="color:rgb(0, 0, 0)">蚂蚁图计算团队开源的流图计算引擎</font>GeaFlow<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
+<p><font style="color:rgb(0, 0, 0)">开源的流图计算引擎</font>Apache GeaFlow (Incubating)<font style="color:rgb(0, 0, 0)">,将图计算与流计算相结合,提供了高效的流图处理框架,大幅提升了计算性能。下面为大家介绍传统流计算引擎在关联关系计算的局限性,GeaFlow 流图计算高效的原理以及他们的性能对比。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流计算引擎flink"><font style="color:rgb(0, 0, 0)">流计算引擎:Flink</font><a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Eflink" class="hash-link" aria-label="流计算引擎flink的直接链接" title="流计算引擎flink的直接链接"></a></h2>
<p><font style="color:rgb(0, 0, 0)">Flink 是经典的基于表的流处理引擎,他将输入的数据流切分成微批,每次计算当前批次的数据。在计算过程中,Flink 将计算任务翻译成由 map、filter、join 等基础算子组成的有向图,每个算子都有他的上游输入和下游输出。增量数据经过所有算子的计算后输出当前批次的结果。</font></p>
@@ -580,45 +578,45 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(0, 0, 0)">join 计算主要的性能瓶颈就在遍历 RightStateView。LeftStateView 和 RightStateView 实际上存储 join 的左表和右表。随着数据不断输入,StateView 中的数据量持续膨胀,最终导致遍历的耗时急剧上升,严重影响系统性能。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741589034132-1969e973-94dd-42ca-b506-ebe4594d87a8-2a6ffff312f323e4a888fbf7ae5375e2.png" width="1822" height="1238" class="img_ev3q"></p>
<p>Flink Join 算子实现</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎geaflow">流图计算引擎:GeaFlow<a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E5%9B%BE%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Egeaflow" class="hash-link" aria-label="流图计算引擎:GeaFlow的直接链接" title="流图计算引擎:GeaFlow的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="流图计算引擎apache-geaflow-incubating">流图计算引擎:Apache GeaFlow (Incubating)<a href="https://apache.github.io/zh-CN/blog/31#%E6%B5%81%E5%9B%BE%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8Eapache-geaflow-incubating" class="hash-link" aria-label="流图计算引擎:Apache GeaFlow (Incubating)的直接链接" title="流图计算引擎:Apache GeaFlow (Incubating)的直接链接"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="图计算流图">图计算&流图<a href="https://apache.github.io/zh-CN/blog/31#%E5%9B%BE%E8%AE%A1%E7%AE%97%E6%B5%81%E5%9B%BE" class="hash-link" aria-label="图计算&流图的直接链接" title="图计算&流图的直接链接"></a></h3>
<p>图计算是一种基于图数据格式的计算范式,其中图 G(V,E)由点集合 V 和边集合 E 构成,边代表了数据之间的关联关系。以公开数据集 web-Google 为例,其中每一行数据由两个数字组成,代表了两个页面之间的跳转关系。如下图所示,左侧是原始数据,常规的数据建模方式是建立一张包含两列数据的表,而图的建模方式是将网页作为点,将页面的跳转关系作为边,构成一张跳转网络图。在表的建模方式中,关联关系的计算是通过表的 join 实现的,join 需要遍历左表或者右表。而在图计算中,关联关系被直接存储在边中,省去了遍历的过程。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741544451333-05f87f7e-8c8b-41fb-a27b-051b6df8e5da-f807c16c2d891cba1799cb77b48f81db.png" width="2002" height="1304" class="img_ev3q"></p>
<p>表建模 vs. 图建模</p>
<p><font style="color:rgb(0, 0, 0)">流图是图在流场景中的应用,他依据数据流对图的更新将图分成历史图和增量图两个部分。例如在上图中,假设第一行和第二行数据已经输入并完成相应计算,当前处理第三行数据。此时历史图就是由前两行数据建模得到,而增量图是由第三行数据组成的图,两者合并起来就得到完整的图。在流图上应用增量图算法,可以高效完成计算任务,实现实时计算。</font></p>
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-架构"><font style="color:rgb(0, 0, 0)">GeaFlow 架构</font><a href="https://apache.github.io/zh-CN/blog/31#geaflow-%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="geaflow-架构的直接链接" title="geaflow-架构的直接链接"></a></h3>
-<p>GeaFlow 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-架构"><font style="color:rgb(0, 0, 0)">Apache GeaFlow (Incubating) 架构</font><a href="https://apache.github.io/zh-CN/blog/31#apache-geaflow-incubating-%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="apache-geaflow-incubating-架构的直接链接" title="apache-geaflow-incubating-架构的直接链接"></a></h3>
+<p>Apache GeaFlow (Incubating) 引擎的计算流程分为流数据输入、分布式增量图计算、增量结果输出几个部分。和传统的流计算引擎一样,输入的实时数据按照窗口被切分成微批。对于当前批次的数据,先按照建模策略解析成点边构成增量图。增量图和之前数据构成的历史图一道组成完整的流图。计算框架在流图上应用增量图算法得到增量结果输出,最后把增量图添加到历史图中。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740932875376-6633b307-c309-4ae7-be5e-d0b96a66409a-13fb01ce0fc0e6e24394158fe6f6d7ce.png" width="2172" height="882" class="img_ev3q"></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 增量计算</font></p>
<p><font style="color:rgb(0, 0, 0)">GeaFlow 计算框架是以点为中心的迭代计算模型。他以增量图中的点作为第一轮迭代的起点。在每一轮迭代中,每个点都独立维护自身的状态,根据与每个点关联的历史图和增量图完成当前迭代轮次的计算,最后将计算结果通过消息传递给邻居点,开启下一轮迭代。</font></p>
-<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
+<p><font style="color:rgb(0, 0, 0)">以前文中提到的 k-Hop 为例,增量算法如下:在第一轮迭代中,我们找到增量图中的所有边,将这些边作为初始的入向路径和出向路径,分别发送到他们的起点和终点。在后续的迭代中不断扩展入向路径和出向路径。当达到求取跳数时,将出向路径和入向路径发送给起点,在起点组合成最终结果。详细代码实现在开源仓库的</font><a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">IncKHopAlgorithm.java</a><font style="color:rgb(0, 0, 0)">文件中。</font></p>
<p><font style="color:rgb(0, 0, 0)">下图是两跳场景的描述。在第一轮迭代,增量边 B->C 分别构建入向路径和出向路径,将他们分别发送给点 B 和点 C。在第二轮迭代,B 收到入向路径,并加上当前点的入边形成 2 跳入向路径,发送给点 B。同样点 C 也收到出向路径,加上当前的出边形成 2 跳出向路径,发送给点 B。最后一轮迭代在 B 点将收到的出向和入向路径整合成新增的路径。可以看到,和 Flink 中需要查找所有的历史关系不同,GeaFlow 采用基于流图的增量图算法,计算量和图中的增量路径成正比。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1741710927215-b6be1398-7485-432b-b8f7-c4cde5366302-297d762bbca01fe5debe4cfb71ebb065.png" width="2370" height="1192" class="img_ev3q"></p>
<p>两跳增量路径计算</p>
<p><font style="color:rgb(0, 0, 0)">上述图算法已经集成到 GeaFlow 的 IncKHop 算子中,用户可以直接通过 DSL 调用。</font></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">set</span><span class="token plain"> geaflow</span><span class="t [...]
<p><font style="color:rgb(0, 0, 0)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="geaflow-性能测试">GeaFlow 性能测试<a href="https://apache.github.io/zh-CN/blog/31#geaflow-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="GeaFlow 性能测试的直接链接" title="GeaFlow 性能测试的直接链接"></a></h2>
-<p>为了验证 GeaFlow 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-geaflow-incubating-性能测试">Apache GeaFlow (Incubating) 性能测试<a href="https://apache.github.io/zh-CN/blog/31#apache-geaflow-incubating-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="Apache GeaFlow (Incubating) 性能测试的直接链接" title="Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
+<p>为了验证 Apache GeaFlow (Incubating) 的流图计算性能,我们以<font style="color:rgb(0, 0, 0)">k-Hop</font>算法为例设计了和 Flink 的对比实验。我们将指定数据作为输入源输入到计算引擎中,执行<font style="color:rgb(0, 0, 0)">k-Hop</font>算法,并统计所有数据完成计算的时间来比较系统的性能。我们采用公开数据集<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">web-Google.txt</a>作为输入,实验环境为 16 台 8 核 16G 的服务器,分别比较了一跳、两跳、三跳、四跳关系计算的场景。</p>
<p>实验结果如图所示,横坐标是分别是一跳关系、两跳关系、三跳关系、四跳关系,纵坐标是处理完所有数据的耗时,采用对数指标。可以看到在一跳、两跳场景中,Flink 的性能要好于 GeaFlow,这是因为在一跳、两跳场景中参与 join 计算的数据量比较小,join 需要遍历的左表和右表都很小,遍历本身耗时短,而且 Flink 的计算框架可以缓存 join 的历史计算结果。但是到了三跳、四跳场景时候,由于计算复杂度的上升,join 算子需要遍历的表迅速膨胀,带来计算性能的急剧下降,甚至四跳场景超过一天也无法完成计算。而 GeaFlow<font style="color:rgb(0, 0, 0)">采用基于流图增量图算法,计算耗时只和增量路径相关,和历史的关联关系计算结果无关,所以性能明显优于 Flink。</font></p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1743568484086-10eb9a1a-3dd0-42ee-b885-875ac7d81221-271813564bc0981ca8d84a83398b49fb.png" width="2922" height="1802" class="img_ev3q"></p>
<p>k-Hop 计算性能对比</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结和展望">总结和展望<a href="https://apache.github.io/zh-CN/blog/31#%E6%80%BB%E7%BB%93%E5%92%8C%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="总结和展望的直接链接" title="总结和展望的直接链接"></a></h2>
<p>传统的 Flink 等流计算引擎在计算关联关系时需要用到 join 算子,join 算子需要遍历全量的历史数据,这使得他们在大数据关联计算场景中性能不佳。GeaFlow 引擎通过支持流图计算框架,将图计算引入到流计算中,采用增量图计算的方法大大提升了实时数据的处理系性能。</p>
-<p>目前 GeaFlow 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>目前 Apache GeaFlow (Incubating) 项目代码已经开源,我们希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持增量 k-Core 算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
-<li>支持增量最小生成树算法。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
+<li>支持增量 k-Core 算法。(<a href="https://github.com/apache/geaflow/issues/466" target="_blank" rel="noopener noreferrer">Issue 466</a>)</li>
+<li>支持增量最小生成树算法。(<a href="https://github.com/apache/geaflow/issues/465" target="_blank" rel="noopener noreferrer">Issue 465</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="https://apache.github.io/zh-CN/blog/31#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>web-Google 数据集地址:<a href="https://snap.stanford.edu/data/web-Google.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/web-Google.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
-<li>增量 k-Hop 算法实现源码:<a href="https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
+<li>增量 k-Hop 算法实现源码:<a href="https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/blob/master/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/com/antgroup/geaflow/dsl/udf/graph/IncKHopAlgorithm.java</a></li>
</ol>]]></content:encoded>
</item>
<item>
@@ -627,13 +625,12 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<guid>https://apache.github.io/zh-CN/blog/27</guid>
<pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[作者:张奇]]></description>
- <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740982328260-3a0ff09e-920b-4f55-af14-326b5d0a358c-70edfbcec11c709d6360e96997248e2e.png" width="1024" height="576" class="img_ev3q"></p>
-<blockquote>
+ <content:encoded><![CDATA[<blockquote>
<p>作者:张奇</p>
</blockquote>
<p>众所周知,当我们需要对数据做关联性分析的时候,一般会采用表连接(SQL join)的方式完成。但是 SQL join 时的笛卡尔积计算需要维护大量的中间结果,从而对整体的数据分析性能带来巨大影响。相比而言,基于图的方式维护数据的关联性,原本的关联性分析可以转换为图上的遍历操作,从而大幅降低数据分析的成本。</p>
<p>然而,随着数据规模的不断增长,以及对数据处理更强的实时性需求,如何高效地解决大规模图数据上的实时计算问题,就变得越来越紧迫。传统的计算引擎,如 Spark、Flink 对于图数据的处理已经逐渐不能满足业务日益增长的诉求,因此设计一套面向大规模图数据的实时处理引擎,将会对大数据处理技术革新带来巨大的帮助。</p>
-<p>蚂蚁图计算团队开源的流图计算引擎<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">GeaFlow</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 GeaFlow 在动态图上的计算性能表现。</p>
+<p>开源的流图计算引擎<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">Apache GeaFlow (Incubating)</a>,结合了图处理和流处理的技术优势,实现了动态图上的增量计算能力,在高性能关联性分析的基础上,进一步提升了图计算的实时性。接下来向大家介绍图计算技术的特点,业内如何解决大规模实时图计算问题,以及 Apache GeaFlow (Incubating) 在动态图上的计算性能表现。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-图计算">1. 图计算<a href="https://apache.github.io/zh-CN/blog/27#1-%E5%9B%BE%E8%AE%A1%E7%AE%97" class="hash-link" aria-label="1. 图计算的直接链接" title="1. 图计算的直接链接"></a></h2>
<p><font style="color:rgb(51, 51, 51)">图是一种数学结构,由节点和边组成。节点代表各种实体,比如人、地点、事物或概念,而边则表示这些节点之间的关系。例如:</font></p>
<ul>
@@ -662,16 +659,16 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<p><font style="color:rgb(64, 64, 64)"></font></p>
<p><font style="color:rgb(64, 64, 64)">但这种方案有一个比较大的缺点,就是它存在着重复计算的问题,假如我们需要以 1 小时一个窗口做一次计算,那么在使用 Spark 进行计算时,不仅要将当前窗口的数据计算进去,历史所有数据也需要进行回溯,存在大量重复计算,这样做效率不高,因此我们需要一套能够进行增量计算的图计算方案。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算geaflow">4. 动态图增量计算:GeaFlow<a href="https://apache.github.io/zh-CN/blog/27#4-%E5%8A%A8%E6%80%81%E5%9B%BE%E5%A2%9E%E9%87%8F%E8%AE%A1%E7%AE%97geaflow" class="hash-link" aria-label="4. 动态图增量计算:GeaFlow的直接链接" title="4. 动态图增量计算:GeaFlow的直接链接"></a></h2>
-<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 GeaFlow(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-动态图增量计算apache-geaflow-incubating">4. 动态图增量计算:Apache GeaFlow (Incubating)<a href="https://apache.github.io/zh-CN/blog/27#4-%E5%8A%A8%E6%80%81%E5%9B%BE%E5%A2%9E%E9%87%8F%E8%AE%A1%E7%AE%97apache-geaflow-incubating" class="hash-link" aria-label="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接" title="4. 动态图增量计算:Apache GeaFlow (Incubating)的直接链接"></a></h2>
+<p><font style="color:rgb(64, 64, 64)">我们知道在传统的流计算引擎中,如 Flink,</font><font style="color:rgb(51, 51, 51)">其处理模型允许系统能够处理不断流入的数据事件。处理每个事件时,Flink 可以评估变化并仅针对变化的部分执行计算。这意味着在增量计算过程中,Flink 会关注最新到达的数据,而不是整个数据集。于是受到 Flink 增量计算的启发,</font><font style="color:rgb(64, 64, 64)">我们自研了增量图计算系统 Apache GeaFlow (Incubating)(也叫流图计算引擎),能够很好的支持增量图迭代计算。</font></p>
<p><font style="color:rgb(64, 64, 64)"></font></p>
-<p>那么 GeaFlow 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
+<p>那么 Apache GeaFlow (Incubating) 是如何实现增量图计算的呢?首先,实时数据通过 connector 消息源输入的 GeaFlow 中,GeaFlow 依据实时数据,生成内部的点边结构数据,并且将点边数据插入进底图中。当前窗口的实时数据涉及到的点会被激活,触发图迭代计算。</p>
<p>这里以 WCC 算法为例,对联通分量算法而言,在一个时间窗口内每条边对应的 src id 和 tar id 对应的顶点会被激活,第一次迭代需要将其 id 信息通知其邻居节点。如果邻居节点收到消息后,发现需要更新自己的信息,那么它需要继续将更新消息通知给它的邻居节点;如果说邻居节点不需要更新自己的信息,那么它就不需要通知其邻居节点,它对应的迭代终止。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1740471552771-36ee8f06-d58e-4cb7-914d-c44e151575a0-1c1f991809d12cfdb99fce31a47e532f.png" width="1986" height="802" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-geaflow-架构简析">5. GeaFlow 架构简析<a href="https://apache.github.io/zh-CN/blog/27#5-geaflow-%E6%9E%B6%E6%9E%84%E7%AE%80%E6%9E%90" class="hash-link" aria-label="5. GeaFlow 架构简析的直接链接" title="5. GeaFlow 架构简析的直接链接"></a></h2>
-<p>GeaFlow 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-apache-geaflow-incubating-架构简析">5. Apache GeaFlow (Incubating) 架构简析<a href="https://apache.github.io/zh-CN/blog/27#5-apache-geaflow-incubating-%E6%9E%B6%E6%9E%84%E7%AE%80%E6%9E%90" class="hash-link" aria-label="5. Apache GeaFlow (Incubating) 架构简析的直接链接" title="5. Apache GeaFlow (Incubating) 架构简析的直接链接"></a></h2>
+<p>Apache GeaFlow (Incubating) 引擎主要由三大主要部分组成,DSL、Framework 和 State,同时向上为用户提供了 Stream API、静态图 API 和动态图 API。DSL 主要负责图查询语言 SQL+ISO/GQL 的解析和执行计划的优化,同时负责 schema 的推导,也向外部承接了多种 Connector,比如 hive、hudi、kafka、odps 等。Framework 层负责运行时的调度和容灾,shuffle 以及框架内各个组件的管理协调。State 层负责存储底层图数据和数据的持久化,同时也负责索引、下推等众多性能优化工作。</p>
<p><img decoding="async" loading="lazy" src="https://apache.github.io/zh-CN/assets/images/1739276186744-96d40e95-4e29-48ef-8892-1b7dfa60c726-3192c18b6814cae491be535b9a879901.png" width="1496" height="1002" class="img_ev3q"></p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-geaflow-性能测试">6. GeaFlow 性能测试<a href="https://apache.github.io/zh-CN/blog/27#6-geaflow-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="6. GeaFlow 性能测试的直接链接" title="6. GeaFlow 性能测试的直接链接"></a></h2>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-apache-geaflow-incubating-性能测试">6. Apache GeaFlow (Incubating) 性能测试<a href="https://apache.github.io/zh-CN/blog/27#6-apache-geaflow-incubating-%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="6. Apache GeaFlow (Incubating) 性能测试的直接链接" title="6. Apache GeaFlow (Incubating) 性能测试的直接链接"></a></h2>
<p>为了验证 GeaFlow 的增量图计算性能,我们设计了这样的实验。一批数据按照固定时间窗口实时输入到计算引擎中,我们分别用 Spark 和 GeaFlow 对全图做联通分量算法计算,比较两者计算耗时。实验在 3 台 24 核内存 128G 的机器上开展,使用的数据集是公开数据集<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">soc-Livejournal</a>,测试的图算法是弱联通分量算法。我们以 50w 条数据作为一个计算窗口,每输入到引擎中 50w 条数据,就触发一次图计算。</p>
<p>Spark 作为批处理引擎,对于每一批窗口来的数据,不管窗口规模是大是小,都需要对增量图数据连同历史图数据进行全量计算。在 Spark 上,可以直接调用 Spark GraphX 内部内置的 WCC 算法进行计算。</p>
<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">object SparkTest {</span><br></span><span class="token-line" style="color:#bfc7d5"><span [...]
@@ -686,19 +683,19 @@ _ <font style="color:rgb(63, 63, 63)">数据通过 Kafka 消费,主题为 </fo
<li><font style="color:rgb(6, 6, 7)">GeaFlow 通过增量计算避免了全量数据的重复处理,计算效率更高,计算时间更短性能不明显下降。</font></li>
<li><font style="color:rgb(6, 6, 7)">GeaFlow 支持 SQL+GQL 混合处理语言,更适合开发复杂的图数据处理任务。</font></li>
</ol>
-<p>GeaFlow 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
+<p>Apache GeaFlow (Incubating) 项目代码已全部开源,我们完成了部分流图引擎基础能力的构建,未来希望基于 GeaFlow 构建面向图数据的统一湖仓处理引擎,以解决多样化的大数据关联性分析诉求。同时我们也在积极筹备加入 Apache 基金会,丰富大数据开源生态,因此非常欢迎对图技术有浓厚兴趣同学加入社区共建。</p>
<p>社区中有诸多有趣的工作尚待完成,你可以从如下简单的「Good First Issue」开始,期待你加入同行。</p>
<ul>
-<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
-<li>优化 GQL match 语句性能。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
-<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/TuGraph-family/tugraph-analytics/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
+<li>支持 Paimon Connector 插件,连接数据湖生态。(<a href="https://github.com/apache/geaflow/issues/361" target="_blank" rel="noopener noreferrer">Issue 361</a>)</li>
+<li>优化 GQL match 语句性能。(<a href="https://github.com/apache/geaflow/issues/363" target="_blank" rel="noopener noreferrer">Issue 363</a>)</li>
+<li>新增 ISO/GQL 语法,支持 same 谓词。(<a href="https://github.com/apache/geaflow/issues/368" target="_blank" rel="noopener noreferrer">Issue 368</a>)</li>
<li>...</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="参考链接">参考链接<a href="https://apache.github.io/zh-CN/blog/27#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5" class="hash-link" aria-label="参考链接的直接链接" title="参考链接的直接链接"></a></h2>
<ol>
-<li>GeaFlow 项目地址:<a href="https://github.com/TuGraph-family/tugraph-analytics" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics</a></li>
+<li>Apache GeaFlow (Incubating) 项目地址:<a href="https://github.com/apache/geaflow" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow</a></li>
<li>soc-Livejournal 数据集地址:<a href="https://snap.stanford.edu/data/soc-LiveJournal1.html" target="_blank" rel="noopener noreferrer">https://snap.stanford.edu/data/soc-LiveJournal1.html</a></li>
-<li>GeaFlow Issues:<a href="https://github.com/TuGraph-family/tugraph-analytics/issues" target="_blank" rel="noopener noreferrer">https://github.com/TuGraph-family/tugraph-analytics/issues</a></li>
+<li>Apache GeaFlow (Incubating) Issues:<a href="https://github.com/apache/geaflow/issues" target="_blank" rel="noopener noreferrer">https://github.com/apache/geaflow/issues</a></li>
</ol>]]></content:encoded>
</item>
</channel>
diff --git a/zh-CN/community/community/index.html b/zh-CN/community/community/index.html
index bd46609..f8a2b29 100644
--- a/zh-CN/community/community/index.html
+++ b/zh-CN/community/community/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/how_to_contribute/index.html b/zh-CN/community/how_to_contribute/index.html
index d6a85cd..a426b7f 100644
--- a/zh-CN/community/how_to_contribute/index.html
+++ b/zh-CN/community/how_to_contribute/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/how_to_release/index.html b/zh-CN/community/how_to_release/index.html
index 7732f35..d6c98eb 100644
--- a/zh-CN/community/how_to_release/index.html
+++ b/zh-CN/community/how_to_release/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/security/index.html b/zh-CN/community/security/index.html
index c0dee7c..0e92369 100644
--- a/zh-CN/community/security/index.html
+++ b/zh-CN/community/security/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/zh/community/index.html b/zh-CN/community/zh/community/index.html
index 9024dac..b5fd5a4 100644
--- a/zh-CN/community/zh/community/index.html
+++ b/zh-CN/community/zh/community/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/zh/how_to_contribute/index.html b/zh-CN/community/zh/how_to_contribute/index.html
index ba34b06..cdde956 100644
--- a/zh-CN/community/zh/how_to_contribute/index.html
+++ b/zh-CN/community/zh/how_to_contribute/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/zh/how_to_release/index.html b/zh-CN/community/zh/how_to_release/index.html
index a89206c..c2084b0 100644
--- a/zh-CN/community/zh/how_to_release/index.html
+++ b/zh-CN/community/zh/how_to_release/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/community/zh/security/index.html b/zh-CN/community/zh/security/index.html
index d807c54..c72236a 100644
--- a/zh-CN/community/zh/security/index.html
+++ b/zh-CN/community/zh/security/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/graph/compute/index.html b/zh-CN/docs/application-development/api/graph/compute/index.html
index caaaef6..39db024 100644
--- a/zh-CN/docs/application-development/api/graph/compute/index.html
+++ b/zh-CN/docs/application-development/api/graph/compute/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/graph/traversal/index.html b/zh-CN/docs/application-development/api/graph/traversal/index.html
index 24c4e3b..c103181 100644
--- a/zh-CN/docs/application-development/api/graph/traversal/index.html
+++ b/zh-CN/docs/application-development/api/graph/traversal/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/overview/index.html b/zh-CN/docs/application-development/api/overview/index.html
index efc5017..2b6004d 100644
--- a/zh-CN/docs/application-development/api/overview/index.html
+++ b/zh-CN/docs/application-development/api/overview/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/stream/process/index.html b/zh-CN/docs/application-development/api/stream/process/index.html
index 1987015..82e7e07 100644
--- a/zh-CN/docs/application-development/api/stream/process/index.html
+++ b/zh-CN/docs/application-development/api/stream/process/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/stream/sink/index.html b/zh-CN/docs/application-development/api/stream/sink/index.html
index 24ba53b..3599cdc 100644
--- a/zh-CN/docs/application-development/api/stream/sink/index.html
+++ b/zh-CN/docs/application-development/api/stream/sink/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/api/stream/source/index.html b/zh-CN/docs/application-development/api/stream/source/index.html
index d899778..740d948 100644
--- a/zh-CN/docs/application-development/api/stream/source/index.html
+++ b/zh-CN/docs/application-development/api/stream/source/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/chat_guide/index.html b/zh-CN/docs/application-development/chat_guide/index.html
index 3ad9124..57780ae 100644
--- a/zh-CN/docs/application-development/chat_guide/index.html
+++ b/zh-CN/docs/application-development/chat_guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/common/index.html b/zh-CN/docs/application-development/connector/common/index.html
index 9f9a735..f9b822d 100644
--- a/zh-CN/docs/application-development/connector/common/index.html
+++ b/zh-CN/docs/application-development/connector/common/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/console/index.html b/zh-CN/docs/application-development/connector/console/index.html
index a0cc066..897b5cd 100644
--- a/zh-CN/docs/application-development/connector/console/index.html
+++ b/zh-CN/docs/application-development/connector/console/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/file/index.html b/zh-CN/docs/application-development/connector/file/index.html
index fbfc569..4a8ce35 100644
--- a/zh-CN/docs/application-development/connector/file/index.html
+++ b/zh-CN/docs/application-development/connector/file/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/hbase/index.html b/zh-CN/docs/application-development/connector/hbase/index.html
index 019d9b9..fd42b1a 100644
--- a/zh-CN/docs/application-development/connector/hbase/index.html
+++ b/zh-CN/docs/application-development/connector/hbase/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/hive/index.html b/zh-CN/docs/application-development/connector/hive/index.html
index 6317d22..eaf090a 100644
--- a/zh-CN/docs/application-development/connector/hive/index.html
+++ b/zh-CN/docs/application-development/connector/hive/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/hudi/index.html b/zh-CN/docs/application-development/connector/hudi/index.html
index a27a511..2543e0c 100644
--- a/zh-CN/docs/application-development/connector/hudi/index.html
+++ b/zh-CN/docs/application-development/connector/hudi/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/jdbc/index.html b/zh-CN/docs/application-development/connector/jdbc/index.html
index 3348d60..4656acb 100644
--- a/zh-CN/docs/application-development/connector/jdbc/index.html
+++ b/zh-CN/docs/application-development/connector/jdbc/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/kafka/index.html b/zh-CN/docs/application-development/connector/kafka/index.html
index 25b9c92..d6728ab 100644
--- a/zh-CN/docs/application-development/connector/kafka/index.html
+++ b/zh-CN/docs/application-development/connector/kafka/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/pulsar/index.html b/zh-CN/docs/application-development/connector/pulsar/index.html
index 526d874..797517d 100644
--- a/zh-CN/docs/application-development/connector/pulsar/index.html
+++ b/zh-CN/docs/application-development/connector/pulsar/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/connector/udc/index.html b/zh-CN/docs/application-development/connector/udc/index.html
index 14ce3ed..a54a07f 100644
--- a/zh-CN/docs/application-development/connector/udc/index.html
+++ b/zh-CN/docs/application-development/connector/udc/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/aggregate/index.html b/zh-CN/docs/application-development/dsl/build-in/aggregate/index.html
index b56cd06..c74bc72 100644
--- a/zh-CN/docs/application-development/dsl/build-in/aggregate/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/aggregate/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/condition/index.html b/zh-CN/docs/application-development/dsl/build-in/condition/index.html
index 8199f43..6177ab2 100644
--- a/zh-CN/docs/application-development/dsl/build-in/condition/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/condition/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/date/index.html b/zh-CN/docs/application-development/dsl/build-in/date/index.html
index 066a98f..6b2897b 100644
--- a/zh-CN/docs/application-development/dsl/build-in/date/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/date/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/logical/index.html b/zh-CN/docs/application-development/dsl/build-in/logical/index.html
index 1faab6f..44e2462 100644
--- a/zh-CN/docs/application-development/dsl/build-in/logical/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/logical/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/math/index.html b/zh-CN/docs/application-development/dsl/build-in/math/index.html
index 53ed2a2..e0f8eb9 100644
--- a/zh-CN/docs/application-development/dsl/build-in/math/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/math/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/string/index.html b/zh-CN/docs/application-development/dsl/build-in/string/index.html
index 4d1bfed..7184e54 100644
--- a/zh-CN/docs/application-development/dsl/build-in/string/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/string/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/build-in/table/index.html b/zh-CN/docs/application-development/dsl/build-in/table/index.html
index 56200ae..64c5e9c 100644
--- a/zh-CN/docs/application-development/dsl/build-in/table/index.html
+++ b/zh-CN/docs/application-development/dsl/build-in/table/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/overview/index.html b/zh-CN/docs/application-development/dsl/overview/index.html
index 66c78ad..3b07300 100644
--- a/zh-CN/docs/application-development/dsl/overview/index.html
+++ b/zh-CN/docs/application-development/dsl/overview/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dcl/index.html b/zh-CN/docs/application-development/dsl/syntax/dcl/index.html
index e0e5b5e..ae99883 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dcl/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dcl/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/ddl/index.html b/zh-CN/docs/application-development/dsl/syntax/ddl/index.html
index 27b654d..f61c0dc 100644
--- a/zh-CN/docs/application-development/dsl/syntax/ddl/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/ddl/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dml/index.html b/zh-CN/docs/application-development/dsl/syntax/dml/index.html
index 5b3146b..4cbc700 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dml/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dml/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dql/match/index.html b/zh-CN/docs/application-development/dsl/syntax/dql/match/index.html
index feae214..3887914 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dql/match/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dql/match/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dql/select/index.html b/zh-CN/docs/application-development/dsl/syntax/dql/select/index.html
index 4d59f53..a6dd9b6 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dql/select/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dql/select/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dql/union/index.html b/zh-CN/docs/application-development/dsl/syntax/dql/union/index.html
index 3125438..2e1cfaf 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dql/union/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dql/union/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/syntax/dql/with/index.html b/zh-CN/docs/application-development/dsl/syntax/dql/with/index.html
index 8dc00cc..72b49f5 100644
--- a/zh-CN/docs/application-development/dsl/syntax/dql/with/index.html
+++ b/zh-CN/docs/application-development/dsl/syntax/dql/with/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/udf/udaf/index.html b/zh-CN/docs/application-development/dsl/udf/udaf/index.html
index 8a5a96f..b0ed497 100644
--- a/zh-CN/docs/application-development/dsl/udf/udaf/index.html
+++ b/zh-CN/docs/application-development/dsl/udf/udaf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/udf/udf/index.html b/zh-CN/docs/application-development/dsl/udf/udf/index.html
index 34fcaf1..4c186c1 100644
--- a/zh-CN/docs/application-development/dsl/udf/udf/index.html
+++ b/zh-CN/docs/application-development/dsl/udf/udf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/udf/udga/index.html b/zh-CN/docs/application-development/dsl/udf/udga/index.html
index 2f4cbd6..e8bb0c5 100644
--- a/zh-CN/docs/application-development/dsl/udf/udga/index.html
+++ b/zh-CN/docs/application-development/dsl/udf/udga/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/application-development/dsl/udf/udtf/index.html b/zh-CN/docs/application-development/dsl/udf/udtf/index.html
index 451c4c0..c9f048c 100644
--- a/zh-CN/docs/application-development/dsl/udf/udtf/index.html
+++ b/zh-CN/docs/application-development/dsl/udf/udtf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/console_principle/index.html b/zh-CN/docs/concepts/console_principle/index.html
index 82d17fe..0cef10e 100644
--- a/zh-CN/docs/concepts/console_principle/index.html
+++ b/zh-CN/docs/concepts/console_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/dsl_principle/index.html b/zh-CN/docs/concepts/dsl_principle/index.html
index 13b4935..a703d3d 100644
--- a/zh-CN/docs/concepts/dsl_principle/index.html
+++ b/zh-CN/docs/concepts/dsl_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/framework_principle/index.html b/zh-CN/docs/concepts/framework_principle/index.html
index b353a48..e6acf40 100644
--- a/zh-CN/docs/concepts/framework_principle/index.html
+++ b/zh-CN/docs/concepts/framework_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/glossary/index.html b/zh-CN/docs/concepts/glossary/index.html
index ed5ad94..c181ea9 100644
--- a/zh-CN/docs/concepts/glossary/index.html
+++ b/zh-CN/docs/concepts/glossary/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/graph_view/index.html b/zh-CN/docs/concepts/graph_view/index.html
index a3ebd4f..e0296d6 100644
--- a/zh-CN/docs/concepts/graph_view/index.html
+++ b/zh-CN/docs/concepts/graph_view/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/state_principle/index.html b/zh-CN/docs/concepts/state_principle/index.html
index b40730e..0fd3ce1 100644
--- a/zh-CN/docs/concepts/state_principle/index.html
+++ b/zh-CN/docs/concepts/state_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/concepts/stream_graph/index.html b/zh-CN/docs/concepts/stream_graph/index.html
index 8e3a083..62be2de 100644
--- a/zh-CN/docs/concepts/stream_graph/index.html
+++ b/zh-CN/docs/concepts/stream_graph/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/contacts/index.html b/zh-CN/docs/contacts/index.html
index 2c5b5c1..19de009 100644
--- a/zh-CN/docs/contacts/index.html
+++ b/zh-CN/docs/contacts/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/contribution/index.html b/zh-CN/docs/contribution/index.html
index f90d7f3..05a1ec9 100644
--- a/zh-CN/docs/contribution/index.html
+++ b/zh-CN/docs/contribution/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/collaborate_with_g6vp/index.html b/zh-CN/docs/deploy/collaborate_with_g6vp/index.html
index 7ab93ce..6be37ef 100644
--- a/zh-CN/docs/deploy/collaborate_with_g6vp/index.html
+++ b/zh-CN/docs/deploy/collaborate_with_g6vp/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/dashboard/index.html b/zh-CN/docs/deploy/dashboard/index.html
index 557ef4f..2f23a70 100644
--- a/zh-CN/docs/deploy/dashboard/index.html
+++ b/zh-CN/docs/deploy/dashboard/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/install_guide/index.html b/zh-CN/docs/deploy/install_guide/index.html
index bd6bc36..06a8b1f 100644
--- a/zh-CN/docs/deploy/install_guide/index.html
+++ b/zh-CN/docs/deploy/install_guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/install_llm/index.html b/zh-CN/docs/deploy/install_llm/index.html
index 9c2c5db..d413a83 100644
--- a/zh-CN/docs/deploy/install_llm/index.html
+++ b/zh-CN/docs/deploy/install_llm/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/install_minikube/index.html b/zh-CN/docs/deploy/install_minikube/index.html
index 2da8fd9..d3b7ca6 100644
--- a/zh-CN/docs/deploy/install_minikube/index.html
+++ b/zh-CN/docs/deploy/install_minikube/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/deploy/quick_start_operator/index.html b/zh-CN/docs/deploy/quick_start_operator/index.html
index 12c10b6..db24e1e 100644
--- a/zh-CN/docs/deploy/quick_start_operator/index.html
+++ b/zh-CN/docs/deploy/quick_start_operator/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/guide/index.html b/zh-CN/docs/guide/index.html
index d66d9ea..0956aa2 100644
--- a/zh-CN/docs/guide/index.html
+++ b/zh-CN/docs/guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/introduction/index.html b/zh-CN/docs/introduction/index.html
index aba86f1..1f5834f 100644
--- a/zh-CN/docs/introduction/index.html
+++ b/zh-CN/docs/introduction/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/quick_start/quick_start/index.html b/zh-CN/docs/quick_start/quick_start/index.html
index 64d9fef..5a4f556 100644
--- a/zh-CN/docs/quick_start/quick_start/index.html
+++ b/zh-CN/docs/quick_start/quick_start/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/quick_start/quick_start_docker/index.html b/zh-CN/docs/quick_start/quick_start_docker/index.html
index 67d1895..fd4f258 100644
--- a/zh-CN/docs/quick_start/quick_start_docker/index.html
+++ b/zh-CN/docs/quick_start/quick_start_docker/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/quick_start/quick_start_infer&UDF/index.html b/zh-CN/docs/quick_start/quick_start_infer&UDF/index.html
index 039f7b4..5f56ebc 100644
--- a/zh-CN/docs/quick_start/quick_start_infer&UDF/index.html
+++ b/zh-CN/docs/quick_start/quick_start_infer&UDF/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/quick_start/quick_start_sql_to_graph/index.html b/zh-CN/docs/quick_start/quick_start_sql_to_graph/index.html
index cd2eb45..04347e9 100644
--- a/zh-CN/docs/quick_start/quick_start_sql_to_graph/index.html
+++ b/zh-CN/docs/quick_start/quick_start_sql_to_graph/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/reference/vs_join/index.html b/zh-CN/docs/reference/vs_join/index.html
index 43032a3..d5a1eed 100644
--- a/zh-CN/docs/reference/vs_join/index.html
+++ b/zh-CN/docs/reference/vs_join/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/thanks/index.html b/zh-CN/docs/thanks/index.html
index a887ef7..e540277 100644
--- a/zh-CN/docs/thanks/index.html
+++ b/zh-CN/docs/thanks/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/graph/compute/index.html b/zh-CN/docs/zh/application-development/api/graph/compute/index.html
index c070b04..b517618 100644
--- a/zh-CN/docs/zh/application-development/api/graph/compute/index.html
+++ b/zh-CN/docs/zh/application-development/api/graph/compute/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/graph/traversal/index.html b/zh-CN/docs/zh/application-development/api/graph/traversal/index.html
index 6662b03..550e2e1 100644
--- a/zh-CN/docs/zh/application-development/api/graph/traversal/index.html
+++ b/zh-CN/docs/zh/application-development/api/graph/traversal/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/overview/index.html b/zh-CN/docs/zh/application-development/api/overview/index.html
index 5e6461f..196ec63 100644
--- a/zh-CN/docs/zh/application-development/api/overview/index.html
+++ b/zh-CN/docs/zh/application-development/api/overview/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/stream/process/index.html b/zh-CN/docs/zh/application-development/api/stream/process/index.html
index e26f8db..028e3b5 100644
--- a/zh-CN/docs/zh/application-development/api/stream/process/index.html
+++ b/zh-CN/docs/zh/application-development/api/stream/process/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/stream/sink/index.html b/zh-CN/docs/zh/application-development/api/stream/sink/index.html
index 1b9ea1a..e69c5f4 100644
--- a/zh-CN/docs/zh/application-development/api/stream/sink/index.html
+++ b/zh-CN/docs/zh/application-development/api/stream/sink/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/api/stream/source/index.html b/zh-CN/docs/zh/application-development/api/stream/source/index.html
index 4fdf6b2..2e37dad 100644
--- a/zh-CN/docs/zh/application-development/api/stream/source/index.html
+++ b/zh-CN/docs/zh/application-development/api/stream/source/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/chat_guide/index.html b/zh-CN/docs/zh/application-development/chat_guide/index.html
index e97b4a0..f673f96 100644
--- a/zh-CN/docs/zh/application-development/chat_guide/index.html
+++ b/zh-CN/docs/zh/application-development/chat_guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/common/index.html b/zh-CN/docs/zh/application-development/connector/common/index.html
index 7fc7f4a..a9feb1e 100644
--- a/zh-CN/docs/zh/application-development/connector/common/index.html
+++ b/zh-CN/docs/zh/application-development/connector/common/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/console/index.html b/zh-CN/docs/zh/application-development/connector/console/index.html
index d911881..08042c3 100644
--- a/zh-CN/docs/zh/application-development/connector/console/index.html
+++ b/zh-CN/docs/zh/application-development/connector/console/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/file/index.html b/zh-CN/docs/zh/application-development/connector/file/index.html
index 049f4e3..df56f72 100644
--- a/zh-CN/docs/zh/application-development/connector/file/index.html
+++ b/zh-CN/docs/zh/application-development/connector/file/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/hbase/index.html b/zh-CN/docs/zh/application-development/connector/hbase/index.html
index 72d3a94..828ca8f 100644
--- a/zh-CN/docs/zh/application-development/connector/hbase/index.html
+++ b/zh-CN/docs/zh/application-development/connector/hbase/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/hive/index.html b/zh-CN/docs/zh/application-development/connector/hive/index.html
index 82a82fb..4a8216f 100644
--- a/zh-CN/docs/zh/application-development/connector/hive/index.html
+++ b/zh-CN/docs/zh/application-development/connector/hive/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/hudi/index.html b/zh-CN/docs/zh/application-development/connector/hudi/index.html
index 91a4c99..117e82a 100644
--- a/zh-CN/docs/zh/application-development/connector/hudi/index.html
+++ b/zh-CN/docs/zh/application-development/connector/hudi/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/jdbc/index.html b/zh-CN/docs/zh/application-development/connector/jdbc/index.html
index 182a107..e6ee309 100644
--- a/zh-CN/docs/zh/application-development/connector/jdbc/index.html
+++ b/zh-CN/docs/zh/application-development/connector/jdbc/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/kafka/index.html b/zh-CN/docs/zh/application-development/connector/kafka/index.html
index 0d9f9f3..18638ec 100644
--- a/zh-CN/docs/zh/application-development/connector/kafka/index.html
+++ b/zh-CN/docs/zh/application-development/connector/kafka/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/pulsar/index.html b/zh-CN/docs/zh/application-development/connector/pulsar/index.html
index e967397..8c157b5 100644
--- a/zh-CN/docs/zh/application-development/connector/pulsar/index.html
+++ b/zh-CN/docs/zh/application-development/connector/pulsar/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/connector/udc/index.html b/zh-CN/docs/zh/application-development/connector/udc/index.html
index 45a5233..ae17e8b 100644
--- a/zh-CN/docs/zh/application-development/connector/udc/index.html
+++ b/zh-CN/docs/zh/application-development/connector/udc/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/aggregate/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/aggregate/index.html
index 3b5fdfa..be6838a 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/aggregate/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/aggregate/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/condition/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/condition/index.html
index aada981..72f7a12 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/condition/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/condition/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/date/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/date/index.html
index b66225d..0d8f2a8 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/date/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/date/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/logical/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/logical/index.html
index 455da2f..e8eecfb 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/logical/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/logical/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/math/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/math/index.html
index 635ec41..ef359d0 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/math/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/math/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/string/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/string/index.html
index f315ac6..f52a0b3 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/string/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/string/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/build-in/table/index.html b/zh-CN/docs/zh/application-development/dsl/build-in/table/index.html
index 10c5258..04d3cb9 100644
--- a/zh-CN/docs/zh/application-development/dsl/build-in/table/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/build-in/table/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/overview/index.html b/zh-CN/docs/zh/application-development/dsl/overview/index.html
index 1e94076..5064231 100644
--- a/zh-CN/docs/zh/application-development/dsl/overview/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/overview/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dcl/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dcl/index.html
index 6536f69..5dbe8fe 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dcl/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dcl/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/ddl/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/ddl/index.html
index 3f66c09..007645d 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/ddl/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/ddl/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dml/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dml/index.html
index 289be7d..f96dd60 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dml/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dml/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dql/match/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dql/match/index.html
index 7c83160..1e40b0b 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dql/match/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dql/match/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dql/select/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dql/select/index.html
index b7b9e0f..4b9fd40 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dql/select/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dql/select/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dql/union/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dql/union/index.html
index 3756a8c..c5c3270 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dql/union/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dql/union/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/syntax/dql/with/index.html b/zh-CN/docs/zh/application-development/dsl/syntax/dql/with/index.html
index d3c864b..39fbf96 100644
--- a/zh-CN/docs/zh/application-development/dsl/syntax/dql/with/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/syntax/dql/with/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/udf/udaf/index.html b/zh-CN/docs/zh/application-development/dsl/udf/udaf/index.html
index cf0e9fb..163223f 100644
--- a/zh-CN/docs/zh/application-development/dsl/udf/udaf/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/udf/udaf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/udf/udf/index.html b/zh-CN/docs/zh/application-development/dsl/udf/udf/index.html
index 341e24a..55c4cbb 100644
--- a/zh-CN/docs/zh/application-development/dsl/udf/udf/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/udf/udf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/udf/udga/index.html b/zh-CN/docs/zh/application-development/dsl/udf/udga/index.html
index 1f81528..91bc7ba 100644
--- a/zh-CN/docs/zh/application-development/dsl/udf/udga/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/udf/udga/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/application-development/dsl/udf/udtf/index.html b/zh-CN/docs/zh/application-development/dsl/udf/udtf/index.html
index 3ea9994..3e8801a 100644
--- a/zh-CN/docs/zh/application-development/dsl/udf/udtf/index.html
+++ b/zh-CN/docs/zh/application-development/dsl/udf/udtf/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/console_principle/index.html b/zh-CN/docs/zh/concepts/console_principle/index.html
index 0277136..d9c148c 100644
--- a/zh-CN/docs/zh/concepts/console_principle/index.html
+++ b/zh-CN/docs/zh/concepts/console_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/dsl_principle/index.html b/zh-CN/docs/zh/concepts/dsl_principle/index.html
index 1727942..8a4f8a4 100644
--- a/zh-CN/docs/zh/concepts/dsl_principle/index.html
+++ b/zh-CN/docs/zh/concepts/dsl_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/framework_principle/index.html b/zh-CN/docs/zh/concepts/framework_principle/index.html
index aadcdc5..a0fb9ec 100644
--- a/zh-CN/docs/zh/concepts/framework_principle/index.html
+++ b/zh-CN/docs/zh/concepts/framework_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/glossary/index.html b/zh-CN/docs/zh/concepts/glossary/index.html
index 103f54e..65f4cb1 100644
--- a/zh-CN/docs/zh/concepts/glossary/index.html
+++ b/zh-CN/docs/zh/concepts/glossary/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/graph_view/index.html b/zh-CN/docs/zh/concepts/graph_view/index.html
index 6bd5e91..26db7b3 100644
--- a/zh-CN/docs/zh/concepts/graph_view/index.html
+++ b/zh-CN/docs/zh/concepts/graph_view/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/state_principle/index.html b/zh-CN/docs/zh/concepts/state_principle/index.html
index a96c01f..bee3771 100644
--- a/zh-CN/docs/zh/concepts/state_principle/index.html
+++ b/zh-CN/docs/zh/concepts/state_principle/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/concepts/stream_graph/index.html b/zh-CN/docs/zh/concepts/stream_graph/index.html
index e64d108..4f4288a 100644
--- a/zh-CN/docs/zh/concepts/stream_graph/index.html
+++ b/zh-CN/docs/zh/concepts/stream_graph/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/contacts/index.html b/zh-CN/docs/zh/contacts/index.html
index 42121bc..ca367ec 100644
--- a/zh-CN/docs/zh/contacts/index.html
+++ b/zh-CN/docs/zh/contacts/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/contribution/index.html b/zh-CN/docs/zh/contribution/index.html
index e1cd20f..7c0a00f 100644
--- a/zh-CN/docs/zh/contribution/index.html
+++ b/zh-CN/docs/zh/contribution/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/collaborate_with_g6vp/index.html b/zh-CN/docs/zh/deploy/collaborate_with_g6vp/index.html
index 44dd958..55f90b9 100644
--- a/zh-CN/docs/zh/deploy/collaborate_with_g6vp/index.html
+++ b/zh-CN/docs/zh/deploy/collaborate_with_g6vp/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/dashboard/index.html b/zh-CN/docs/zh/deploy/dashboard/index.html
index 4f8fd87..f80967b 100644
--- a/zh-CN/docs/zh/deploy/dashboard/index.html
+++ b/zh-CN/docs/zh/deploy/dashboard/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/install_guide/index.html b/zh-CN/docs/zh/deploy/install_guide/index.html
index 2c9cc85..a878460 100644
--- a/zh-CN/docs/zh/deploy/install_guide/index.html
+++ b/zh-CN/docs/zh/deploy/install_guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/install_llm/index.html b/zh-CN/docs/zh/deploy/install_llm/index.html
index 3956d26..f058df7 100644
--- a/zh-CN/docs/zh/deploy/install_llm/index.html
+++ b/zh-CN/docs/zh/deploy/install_llm/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/install_minikube/index.html b/zh-CN/docs/zh/deploy/install_minikube/index.html
index 86f6a03..612f468 100644
--- a/zh-CN/docs/zh/deploy/install_minikube/index.html
+++ b/zh-CN/docs/zh/deploy/install_minikube/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/deploy/quick_start_operator/index.html b/zh-CN/docs/zh/deploy/quick_start_operator/index.html
index 3284348..c6d150d 100644
--- a/zh-CN/docs/zh/deploy/quick_start_operator/index.html
+++ b/zh-CN/docs/zh/deploy/quick_start_operator/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/guide/index.html b/zh-CN/docs/zh/guide/index.html
index 7d78248..aec0de1 100644
--- a/zh-CN/docs/zh/guide/index.html
+++ b/zh-CN/docs/zh/guide/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/introduction/index.html b/zh-CN/docs/zh/introduction/index.html
index 55c3091..fe11b67 100644
--- a/zh-CN/docs/zh/introduction/index.html
+++ b/zh-CN/docs/zh/introduction/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/quick_start/quick_start/index.html b/zh-CN/docs/zh/quick_start/quick_start/index.html
index 6e7df23..74135ae 100644
--- a/zh-CN/docs/zh/quick_start/quick_start/index.html
+++ b/zh-CN/docs/zh/quick_start/quick_start/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/quick_start/quick_start_docker/index.html b/zh-CN/docs/zh/quick_start/quick_start_docker/index.html
index 054ce5d..2ba4c9e 100644
--- a/zh-CN/docs/zh/quick_start/quick_start_docker/index.html
+++ b/zh-CN/docs/zh/quick_start/quick_start_docker/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/quick_start/quick_start_infer&UDF/index.html b/zh-CN/docs/zh/quick_start/quick_start_infer&UDF/index.html
index 54ee125..066eb8a 100644
--- a/zh-CN/docs/zh/quick_start/quick_start_infer&UDF/index.html
+++ b/zh-CN/docs/zh/quick_start/quick_start_infer&UDF/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/quick_start/quick_start_sql_to_graph/index.html b/zh-CN/docs/zh/quick_start/quick_start_sql_to_graph/index.html
index 0fb2fb1..9d01d7a 100644
--- a/zh-CN/docs/zh/quick_start/quick_start_sql_to_graph/index.html
+++ b/zh-CN/docs/zh/quick_start/quick_start_sql_to_graph/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/reference/vs_join/index.html b/zh-CN/docs/zh/reference/vs_join/index.html
index 5714cb3..71b1607 100644
--- a/zh-CN/docs/zh/reference/vs_join/index.html
+++ b/zh-CN/docs/zh/reference/vs_join/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/docs/zh/thanks/index.html b/zh-CN/docs/zh/thanks/index.html
index e66f3b7..70047c4 100644
--- a/zh-CN/docs/zh/thanks/index.html
+++ b/zh-CN/docs/zh/thanks/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/download/index.html b/zh-CN/download/index.html
index 8ea3f15..d1f00b6 100644
--- a/zh-CN/download/index.html
+++ b/zh-CN/download/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/index.html b/zh-CN/index.html
index 01c1493..aa04110 100644
--- a/zh-CN/index.html
+++ b/zh-CN/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/markdown-page/index.html b/zh-CN/markdown-page/index.html
index fdb7840..e32b58e 100644
--- a/zh-CN/markdown-page/index.html
+++ b/zh-CN/markdown-page/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
diff --git a/zh-CN/search/index.html b/zh-CN/search/index.html
index 6e6c816..27719f9 100644
--- a/zh-CN/search/index.html
+++ b/zh-CN/search/index.html
@@ -15,7 +15,7 @@
<meta name="algolia-site-verification" content="4AB782AC2021573E">
<meta property="og:image" content="https://mdn.alipayobjects.com/huamei_tu4rvn/afts/img/A*PkdvSLd2A6kAAAAAQMAAAAgAep_eAQ/original"><link rel="stylesheet" href="/zh-CN/assets/css/styles.0d7412ce.css">
-<script src="/zh-CN/assets/js/runtime~main.edc1846e.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.2efe8f41.js" defer="defer"></script>
<script src="/zh-CN/assets/js/main.2b8e4031.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@geaflow.apache.org
For additional commands, e-mail: commits-help@geaflow.apache.org