This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new 867851f02367 docs(i18n): machine Japanese translation candidates
(#4603)
867851f02367 is described below
commit 867851f02367d6b604d2299e380af61e43ad694e
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Mon Nov 9 15:23:25 2026 +0800
docs(i18n): machine Japanese translation candidates (#4603)
## Japanese translation candidate
Source commit: `060685ca7597183b740b337fbef4fb1ec81f2683`
Model: `gpt-6-sol`; glossary: `1`
Review status: machine. Japanese proofreading and the normal PR checks
are still required.
| Action | Version | English source | SHA-256 prefix | Generation |
| --- | --- | --- | --- | --- |
| update | current |
[`course/101/03-apache-doris-table-guide.mdx`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/course/101/03-apache-doris-table-guide.mdx)
| `7188a7421409` | model call |
| translate_new | current |
[`docs/admin-manual/auth/authorization/custom.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/auth/authorization/custom.md)
| `a028c6e5ed15` | full (no-previous-translation) |
| translate_new | current |
[`docs/admin-manual/auth/tls-framework.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/auth/tls-framework.md)
| `4ea294e08941` | full (no-previous-translation) |
| translate_new | 4.x |
[`versioned_docs/version-4.x/admin-manual/auth/tls-framework.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/versioned_docs/version-4.x/admin-manual/auth/tls-framework.md)
| `4ea294e08941` | copied from `T06-DEV-050095814121071` |
| translate_new | current |
[`docs/admin-manual/cluster-management/tso.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/cluster-management/tso.md)
| `de579414ef2f` | full (no-previous-translation) |
| translate_new | current |
[`docs/admin-manual/config/ms-config.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/config/ms-config.md)
| `a7dbf4061a9e` | full (no-previous-translation) |
| translate_new | 4.x |
[`versioned_docs/version-4.x/admin-manual/config/ms-config.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/versioned_docs/version-4.x/admin-manual/config/ms-config.md)
| `a7dbf4061a9e` | copied from `T06-DEV-179147098604068` |
| translate_new | current |
[`docs/admin-manual/open-api/be-http/compaction-score.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/open-api/be-http/compaction-score.md)
| `57ebf62d7abe` | full (no-previous-translation) |
| translate_new | 4.x |
[`versioned_docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/versioned_docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md)
| `57ebf62d7abe` | copied from `T06-DEV-224293820533646` |
| translate_new | current |
[`docs/admin-manual/open-api/fe-http/tso-action.md`](https://github.com/apache/doris-website/blob/060685ca7597183b740b337fbef4fb1ec81f2683/docs/admin-manual/open-api/fe-http/tso-action.md)
| `02c3f5260f6b` | full (no-previous-translation) |
## Failed or skipped tasks
- `T06-COURSE-221435306617515`
(course/101/01-apache-doris-overview.mdx): Protected content changed
(code, links, numbers, MDX, anchors, or metadata)
+ actual - expected
+ '65d3e055528f601f068f379bc8a01595e126e138a702059f98ec26234ca1f577'
- 'd13817c685aa8aeaa88fe9b3511dec4203b324e809b8d69e54fecdad2306cf88'
- `T06-COURSE-046952371284127`
(course/101/02-apache-doris-installation-guide.mdx): Protected content
changed (code, links, numbers, MDX, anchors, or metadata)
+ actual - expected
+ '50cf5c122e2fa896cd44f1ac27248f10c8a1e9f0e64f82cb496e460d374107d3'
- '55e64ec3c6de9a309807312c952968a411812ecd1d427f742a80503c4de7df07'
- `T06-COURSE-083717791790995`
(course/101/04-apache-doris-data-operations-guide.mdx): Protected
content changed (code, links, numbers, MDX, anchors, or metadata)
+ actual - expected
+ '68ea2b30eab7858963d910991853332963b5725d23d62640ebf97179f8a6c70b'
- '565fd46c2ef1d411a099a0e47c277f53557acfa904d45f04fcd3911c93a6ac19'
- `T06-COURSE-242829378749115`
(course/101/05-apache-doris-query-data-guide.mdx): Protected content
changed (code, links, numbers, MDX, anchors, or metadata)
+ actual - expected
+ 'b94291d95cdd68ca853307538975eab3404812e72122e0c44256e7876103093f'
- 'aad059d9f1593c4322c62da0392a9dcf450845d190f249a37f398a21c3c3cea1'
- `T06-COURSE-249521753370444`
(course/101/06-apache-doris-lakehouse-guide.mdx): Protected content
changed (code, links, numbers, MDX, anchors, or metadata)
+ actual - expected
+ '7eebc8caf5a14a731d398607cddc1a26a8f37dbb2283e7a114f51bfa15cfeb81'
- '0cea80fcfd90942f1e4ba0a5bfb5f522e87e8fa0d8d896425e1518421e4dbd63'
## Candidates retained with warnings
None.
## Validation
Updates at or below 30% translate only changed Markdown/MDX blocks and
preserve other target blocks.
Change size is the sum of max(removed, added) non-empty English lines
per diff hunk, divided by the larger old/new line count.
New documents, larger updates, glossary changes or baselines that cannot
be aligned use full translation.
Generation uses at most three attempts per document. Deletions and
code-only updates may need no model call.
Each retry receives the earlier validation errors. Third-attempt content
issues are retained as warnings above.
Full attempt history and diagnostics are in generation.json and the page
state records.
Committed source hashes, managed paths and target/state hashes are
checked before applying candidates.
Master is checked before each model call and before publishing:
unrelated merges are allowed, a page changed on master is dropped, and a
translation configuration or tooling change discards the batch.
The publisher runs the shared PR translation-state, syntax and
internal-link checks before pushing.
The normal PR build and human proofreading are still required before
merging.
<!-- japanese-translation-automation:v1
bot-head=003a07a42faaad4389ed76953ccf5d44d1d9c4ff -->
Shared PR admission checks: passed (translation state, syntax, internal
links).
Co-authored-by: morningman <[email protected]>
---
.../current/101/03-apache-doris-table-guide.mdx | 182 ++++++++++-----------
.../admin-manual/auth/authorization/custom.md | 106 ++++++++++++
.../current/admin-manual/auth/tls-framework.md | 72 ++++++++
.../current/admin-manual/cluster-management/tso.md | 66 ++++++++
.../current/admin-manual/config/ms-config.md | 28 ++++
.../open-api/be-http/compaction-score.md | 88 ++++++++++
.../admin-manual/open-api/fe-http/tso-action.md | 63 +++++++
.../version-4.x/admin-manual/auth/tls-framework.md | 72 ++++++++
.../version-4.x/admin-manual/config/ms-config.md | 28 ++++
.../open-api/be-http/compaction-score.md | 88 ++++++++++
.../current/101/apache-doris-table-guide.json | 18 +-
.../4.x/admin-manual/auth/tls-framework.json | 55 +++++++
.../default/4.x/admin-manual/config/ms-config.json | 46 ++++++
.../open-api/be-http/compaction-score.json | 55 +++++++
.../admin-manual/auth/authorization/custom.json | 64 ++++++++
.../current/admin-manual/auth/tls-framework.json | 55 +++++++
.../admin-manual/cluster-management/tso.json | 64 ++++++++
.../current/admin-manual/config/ms-config.json | 46 ++++++
.../open-api/be-http/compaction-score.json | 55 +++++++
.../admin-manual/open-api/fe-http/tso-action.json | 64 ++++++++
20 files changed, 1220 insertions(+), 95 deletions(-)
diff --git
a/i18n/ja/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx
b/i18n/ja/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx
index 65bbac6c26a5..5b9a883acbfd 100644
---
a/i18n/ja/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx
+++
b/i18n/ja/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx
@@ -1,6 +1,6 @@
---
title: Apache Doris テーブルガイド
-description: モデル、キー、パーティション、バケット、検証を順に学びながら、Apache Doris
の実践的なテーブル設計の進め方を身につけます。
+description: モデル、キー、パーティション、バケット、検証について順を追って学び、Apache Doris
の実践的なテーブル設計手順を身につけます。
slug: /101/03-apache-doris-table-guide
sidebar_position: 3
keywords:
@@ -33,29 +33,29 @@ import {
<CourseLessonUnit
id="design-sequence"
label="設計の順序"
- title={<>ワークロードの実態を <em>四つの判断に落とし込む</em>.</>}
- summary="長く使えるテーブル設計では、まず行の意味を定め、次にソートキー、パーティションの境界、物理的な分散方法を選びます。"
- coachTitle="依存関係に沿った順序で判断しましょう。"
-
coach={<p>テーブルモデルは、キーが重複したときの意味を定めます。キー列はソート順を決めます。パーティションは、論理的なプルーニングとライフサイクル管理の境界を定めます。バケットは、タブレットの分散と並列処理の度合いを決めます。</p>}
+ title={<>ワークロードの実態を踏まえて <em>四つの決定を下す</em>.</>}
+
summary="長く使えるテーブル設計は、行の意味を定めることから始まります。その後、ソートキー、パーティションの境界、物理的なデータ分散方法を選びます。"
+ coachTitle="依存関係に沿って順番に決めましょう。"
+
coach={<p>テーブルモデルは、同じキーを持つ行をどう扱うかを定めます。キー列はソート順を決めます。パーティションは、データの絞り込みとライフサイクル管理の論理的な境界を定めます。バケットは、タブレットの分散と並列度を決めます。</p>}
calloutTitle="DDL を書く前に確認すること"
-
callout={<p>データは追記専用ですか、それとも更新されますか。よく使うフィルターは何ですか。期間ごとにどれだけのデータが届きますか。行を均等に分散できる列はどれですか。</p>}
+
callout={<p>データは追記のみですか、それとも更新されますか。主に使われるフィルターは何ですか。一定期間にどれだけのデータが入りますか。どの列なら行を均等に分散できますか。</p>}
check={{
question: "最初に決めるべきことは何ですか。",
- options: ["行の意味とテーブルモデル", "根拠のないバケット数"],
+ options: ["行の意味とテーブルモデル", "任意のバケット数"],
correctIndex: 0,
- correctFeedback: "正解です。物理的な配置を決める前に、キーの重複が何を意味するかを定めます。",
- incorrectFeedback: "バケット数は、テーブル内の行の意味を定めた後に決める物理設計上の項目です。",
+ correctFeedback: "正解です。同じキーを持つ行の意味を定めてから、物理的な配置を設計します。",
+ incorrectFeedback: "バケット数は、テーブルの意味に基づいて後から決める物理設計上の項目です。",
}}
>
<CourseConceptFlow
ariaLabel="Apache Doris のテーブル設計の順序"
focusIndex={0}
items={[
- { title: "モデル", description: "キーが重複したときの動作" },
- { title: "ソートキー", description: "読み取り時の局所性" },
+ { title: "モデル", description: "同じキーの扱い" },
+ { title: "ソートキー", description: "読み取り時のデータ局所性" },
{ title: "パーティション", description: "範囲とライフサイクル" },
{ title: "バケット", description: "タブレットの分散" },
- { title: "検証", description: "サイズ・偏り・実行計画" },
+ { title: "検証", description: "サイズ、偏り、実行計画" },
]}
/>
</CourseLessonUnit>
@@ -63,27 +63,27 @@ import {
<CourseLessonUnit
id="choose-table-model"
label="テーブルモデル"
- title={<>キーの重複は何を <em>意味するのか</em>?</>}
- summary="Duplicate はすべての行を保持し、Unique はキーごとに論理的な行を一つ保持します。Aggregate
は、指定した関数で値列を集約します。"
- coachTitle="モデルは、業務上のデータの意味に基づいて選びます。"
- coach={<p>変更されないファクトやログには Duplicate、CDC や最新状態を表すレコードには Unique
を使います。書き込み時の集約によって繰り返し実行するクエリの負荷を大きく減らせる場合は、Aggregate を使います。</p>}
+ title={<>同じキーを持つ行は何を <em>意味するのか</em>?</>}
+ summary="Duplicate はすべての行を保持し、Unique はキーごとに論理的な行を一つ保持します。Aggregate
は宣言した関数で値列を集約します。"
+ coachTitle="モデルの選択は、業務上の意味を決めることです。"
+ coach={<p>変更されないファクトやログには Duplicate、CDC や最新状態のレコードには Unique
を使います。書き込み時の集約によって、クエリで繰り返す処理を大幅に減らせる場合は Aggregate を使います。</p>}
calloutTitle="後から変更しにくい選択"
-
callout={<p>作成後にテーブルモデルを変更することはできません。モデルを変更するには、新しいテーブルを作成してデータを移行する必要があります。</p>}
+
callout={<p>テーブルモデルは作成後に変更できません。モデルを変えるには、新しいテーブルを作成してデータを移行する必要があります。</p>}
check={{
- question: "追記専用のクリックストリームに適したモデルはどれですか。",
+ question: "追記のみのクリックストリームに適したモデルはどれですか。",
options: ["Duplicate Key", "Unique Key", "Aggregate Key"],
correctIndex: 0,
correctFeedback: "正解です。Duplicate Key はすべてのイベントを保持します。",
- incorrectFeedback: "追記専用のイベントストリームでは、通常、元の行をすべて保持する必要があります。",
+ incorrectFeedback: "追記のみのイベントストリームでは、通常、元の行をすべて保持する必要があります。",
}}
>
<CourseConceptGrid
- ariaLabel="Apache Doris のテーブルモデルの選び方"
+ ariaLabel="Apache Doris のテーブルモデルの選択"
columns={3}
items={[
- { tag: 'DUP', title: "Duplicate Key", description:
"ファクト、ログ、詳細なイベントを、キーに基づいてマージせずに追記します。" },
- { tag: 'UNI', title: "Unique Key", description: "更新されるエンティティを
UPSERT し、論理的な最新の行を保持します。" },
- { tag: 'AGG', title: "Aggregate Key", description:
"SUM、MAX、MIN、REPLACE などの関数で指標値を集約します。" },
+ { tag: 'DUP', title: "Duplicate Key", description:
"ファクト、ログ、詳細なイベントを、キーに基づいて統合せずに追記します。" },
+ { tag: 'UNI', title: "Unique Key", description: "更新されるエンティティを
UPSERT し、最新の論理的な行を保持します。" },
+ { tag: 'AGG', title: "Aggregate Key", description:
"SUM、MAX、MIN、REPLACE などの関数でメジャーを集約します。" },
]}
/>
</CourseLessonUnit>
@@ -91,55 +91,55 @@ import {
<CourseLessonUnit
id="design-sort-key"
label="ソートキー"
- title={<>よく使うフィルターを、ストレージが <em>活用できる位置に置く</em>.</>}
- summary="Doris
はキー列の順にデータを格納します。そのため、先頭側のキー列はプルーニング、圧縮、スキャンのコストに大きく影響します。"
- coachTitle="使用頻度、選択性、列幅のすべてが重要です。"
-
coach={<p>頻繁にフィルターに使われ、データを効果的に絞り込める列を先頭に置きます。コンパクトな固定長型を優先し、キー全体の幅を抑えましょう。また、すべてのキー列が値列より前に置かれることも考慮してください。</p>}
- calloutTitle="インデックスで補う"
-
callout={<p>先頭側のソートキー列を活かせない重要なフィルターには、転置インデックスなどのセカンダリインデックスを使います。</p>}
+ title={<>よく使うフィルターをストレージが <em>活用できるようにする</em>.</>}
+ summary="Doris
はキー列の順序に従ってデータを格納します。そのため、ソートキーの先頭部分は、データの絞り込み、圧縮、スキャンコストに大きく影響します。"
+ coachTitle="フィルターの使用頻度、選択性、列幅はどれも重要です。"
+
coach={<p>頻繁にフィルターに使われ、対象データを効果的に絞り込める列を先頭に置きます。コンパクトな固定長型を優先し、キーの幅を抑えてください。また、すべてのキー列は値列より前に配置されます。</p>}
+ calloutTitle="インデックスで補完する"
+
callout={<p>ソートキーの先頭部分を利用できない重要なフィルターには、転置インデックスなどのセカンダリインデックスを使います。</p>}
check={{
- question: "通常、先頭のソートキーに適しているのはどちらの列ですか。",
- options: ["フィルターによく使う日付またはテナントのキー", "フィルターにはほとんど使わない長い説明文"],
+ question: "通常、ソートキーの先頭にはどちらの列が適していますか。",
+ options: ["頻繁にフィルターに使う日付列またはテナントキー", "フィルターにほとんど使わない長い説明文"],
correctIndex: 0,
- correctFeedback: "正解です。選択性の高いフィルターで頻繁に使う列なら、ソート順を活かせます。",
- incorrectFeedback:
"幅が広く、フィルターにほとんど使わない説明文は、有効なプルーニングにつながらないままキーのコストを増やします。",
+ correctFeedback: "正解です。使用頻度と選択性が高いフィルターなら、ソート順を効果的に利用できます。",
+ incorrectFeedback:
"幅が広く、フィルターにほとんど使わない説明文は、データの絞り込みに役立たないままキーのコストを増やします。",
}}
>
<CourseComparison
ariaLabel="効果的なソートキーと効果の低いソートキー"
- leftTitle="効果的な先頭列"
+ leftTitle="効果的な先頭部分"
leftLead="よく使う条件に合ったコンパクトな列。"
- leftItems={["フィルターによく使う", "プルーニングの効果が高い", "値が安定し、列幅が比較的小さい"]}
- rightTitle="効果の低い先頭列"
- rightLead="通常のアクセスパターンと関係のない幅の広い列。"
- rightItems={["フィルターにほとんど使わない", "プルーニングの効果が低い", "長い文字列を先頭側に置いている"]}
+ leftItems={["フィルターによく使われる", "データを効果的に絞り込める", "値が安定しており、幅が適度に狭い"]}
+ rightTitle="効果の低い先頭部分"
+ rightLead="通常のアクセス方法と関係のない幅広い列。"
+ rightItems={["フィルターにほとんど使われない", "データをあまり絞り込めない",
"長い文字列を先頭に置きすぎている"]}
/>
</CourseLessonUnit>
<CourseLessonUnit
id="choose-partitioning"
label="パーティショニング"
- title={<>ワークロードに合わせて、不要なデータを <em>除外できる論理的な境界を作る</em>.</>}
-
summary="パーティションはデータの範囲や値のグループを分離し、ライフサイクル操作を支えます。また、クエリが無関係なデータを読み取らずに済むようにします。"
- coachTitle="プルーニングと管理に役立つ境界でパーティションを分けましょう。"
-
coach={<p>境界を厳密に管理したい場合は手動パーティション、定期的な時間範囲には動的パーティションを使います。取り込む値に応じて範囲やリストを自動作成したい場合は、自動パーティションを使います。</p>}
- calloutTitle="クエリ側の条件"
- callout={<p>パーティションのプルーニングが役立つのは、クエリでパーティション列を絞り込む場合だけです。代表的な SQL と
EXPLAIN で確認しましょう。</p>}
+ title={<>ワークロードに合わせて <em>データを絞り込める論理的な境界を設ける</em>.</>}
+
summary="パーティションはデータの範囲や値のグループを分離し、ライフサイクル操作を支え、クエリが無関係なデータを読み飛ばせるようにします。"
+ coachTitle="パーティションは、データの絞り込みと保守に役立つように設計します。"
+
coach={<p>境界を厳密に管理する場合は手動パーティション、決まった時間枠に沿って管理する場合は動的パーティション、入力値に応じて範囲やリストを自動作成する場合は自動パーティションを使います。</p>}
+ calloutTitle="クエリ側に必要な条件"
+ callout={<p>パーティションプルーニングが役立つのは、クエリがパーティション列を条件で絞る場合だけです。代表的な SQL と
EXPLAIN で確認してください。</p>}
check={{
question: "日付パーティションがクエリに役立つ条件は何ですか。",
- options: ["日付のパーティション列に対する条件式", "VARCHAR の長さを大きくすること"],
+ options: ["日付のパーティション列に対する条件", "より大きな VARCHAR の長さ"],
correctIndex: 0,
- correctFeedback: "正解です。その条件式によって、Doris は無関係な日付パーティションを除外できます。",
- incorrectFeedback: "列幅を変えても、パーティションのプルーニングは有効になりません。",
+ correctFeedback: "正解です。その条件によって、Doris は無関係な日付パーティションを除外できます。",
+ incorrectFeedback: "列幅を変えてもパーティションプルーニングは有効になりません。",
}}
>
<CourseConceptGrid
ariaLabel="Apache Doris のパーティショニング方式"
columns={3}
items={[
- { tag: 'MAN', title: "手動", description: "RANGE または LIST
の境界を明示し、運用者が直接管理します。" },
- { tag: 'DYN', title: "動的", description:
"時間単位のパーティションをスケジュールに従って作成し、古いものを期限切れにします。" },
- { tag: 'AUTO', title: "自動", description:
"データ取り込み時の値に基づいて、RANGE または LIST パーティションを作成します。" },
+ { tag: 'MAN', title: "手動", description: "RANGE または LIST
の境界を明示的に指定し、運用者が直接管理します。" },
+ { tag: 'DYN', title: "動的", description:
"時間に基づくパーティションを、スケジュールに従って順次作成し、期限切れにします。" },
+ { tag: 'AUTO', title: "自動", description: "取り込み時の値に基づいて RANGE
または LIST パーティションを作成します。" },
]}
/>
</CourseLessonUnit>
@@ -147,14 +147,14 @@ import {
<CourseLessonUnit
id="choose-bucketing"
label="バケット分割"
- title={<>各パーティションを適切な <em>タブレットに分散する</em>.</>}
-
summary="ハッシュによるバケット分割では、キーに基づいて配置先が決まります。ランダムなバケット分割では、分散キーを指定せずに行を分散できます。"
- coachTitle="データの局所性、偏り、並列性のバランスを取ります。"
-
coach={<p>同じ場所に配置されたデータへのアクセスが重要な場合は、カーディナリティが高く、値が均等に分布するハッシュキーを選びます。適切なキーがなく、書き込みを均等に分散することを優先する場合は、ランダム分散を使います。</p>}
+ title={<>各パーティションを適切な <em>タブレットに分割する</em>.</>}
+ summary="ハッシュ方式のバケット分割では、キーに基づいて配置先が決まります。ランダム方式では、分散キーを指定せずに行を分散します。"
+ coachTitle="データ局所性、偏り、並列度のバランスを取ります。"
+
coach={<p>関連データを同じ場所で処理することが重要なら、値の種類が多く、分布が均等なハッシュキーを選びます。適切なキーがなく、書き込みを均等に分散することを優先するなら、ランダム分散を使います。</p>}
calloutTitle="数を決める前にサイズを見積もる"
-
callout={<p>パーティションごとの圧縮後のデータ量を見積もり、適切なタブレットサイズを目標にして、タブレット数をクラスタのリソースに見合う範囲に抑えます。バケットを増やせば必ず速くなるわけではありません。</p>}
+
callout={<p>パーティションごとの圧縮後のデータ量を見積もり、適切なタブレットサイズを目標にして、タブレット数をクラスタのリソースに見合う値にします。バケットを増やしても、必ず速くなるわけではありません。</p>}
check={{
- question: "カーディナリティの低いハッシュ用バケットキーには、主にどのようなリスクがありますか。",
+ question: "値の種類が少ないハッシュ方式のバケットキーを使う場合、主なリスクは何ですか。",
options: ["データの偏り", "スキーマの自動進化"],
correctIndex: 0,
correctFeedback: "正解です。異なる値が少なすぎると、一部のタブレットにデータが集中する可能性があります。",
@@ -162,40 +162,40 @@ import {
}}
>
<CourseComparison
- ariaLabel="ハッシュとランダムによるバケット分割の比較"
- leftTitle="ハッシュによるバケット分割"
- leftLead="同じキー値は決まった配置先に割り当てられます。"
- leftItems={["値が均等に分布する、カーディナリティの高いキーを選ぶ", "データの分散を考慮した JOIN に役立つ",
"キーの選び方が悪いと偏りが生じる"]}
- rightTitle="ランダムなバケット分割"
- rightLead="キーを指定せずに行を分散します。"
- rightItems={["データを簡単に均等に取り込める", "安定したキーがなくても使える", "データ配置の局所性が低い"]}
+ ariaLabel="ハッシュ方式とランダム方式のバケット分割の比較"
+ leftTitle="ハッシュ方式のバケット分割"
+ leftLead="同じキー値は、決まった規則に従って配置先に割り当てられます。"
+ leftItems={["値の種類が多く、均等に分布するキーを選ぶ", "データ分布を考慮した結合に対応",
"キーの選択が不適切だとデータが偏る"]}
+ rightTitle="ランダム方式のバケット分割"
+ rightLead="キーを指定せずに行を分散できます。"
+ rightItems={["手軽に均等なデータ取り込みを実現", "安定したキーがない場合にも有効",
"分散配置におけるデータの局所性は低い"]}
/>
</CourseLessonUnit>
<CourseLessonUnit
id="workload-templates"
label="ワークロードのパターン"
- title={<>設計上の選択を組み合わせ、整合性のある <em>テーブル構成を作る</em>.</>}
- summary="優れた DDL では、行の意味、プルーニング、分散、データ取り込み時の動作が互いに整合し、ワークロードに合っています。"
- coachTitle="テンプレートは設計の出発点です。"
- coach={<p>イベントのテーブルでは、Duplicate
Key、時間に基づくパーティション、データを均等に分散するキーを使うことがよくあります。CDC で扱うエンティティには、業務上のキーを使った Unique
Key が適しています。集約テーブルで Aggregate Key を使うのは、集約の粒度が安定している場合です。</p>}
- calloutTitle="実際のデータ特性で検証する"
-
callout={<p>実際の運用を代表するデータ量、キーのカーディナリティ、フィルターのパターン、更新頻度を使います。少量の人工的なサンプルでは、データの偏りやタブレットサイズの問題を見逃します。</p>}
+ title={<>各項目の選択を組み合わせ、一貫した <em>テーブル設計パターンにする</em>.</>}
+ summary="優れた DDL
には一貫性があります。行の意味、データの絞り込み、分散配置、取り込み時の動作が、いずれもワークロードに合っていることが重要です。"
+ coachTitle="テンプレートは、検証の出発点となる仮説です。"
+ coach={<p>イベントテーブルでは、Duplicate
Key、時間によるパーティション分割、データを均等に分散するキーを使うことがよくあります。CDC で扱うエンティティには、通常、ビジネスキーを持つ
Unique Key を使います。集計テーブルで Aggregate Key を使うのは、集計の粒度が安定している場合に限ります。</p>}
+ calloutTitle="実際のデータ特性に近い条件で検証"
+
callout={<p>実際に近いデータ量、キーのカーディナリティ、フィルターの傾向、更新頻度を使ってください。小さな人工データでは、データの偏りやタブレットのサイズに関する問題を見落とします。</p>}
check={{
- question: "本番用のテーブル構成は何に基づいて決めるべきですか。",
- options: ["実際のワークロードを代表するデータとクエリ", "できるだけ短い CREATE TABLE 文"],
+ question: "本番用テーブルのテンプレートは、何を根拠に選ぶべきですか?",
+ options: ["実際のワークロードを代表するデータ", "できるだけ短い CREATE TABLE 文"],
correctIndex: 0,
- correctFeedback: "正解です。実際のデータとクエリのパターンに照らして、設計上の選択を検証します。",
- incorrectFeedback: "DDL を短くすることは、性能や正しさを高めるための目標ではありません。",
+ correctFeedback: "正解です。実際のデータとクエリのパターンに照らして設計を検証します。",
+ incorrectFeedback: "DDL を短くすること自体は、性能や正確性の目標ではありません。",
}}
>
<CourseConceptGrid
- ariaLabel="Apache Doris でよく使うテーブル構成"
+ ariaLabel="Apache Doris でよく使うテーブル設計パターン"
columns={3}
items={[
- { tag: 'LOG', title: "イベント分析", description:
"重複する行を保持し、時間でプルーニングして、均等に並列スキャンします。" },
- { tag: 'CDC', title: "最新状態", description: "業務上の一意キーを使い、UPSERT
を中心にデータを取り込みます。" },
- { tag: 'KPI', title: "指標の集約", description:
"安定したディメンションと、指定した値の集約を使います。" },
+ { tag: 'LOG', title: "イベント分析", description: "Duplicate Key
で行を保持し、時間による絞り込みと均等な並列スキャンを行います。" },
+ { tag: 'CDC', title: "最新の状態", description:
"一意のビジネスキーを使い、UPSERT を中心にデータを取り込みます。" },
+ { tag: 'KPI', title: "指標の集計", description:
"安定したディメンションと、定義済みの値の集計方法を使います。" },
]}
/>
</CourseLessonUnit>
@@ -203,28 +203,28 @@ import {
<CourseLessonUnit
id="validate-table-design"
label="検証と改善"
- title={<>Doris が構築したテーブルの <em>実態を確認する</em>.</>}
-
summary="ワークロードを拡大する前に、パーティションのプルーニング、タブレットのサイズ、行の分散、クエリの実行計画、データロード時の動作を確認します。"
- coachTitle="DDL はテーブル設計の出発点です。"
-
coach={<p>メタデータを確認するコマンドでパーティションとタブレットを調べ、タブレットごとの行数とサイズを比較して偏りを確認します。さらに、EXPLAIN
とプロファイルを使って、想定したプルーニングと JOIN が行われているか確認します。</p>}
+ title={<>Doris が <em>実際に構築したテーブルを確認する</em>.</>}
+
summary="ワークロードを拡大する前に、パーティションの絞り込み、タブレットのサイズ、行の分布、クエリ実行計画、データロード時の動作を確認します。"
+ coachTitle="DDL の作成は、テーブル設計の始まりです。"
+
coach={<p>メタデータを確認するコマンドでパーティションとタブレットを調べ、タブレットごとの行数とサイズを比較して偏りを確認します。さらに、EXPLAIN
とプロファイルを使い、意図したデータの絞り込みと結合が行われているか確かめます。</p>}
calloutTitle="よくある問題"
-
callout={<p>小さなタブレットが多すぎると、スケジューリングとコンパクションの負荷が増えます。大きなタブレットやデータが偏ったタブレットが少数しかないと、並列性が制限され、負荷が集中します。</p>}
+
callout={<p>小さなタブレットが多すぎると、スケジューリングとコンパクションの負荷が増えます。大きなタブレットが少なすぎたり、サイズに偏りがあったりすると、並列処理が制限され、負荷が一部に集中します。</p>}
check={{
- question: "一つの BE に作業が大きく偏っている場合、何を調べるべきですか。",
- options: ["タブレットの分散とバケットキーによるデータの偏り", "見出しの大文字・小文字"],
+ question: "ある BE の処理量がほかより大幅に多い場合、何を確認すべきですか?",
+ options: ["タブレットの分布とバケットキーによるデータの偏り", "見出しの大文字と小文字"],
correctIndex: 0,
- correctFeedback: "正解です。タブレットの配置や値の偏りが、作業量の不均衡を説明することがよくあります。",
- incorrectFeedback: "表示の仕方は、データの物理的な分散に影響しません。",
+ correctFeedback: "正解です。タブレットの配置やキー値の分布の偏りが、処理量の差につながることがよくあります。",
+ incorrectFeedback: "表示の仕方は、データの物理的な分布に影響しません。",
}}
>
<CourseConceptFlow
- ariaLabel="Apache Doris のテーブル設計の検証サイクル"
+ ariaLabel="Apache Doris のテーブル設計の検証手順"
focusIndex={3}
items={[
- { title: "データロード", description: "実際の運用を代表するデータ量" },
- { title: "確認", description: "パーティションとタブレット" },
- { title: "実行計画の確認", description: "プルーニングと実行計画" },
- { title: "プロファイルの確認", description: "実行時のデータ" },
+ { title: "データロード", description: "実際に近いデータ量" },
+ { title: "確認", description: "パーティション + タブレット" },
+ { title: "EXPLAIN", description: "データの絞り込み + 実行計画" },
+ { title: "プロファイル分析", description: "実行時のデータ" },
{ title: "改善", description: "必要に応じて再構築" },
]}
/>
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/authorization/custom.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/authorization/custom.md
new file mode 100644
index 000000000000..06b39fb7e1d7
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/authorization/custom.md
@@ -0,0 +1,106 @@
+---
+{
+ "title": "カスタム認可プラグイン",
+ "language": "ja",
+ "description": "開発版の認可 SPI を使用して、カスタム認可ソースを実装、パッケージ化、設定します。",
+ "keywords": [
+ "Doris authorization",
+ "AuthorizationPlugin",
+ "AuthorizationPluginFactory"
+ ]
+}
+---
+
+開発版では、外部での権限判定、列マスキング、行フィルターに使用する
`org.apache.doris.authorization.spi.AuthorizationPlugin` と
`AuthorizationPluginFactory` が提供されています。
+
+:::note
+このインターフェースは開発版のものです。Doris 4.x では `CatalogAccessController` /
`AccessControllerFactory` を使用します。詳しくは [4.x
のガイド](https://doris.apache.org/docs/4.x/admin-manual/auth/authorization/custom)
を参照してください。サービス記述ファイルとディレクトリ構成は、これらのバージョン間で異なります。
+:::
+
+## 前提条件 {#prerequisites}
+
+デプロイ先の FE に対応するソースと JDK を使用し、`fe-authorization-api` と `fe-authorization-spi` を
provided 依存関係としてコンパイルしてください。Doris API クラスをプラグイン JAR に含めないでください。デプロイには、すべての FE
のプラグインディレクトリへの書き込み権限と、FE の再起動が必要です。検証には、対象のカタログを管理する権限を持つアカウントを使用してください。
+
+## 最小構成のファクトリー {#minimal-factory}
+
+以下の完全なファクトリーは、デフォルトですべての権限を拒否するプラグインを作成します。これにより、プラグインが検出されることを確認できます。実際にポリシーを適用するプラグインでは、`checkAction`
または `checkPrivilege` をオーバーライドし、ポリシーソースを参照する必要があります。`name()`
だけを実装したプラグインでは、アプリケーションのクエリを処理できません。
+
+```java
+package com.example.doris.authz;
+
+import java.util.Map;
+import org.apache.doris.authorization.spi.AuthorizationContext;
+import org.apache.doris.authorization.spi.AuthorizationPlugin;
+import org.apache.doris.authorization.spi.AuthorizationPluginFactory;
+
+public final class MyAuthorizationPluginFactory implements
AuthorizationPluginFactory {
+ @Override
+ public String name() { return "my-authz"; }
+
+ @Override
+ public AuthorizationPlugin create(Map<String, String> properties,
+ AuthorizationContext context) {
+ return new AuthorizationPlugin() {
+ @Override
+ public String name() { return "my-authz"; }
+ };
+ }
+}
+```
+
+JAR 内の次のサービス記述ファイルに、ファクトリーのクラス名を追加してください。
+
+```text
+META-INF/services/org.apache.doris.authorization.spi.AuthorizationPluginFactory
+```
+
+```text
+com.example.doris.authz.MyAuthorizationPluginFactory
+```
+
+## インターフェースの動作 {#interface-semantics}
+
+- `checkPrivilege(subject, resource, requirement, context)`
は正常に戻るとアクセスを許可し、`AccessDeniedException` を送出すると拒否します。デフォルトの実装では、requirement
に含まれるアクションに対して、ALL/ANY の規則に従って `checkAction` を呼び出します。実装されていないチェックはアクセスを拒否します。
+- `getRowFilters` は `List<RowFilterSpec>` を返し、`getDataMasks` は列名をキーとする
`Map<String, DataMaskSpec>` を返します。空のコレクションはポリシーがないことを意味し、アクセスの許可を意味しません。NULL
は返さないでください。ポリシーを読み込めない場合は例外を送出し、ステートメントを失敗させてください。
+-
各リソースの認可は、単一の認可ソースが判定します。カタログに紐付けられたソースは、そのカタログ内のオブジェクトを管理します。インスタンスの認可ソースは、インスタンスのオブジェクトとカタログレベルの権限付与を管理します。グローバル権限による免除を適用するかどうかはプラグインが判断し、`AuthorizationContext.grantedByGlobalScopeAuthority`
を参照できます。エンジンがすべてのプラグイン呼び出しを事前に認可するわけではありません。
+- エンジンによる例外として、skipAuth、該当する外部管理のカタログに対する skip_catalog_priv_check、および文字どおりの
root@'%' と admin@'%' アカウントに対する行フィルターとマスキングの免除は引き続き適用されます。
+- インスタンスは再利用され、設定済みのインスタンスが置き換えられるときに `close()`
が呼び出されます。ポリシーのキャッシュと更新、同時実行の制御、リソースの解放はプラグインが担当します。
+
+## パッケージ化とデプロイ {#packaging-and-deployment}
+
+JAR の MANIFEST に `Doris-Authorization-Plugin-Api-Version`
を宣言してください。バージョンには、デプロイ先 FE の SPI JAR にある
`META-INF/doris/authorization-plugin-api-version.properties`
に記載された値を使用します。現在のメジャーバージョンは `1` です。例を示します。
+
+```text
+Doris-Authorization-Plugin-Api-Version: 1.0
+```
+
+宣言がない場合やメジャーバージョンが異なる場合、プラグインは拒否されます。各プラグインを `authorization_plugins_dir`
の個別のサブディレクトリに配置してください。デフォルトのディレクトリは `${DORIS_HOME}/plugins/authorization` です。
+
+```text
+plugins/authorization/my-authz/my-authz.jar
+plugins/authorization/my-authz/lib/policy-client.jar
+```
+
+すべての FE
にデプロイして再起動してください。依存ライブラリは分離された子優先クラスローダーで読み込まれます。`org.apache.doris.authorization.*`
は常に FE から提供されます。
+
+## 設定と検証 {#configuration-and-validation}
+
+内部カタログでは、`access_controller_type = my-authz` を `fe.conf` に設定します。プロパティは
`authorization_config_file_path` から取得され、デフォルトでは
`${DORIS_HOME}/conf/authorization.conf` に解決されます。デフォルト値の `default`
を指定すると、組み込みの認可が選択されます。
+
+外部カタログでは、まずアクセス可能な HMS を用意し、例のエンドポイントと認証情報を置き換えてください。
+
+```sql
+CREATE CATALOG my_catalog PROPERTIES (
+ "type" = "hms",
+ "hive.metastore.uris" = "thrift://127.0.0.1:9083",
+ "access_controller.class" = "my-authz",
+ "access_controller.properties.api_url" = "https://policy.example.com",
+ "access_controller.properties.token" = "<token>"
+);
+```
+
+`access_controller.class` には、ファクトリー名またはファクトリーのクラス名を指定します。Doris は
`access_controller.properties.`
を取り除いてから設定をファクトリーに渡します。内部カタログを変更する前に、テスト用カタログで許可されるクエリと拒否されるクエリを検証してください。ポリシーを取得できない場合、列権限、マスキング、行フィルターも確認してください。ファクトリーが見つからない場合は、FE
の起動ログ、サービス記述ファイル、API バージョンの宣言、プラグインのディレクトリ構成を調べてください。
+
+## 旧インターフェースからの移行 {#migrating-from-the-legacy-interface}
+
+旧コントローラーは引き続きアダプターを介して動作しますが、非推奨です。`hasGlobal` のオーバーロードは削除され、データポリシーには
`DataMaskSpec` / `RowFilterSpec` を使用するようになりました。ポリシーを持つ旧実装は再コンパイルが必要です。従来の
Ranger のシングルトン動作を踏襲せず、新しい SPI のライフサイクルに従ってください。完全な実装はソースツリーの
`fe/fe-core/src/test/java/org/apache/doris/authorizationexample/`
にあり、パッケージ化の詳細は `fe/fe-authorization/fe-authorization-spi/README.md` に記載されています。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/tls-framework.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/tls-framework.md
new file mode 100644
index 000000000000..791e97597ba5
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/tls-framework.md
@@ -0,0 +1,72 @@
+---
+{
+ "title": "TLS フレームワークの設定",
+ "language": "ja",
+ "description": "固定された TLS 設定名、デフォルト値、対象コンポーネント、拡張時の指針を含む、Apache Doris の
TLS フレームワーク設定契約のリファレンス。",
+ "keywords": [
+ "Doris TLS フレームワーク",
+ "enable_tls",
+ "tls_verify_mode",
+ "mTLS",
+ "TLS 設定"
+ ]
+}
+---
+
+<!-- Knowledge type: Configuration parameters / Extension contract -->
+<!-- Applicable scenarios: TLS module integration / Configuration
compatibility -->
+
+このドキュメントでは、Apache Doris の TLS フレームワーク設定に関する契約を説明します。
+
+:::note
+このフレームワークは Apache Doris 4.1.4 から利用できます。4.0 では、これらの統一された TLS 設定は利用できません。
+:::
+
+オープンソース版の Doris パッケージには、TLS
と証明書ベースの認証に関するフレームワーク、設定項目、パーサーのサポート、拡張ポイントが含まれています。ただし、すべてのプロトコルに対応する完全な TLS
ランタイム実装は含まれていません。標準のオープンソースビルドでは、TLS モジュールが実装されていないプロトコルで TLS を有効にすると、TLS
モジュールが必要であることを示すエラーが発生します。
+
+以下に示す設定名、デフォルト値、意味はフレームワークによって固定されています。独自の TLS
モジュールを実装する場合は、互換性を保つために、このフレームワークと設定項目を使用してください。証明書の読み込み、TLS
コンテキストの作成、ハンドシェイクの動作、証明書の再読み込み、プロトコル固有のピア検証などの実装詳細は、TLS モジュールで実装できます。
+
+## 設定リファレンス {#configuration-reference}
+
+以下の設定項目はすべて省略可能で、表に示すデフォルト値が適用されます。FE の `fe.conf`、BE の `be.conf`、または Cloud
Meta Service/Recycler コンポーネントの設定に指定してください。FE の
`tls_cert_based_auth_ignore_password`
は動的に変更できますが、それ以外は起動時の設定として扱い、該当するプロセスを再起動してください。対象プロトコルで TLS
を有効にする前に、モジュールをデプロイして検証してください。
+
+| 設定項目 | 型 | 対象コンポーネント | デフォルト値 | 説明 | 備考 |
+| --- | --- | --- | --- | --- | --- |
+| `enable_tls` | Boolean | FE、BE、Cloud | `false` | プロセスの統一 TLS フレームワークを有効にします。
| `true` の場合、`tls_excluded_protocols` で除外されていないプロトコルでは、モジュールが提供する TLS
実装が使用されることを想定します。関連するすべての Doris コンポーネントで、互換性のある TLS 設定を使用する必要があります。 |
+| `tls_verify_mode` | String | FE、BE、Cloud | `verify_peer` |
証明書の検証動作を制御します。使用できる値は
`verify_none`、`verify_peer`、`verify_fail_if_no_peer_cert` です。 | [TLS
検証モード](#tls-verification-modes)を参照してください。 |
+| `tls_certificate_path` | String | FE、BE、Cloud | 空 | コンポーネントが TLS
サーバーまたはクライアントとして動作する際に使用する証明書のパスです。 | フレームワークの契約では PEM 形式の証明書を想定しています。TLS
モジュールは、リーフ証明書または証明書チェーン全体を含む PEM ファイルに対応できます。 |
+| `tls_private_key_path` | String | FE、BE、Cloud | 空 | `tls_certificate_path`
とともに使用する秘密鍵のパスです。 | フレームワークの契約では PEM 形式の秘密鍵を想定しています。 |
+| `tls_private_key_password` | String | FE、BE、Cloud | 空 | 秘密鍵ファイルのパスワードです。 |
Base64 でエンコードされた値ではなく、平文のパスワード文字列です。 |
+| `tls_ca_certificate_path` | String | FE、BE、Cloud | 空 | ピア証明書の検証に使用する CA
証明書または CA バンドルのパスです。 | フレームワークの契約では PEM 形式の CA
証明書を想定しています。この値が空で、その利用が許される場合、TLS モジュールはシステムまたは JDK のデフォルトのトラストストアも使用できます。 |
+| `tls_cert_refresh_interval_seconds` | Integer | FE、BE、Cloud | `3600` |
証明書ファイルの再読み込みが必要かどうかを確認する間隔です。単位は秒です。 | フレームワークはこの間隔を公開します。実際の証明書の再読み込み動作は TLS
モジュールが実装します。 |
+| `tls_excluded_protocols` | String | FE、BE、Cloud | 空 | TLS
を使用しないプロトコル名をカンマで区切ったリストです。大文字と小文字は区別しません。 | 使用できるプロトコル名はコンポーネントと TLS
モジュールによって異なります。オープンソースのフレームワークでは、`thrift`、`mysql`、`http`、`arrowflight`、`brpc`、`bdbje`
などのセレクターが予約されています。実装がサポートするセレクターのみを使用してください。 |
+| `tls_peer_cert_required_san_dns` | String | FE、BE、Cloud | 空 |
選択したプライベートプロトコルに対する、ピア証明書の DNS Subject Alternative Name の許可リストです。 | 構文は
`<protocol>=<dns1>,<dns2>;...`
です。フレームワークは、ピア証明書による接続許可の制御を必要とするモジュール実装のために、この契約を予約しています。 |
+| `tls_cert_based_auth_ignore_password` | Boolean | FE | `false` |
証明書ベースの認証が成功した後、パスワード検証を省略できるようにします。 | FE
のユーザー認証フローにのみ影響します。有効にするとパスワードによる保護が弱まるため、TLS
モジュールが必要な証明書認証の動作を提供している環境でのみ使用してください。 |
+
+## TLS 検証モード {#tls-verification-modes}
+
+| モード | クライアント側 | サーバー側 | 用途 |
+| --- | --- | --- | --- |
+| `verify_none` | サーバー証明書を検証しません。 | クライアント証明書を検証しません。 | 証明書を検証せずに TLS
による暗号化を必要とする環境向けです。 |
+| `verify_peer` | サーバー証明書を検証します。 | クライアント証明書を要求しません。 | 一方向の TLS 検証向けです。この値は
mTLS を要求しません。 |
+| `verify_fail_if_no_peer_cert` | サーバー証明書を検証します。 | クライアント証明書を要求し、検証します。 |
相互の証明書検証を必要とする mTLS 環境向けです。 |
+
+## オープンソースビルドでのフレームワークの動作 {#framework-behavior-in-the-open-source-build}
+
+オープンソースのフレームワークは設定定義と拡張ポイントを提供します。`enable_tls` が `false`
の場合、デフォルトのプロバイダーは既存の平文通信の動作を維持します。
+
+`enable_tls` が `true` の場合、プロトコルの起動またはチャネルの作成は TLS フレームワークを経由します。対応する TLS
モジュールが提供されていない場合、オープンソースのデフォルト実装はそのプロトコルの TLS 起動を拒否し、TLS モジュールが必要であることを通知します。
+
+したがって、上の表は互換性に関する契約であり、標準のオープンソースパッケージで TLS を有効にするための完全な運用ガイドではありません。
+
+## 実装上の指針 {#implementation-guidance}
+
+カスタム TLS モジュールを実装する場合は、次の規則に従ってください。
+
+- このドキュメントに記載された設定名と意味を使用してください。同じ TLS 動作に別の設定名を導入しないでください。
+- 同じ設定項目が存在する FE、BE、Cloud コンポーネント間で、設定の動作を統一してください。
+- ユーザーが TLS モジュールで処理するプロトコルを選択できるよう、`tls_excluded_protocols` を尊重してください。
+- サーバー側とクライアント側の両方で `tls_verify_mode` を一貫して実装してください。
+- 証明書の再読み込みをサポートする場合は、`tls_cert_refresh_interval_seconds`
を再読み込みの確認間隔として使用してください。
+- ピア証明書の DNS SAN による接続許可の制御をサポートする場合は、表に記載した `tls_peer_cert_required_san_dns`
の構文を使用してください。
+-
証明書ベースの認証では、フレームワークの拡張ポイントを通じて、実行時の認証実装を提供してください。カスタム実装がない場合、オープンソースのデフォルトサービスは何も行いません。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/cluster-management/tso.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/cluster-management/tso.md
new file mode 100644
index 000000000000..c4a237521f89
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/cluster-management/tso.md
@@ -0,0 +1,66 @@
+---
+{
+ "title": "Timestamp Oracle (TSO)",
+ "language": "ja",
+ "description": "TSO の設定、状態確認、復旧、時刻の巻き戻り時の動作。"
+}
+---
+
+<version since="dev">
+
+</version>
+
+## 概要 {#overview}
+
+Timestamp Oracle (TSO) は Master FE 上で単調増加するタイムスタンプを割り当て、Doris
のトランザクションと増分処理に共通の順序基準を提供します。現在は dev 版でのみ利用でき、FE 設定の `enable_feature_changelog`
で制御します。この設定のデフォルトは `false` です。物理部分は先行して進むことがあるため、TSO は正確な実時刻を示す値ではありません。
+
+## 基本的な使い方 {#basic-usage}
+
+1. `enable_feature_changelog = true` を FE の設定ファイル `fe.conf` に設定し、FE
を再起動します。この試験的な設定は動的に変更できません。すべての FE で設定を統一してください。変更前に、Changelog
を有効にすることによるクラスタへの影響を評価してください。
+2. クラスタに稼働可能な Master FE があることを確認し、有効な Doris の認証情報を用意します。
+3. 読み取り専用の状態確認エンドポイントにクエリを送ります。次のコマンドはデフォルトの HTTP ポートを使用し、root のパスワード入力を求めます。
+
+```bash
+curl --user root http://127.0.0.1:8030/api/tso
+```
+
+成功時のレスポンスでは `code = 0` となり、`data` に割り当てカーソル、物理時刻、論理カウンター、ウィンドウの終端が含まれます。Master
FE 以外に送られたリクエストは、デフォルトで Master FE に転送されます。レスポンスの完全な例は [TSO
Action](../open-api/fe-http/tso-action.md) を参照してください。
+
+リクエストを受け取った FE のローカル状態を確認するには、次を使用します。
+
+```bash
+curl --user root 'http://127.0.0.1:8030/api/tso?local=true'
+```
+
+この呼び出しではタイムスタンプは割り当てられません。ローカル状態は初期化されていない場合があります。また、Master FE 以外のローカルな結果は、現在の
Master FE の割り当て状態を表しません。
+
+## タイムスタンプの形式と復旧 {#timestamp-format-and-recovery}
+
+TSO は、ミリ秒単位の物理部分と 18 ビットの論理カウンターを含む 64
ビット整数です。同じ物理ミリ秒内では、カウンターを増やすことで後続の割り当て値を大きくします。物理部分が進むと、カウンターは初期値に戻ります。
+
+Master FE は将来の割り当てウィンドウを予約し、その境界をコミット済みの TSO 状態とともに永続化します。起動時や Master FE
のフェイルオーバー時には、サービスがこの状態を再生し、安全な開始点に調整してからタイムスタンプを割り当てます。永続化は現行の実装に含まれており、TSO
用のジャーナルやチェックポイントのスイッチを別途有効にする必要はありません。
+
+## 設定リファレンス {#configuration-reference}
+
+以下は FE の設定項目です。詳しくは [FE 設定](../config/fe-config.md) を参照してください。基本スイッチの
`enable_feature_changelog` は `boolean` 型で、デフォルトは `false` です。動的に変更できず、Master FE
だけに適用される設定でもありません。
+
+| パラメータ | 型 | デフォルト | 動的変更可能 | Master FE のみ | 説明 |
+| --- | --- | --- | --- | --- | --- |
+| `tso_service_update_interval_ms` | int | `50 ms` | false | true |
割り当てウィンドウの更新を確認する間隔。 |
+| `tso_max_update_retry_count` | int | `3` | true | true | TSO 状態の更新を試行する最大回数。
|
+| `tso_max_get_retry_count` | int | `10` | true | true | 失敗を報告するまでに TSO
の割り当てを試行する最大回数。 |
+| `tso_service_window_duration_ms` | int | `1000 ms` | true | true |
予約する割り当てウィンドウの長さ。定期的な永続化の間隔の上限も定めます。 |
+| `tso_clock_backward_startup_threshold_ms` | long | `1800000 ms` | true |
true | 起動時の調整において、再生したウィンドウの終端とシステムクロックとの差として許容する最大値。 |
+| `tso_time_offset_debug_mode` | int | `0 ms` | true | false |
テスト専用の時刻オフセット。通常運用では使用しないでください。 |
+| `enable_tso_forward_when_counter_full` | boolean | `true` | true | true |
論理カウンターが容量の半分を超え、実時刻の進みが不十分な場合に、物理部分を 1 ms 進めます。 |
+
+## エラーと注意事項 {#errors-and-caveats}
+
+- 再生したウィンドウの境界がシステムクロックより `tso_clock_backward_startup_threshold_ms`
を超えて先行している場合、起動時の調整は失敗します。サービスは新しい TSO を安全に割り当てられません。時刻同期、永続化された状態、FE
のログを確認してください。
+-
実行中に時刻の巻き戻りが起きると、サービスは直ちに停止する代わりに警告とメトリクスを出力します。物理時刻が進められない場合は論理カウンターを使い切る可能性があり、割り当ての再試行回数を使い切ると、TSO
を必要とするトランザクションが失敗することがあります。
+- `/api/tso`
が返すのはある時点のスナップショットであり、論理カウンターは消費しません。値がゼロである場合も、スナップショットが正常に見える場合も、それだけで初期化状態やトランザクションのコミットを確認したことにはなりません。
+- `information_schema.rowsets.COMMIT_TSO` は rowset の TSO 範囲を表す文字列であり、単一の
BIGINT ではありません。詳しくは [rowsets](../system-tables/information_schema/rowsets.md)
を参照してください。
+
+## ベストプラクティス {#best-practices}
+
+FE の時刻を同期し、HTTP エンドポイントで状態を確認してください。調整や割り当ての失敗を診断する際は FE
のログを使用します。意図的なテスト以外では、デバッグ用の時刻オフセットを変更しないでください。基本スイッチは、Changelog
とそれに依存する機能への影響を評価したうえで有効にしてください。実時刻の値を取得することだけを目的に有効にすべきではありません。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/config/ms-config.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/config/ms-config.md
new file mode 100644
index 000000000000..595c62a08149
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/config/ms-config.md
@@ -0,0 +1,28 @@
+---
+{
+ "title": "Meta Service の設定項目",
+ "language": "ja",
+ "description": "コンピュートとストレージを分離したモードにおける Meta Service
の設定項目の型、デフォルト値、実行時の変更可否、および効果。"
+}
+---
+
+このページでは、4.1.5 で追加された Meta Service の設定項目を紹介します。すべての設定項目はまだ網羅していません。Meta Service
は `doris_cloud.conf` を使用します。これらの設定項目は FE の `fe.conf` や BE の `be.conf` には指定しません。
+
+## トランザクション管理 {#transaction-management}
+
+### `enable_get_prepare_txn_by_coordinator_by_running_key`
{#enable_get_prepare_txn_by_coordinator_by_running_key}
+
+| 項目 | 値 |
+| --- | --- |
+| 型 | Boolean |
+| デフォルト値 | `true` |
+| 実行時に変更可能 | はい |
+| バージョン | 4.1.5 で追加 |
+
+Meta Service が coordinator
に属する準備済みトランザクションを検索する際のスキャン方法を制御します。デフォルトでは、まず実行中トランザクションのインデックスをスキャンし、対応するトランザクション情報を取得します。これにより、すべてのトランザクションレコードをスキャンせずに済みます。`false`
に設定すると、トランザクション情報のレコードを直接スキャンします。どちらの方法もトランザクションの選択条件は同じで、同じ結果を返します。スキャン方法を変更する必要がなければ、デフォルト値を維持してください。
+
+この項目を明示的に設定するには、Meta Service の `doris_cloud.conf` に以下を追加します。
+
+```properties
+enable_get_prepare_txn_by_coordinator_by_running_key = true
+```
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/be-http/compaction-score.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/be-http/compaction-score.md
new file mode 100644
index 000000000000..1bb9ff989519
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/be-http/compaction-score.md
@@ -0,0 +1,88 @@
+---
+{
+ "title": "Tablet の Compaction Score を確認する",
+ "language": "ja",
+ "description": "BE ノード上の Tablet の Compaction Score
を確認し、スコア順に表示します。存算分離モードでは、必要に応じてメタデータを同期できます。"
+}
+---
+
+# Tablet の Compaction Score を確認する {#view-tablet-compaction-score}
+
+## 概要 {#description}
+
+この読み取り専用 API を使用すると、単一の BE ノードで Compaction Score が高い Tablet を確認できます。Tablet
のスコアは、その Tablet に属する Rowset のスコアの合計です。結果は `compaction_score`
の降順に並びます。存算分離モードでは、クラスタ内のすべての Tablet ではなく、この BE が現在キャッシュしている稼働中の Tablet を調べます。
+
+## 前提条件 {#prerequisites}
+
+BE の HTTP ポート(デフォルトは 8040)に直接接続します。BE の設定 `enable_all_http_auth`
が有効な場合は、グローバルな `ADMIN` 権限を持つ Doris
アカウントを使用してください。例に示す認証情報は、そのアカウントのものに置き換えてください。
+
+## リクエスト {#request}
+
+```text
+GET /api/compaction_score?top_n=<integer>&sync_meta=<boolean>
+```
+
+リクエストボディはありません。
+
+## クエリパラメータ {#query-parameters}
+
+| パラメータ | 型 | 必須 | デフォルト | 説明 |
+|---|---|---|---|---|
+| `top_n` | 非負整数 | いいえ | 利用可能なすべての Tablet | スコアが高い順に、最大 N 個の Tablet を返します。`0`
を指定すると `[]` を返します。値は符号付き 64 ビット整数の範囲内である必要があります。 |
+| `sync_meta` | 真偽値:`true` または `false` | いいえ | `false` |
存算分離モードでのみ使用できます。`true` の場合、スコアを計算する前に、この BE がキャッシュしている稼働中の Tablet のメタデータと
Rowset を Meta Service から同期します。存算一体モードでは、`sync_meta=false`
を含め、このパラメータ自体を指定しないでください。 |
+
+## 基本的な使い方 {#basic-usage}
+
+次のリクエストでは、Tablet のデータを返さずに、接続とパラメータの処理を確認できます。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=0'
+```
+
+```json
+[]
+```
+
+## レスポンス {#response}
+
+リクエストが成功すると、HTTP 200 と JSON 配列を返します。各要素には、値が文字列の以下のフィールドが含まれます。
+
+| フィールド | 説明 |
+|---|---|
+| `tablet_id` | Tablet ID。 |
+| `compaction_score` | Tablet に属する Rowset の Compaction Score の合計。 |
+
+たとえば、最大 10 個の Tablet を返すには、次のようにリクエストします。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=10'
+```
+
+次の出力は例です。ID、スコア、返される Tablet の数は BE の状態によって異なります。
+
+```json
+[
+ {"compaction_score": "5", "tablet_id": "42595"},
+ {"compaction_score": "4", "tablet_id": "10034"}
+]
+```
+
+存算分離モードでは、スコアを計算する前に、キャッシュされている Tablet の最新のメタデータを取得できます。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=10&sync_meta=true'
+```
+
+レスポンスは同じ JSON 形式で、スコアは同期後に計算されます。
+
+## エラー処理と注意事項 {#error-handling-and-caveats}
+
+- `top_n` を解析できない場合や負の値を指定した場合は、HTTP 400 を返します。例:`invalid argument:
top_n=wrong`。
+- 存算一体モードで空でない `sync_meta` を指定すると、HTTP 400 を返します:``param `sync_meta` is only
available for cloud mode``。
+- 存算分離モードで、空でない `sync_meta` に `true` または `false` 以外を指定すると、HTTP 400
を返します。例:`invalid argument: sync_meta=wrong`。
+- メタデータの同期に失敗すると、HTTP 500 を返します。認証が有効な場合、認証情報がないか無効であれば、HTTP 401 または 403
を返すことがあります。
+- `top_n` が制限するのはレスポンスの件数であり、調査または同期する Tablet の数ではありません。スコアはこの BE の Tablet
の状態を示すもので、クラスタ全体のアトミックなスナップショットではありません。
+
+## ベストプラクティス {#best-practices}
+
+まず、小さな `top_n` とデフォルトの `sync_meta=false` を使用して、さらに調査する Tablet
を特定します。最新のメタデータが必要な場合は `sync_meta=true` を使用してください。`top_n`
を適用する前に、キャッシュされている稼働中の Tablet をすべて同期するため、レイテンシーと Meta Service の負荷が増える可能性があります。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/fe-http/tso-action.md
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/fe-http/tso-action.md
new file mode 100644
index 000000000000..0cf4c698ed22
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/fe-http/tso-action.md
@@ -0,0 +1,63 @@
+---
+{
+ "title": "TSO アクション",
+ "language": "ja",
+ "description": "Master FE への転送またはローカル状態の取得によって TSO の状態を確認します。"
+}
+---
+
+<version since="dev">
+
+</version>
+
+## 説明 {#description}
+
+タイムスタンプを割り当てたり論理カウンターを増加させたりせずに、TSO の状態のスナップショットを返します。有効な Doris
ユーザー認証が必要です。Master FE 以外の FE は、デフォルトでリクエストを Master FE に転送します。`local=true`
を指定すると、リクエストを受信した FE のローカル状態を返します。前提条件については
[TSO](../../cluster-management/tso.md) を参照してください。
+
+## リクエスト {#request}
+
+`GET /api/tso`
+
+## パラメータ {#parameters}
+
+| パラメータ | 型 | 必須 | デフォルト | 説明 |
+| --- | --- | --- | --- | --- |
+| `local` | boolean | いいえ | `false` | true の場合、Master FE への転送を省略し、リクエストを受信した
FE のローカル状態を照会します。 |
+
+パスパラメータとリクエストボディはありません。
+
+## 例 {#example}
+
+デフォルトの HTTP ポートを使用します。パスワードの入力を求められます。
+
+```bash
+curl --user root http://127.0.0.1:8030/api/tso
+```
+
+レスポンス例(タイムスタンプは稼働中のクラスターによって異なります):
+
+```json
+{
+ "code": 0,
+ "msg": "success",
+ "data": {
+ "window_end_physical_time": 1625097601000,
+ "current_tso": 426009585254400123,
+ "current_tso_physical_time": 1625097600000,
+ "current_tso_logical_counter": 123
+ }
+}
+```
+
+## レスポンスフィールド {#response-fields}
+
+| フィールド | 型 | 説明 |
+| --- | --- | --- |
+| `window_end_physical_time` | long | 予約された割り当てウィンドウの終端。単位は Unix ミリ秒です。 |
+| `current_tso` | long | 現在の合成された 64 ビットの割り当てカーソル。 |
+| `current_tso_physical_time` | long | current_tso の物理時間成分。単位はミリ秒です。 |
+| `current_tso_logical_counter` | long | current_tso の論理カウンター成分。 |
+
+## エラーと注意事項 {#errors-and-caveats}
+
+認証の失敗、FE
の準備ができていない状態、または転送の失敗により、正常なレスポンスを得られない場合があります。初期化されていないローカルサービスはゼロ値を返すことがあります。また、スナップショットを取得できても、後続の割り当てが成功するとは限りません。TSO
を割り当てるのは稼働中の Master FE だけですが、準備ができている FE であれば、どの FE
も状態確認のリクエストを受信できます。ウィンドウの終端は将来の割り当てウィンドウを予約するため、通常は現在の物理時間成分より先にあります。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/auth/tls-framework.md
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/auth/tls-framework.md
new file mode 100644
index 000000000000..791e97597ba5
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/auth/tls-framework.md
@@ -0,0 +1,72 @@
+---
+{
+ "title": "TLS フレームワークの設定",
+ "language": "ja",
+ "description": "固定された TLS 設定名、デフォルト値、対象コンポーネント、拡張時の指針を含む、Apache Doris の
TLS フレームワーク設定契約のリファレンス。",
+ "keywords": [
+ "Doris TLS フレームワーク",
+ "enable_tls",
+ "tls_verify_mode",
+ "mTLS",
+ "TLS 設定"
+ ]
+}
+---
+
+<!-- Knowledge type: Configuration parameters / Extension contract -->
+<!-- Applicable scenarios: TLS module integration / Configuration
compatibility -->
+
+このドキュメントでは、Apache Doris の TLS フレームワーク設定に関する契約を説明します。
+
+:::note
+このフレームワークは Apache Doris 4.1.4 から利用できます。4.0 では、これらの統一された TLS 設定は利用できません。
+:::
+
+オープンソース版の Doris パッケージには、TLS
と証明書ベースの認証に関するフレームワーク、設定項目、パーサーのサポート、拡張ポイントが含まれています。ただし、すべてのプロトコルに対応する完全な TLS
ランタイム実装は含まれていません。標準のオープンソースビルドでは、TLS モジュールが実装されていないプロトコルで TLS を有効にすると、TLS
モジュールが必要であることを示すエラーが発生します。
+
+以下に示す設定名、デフォルト値、意味はフレームワークによって固定されています。独自の TLS
モジュールを実装する場合は、互換性を保つために、このフレームワークと設定項目を使用してください。証明書の読み込み、TLS
コンテキストの作成、ハンドシェイクの動作、証明書の再読み込み、プロトコル固有のピア検証などの実装詳細は、TLS モジュールで実装できます。
+
+## 設定リファレンス {#configuration-reference}
+
+以下の設定項目はすべて省略可能で、表に示すデフォルト値が適用されます。FE の `fe.conf`、BE の `be.conf`、または Cloud
Meta Service/Recycler コンポーネントの設定に指定してください。FE の
`tls_cert_based_auth_ignore_password`
は動的に変更できますが、それ以外は起動時の設定として扱い、該当するプロセスを再起動してください。対象プロトコルで TLS
を有効にする前に、モジュールをデプロイして検証してください。
+
+| 設定項目 | 型 | 対象コンポーネント | デフォルト値 | 説明 | 備考 |
+| --- | --- | --- | --- | --- | --- |
+| `enable_tls` | Boolean | FE、BE、Cloud | `false` | プロセスの統一 TLS フレームワークを有効にします。
| `true` の場合、`tls_excluded_protocols` で除外されていないプロトコルでは、モジュールが提供する TLS
実装が使用されることを想定します。関連するすべての Doris コンポーネントで、互換性のある TLS 設定を使用する必要があります。 |
+| `tls_verify_mode` | String | FE、BE、Cloud | `verify_peer` |
証明書の検証動作を制御します。使用できる値は
`verify_none`、`verify_peer`、`verify_fail_if_no_peer_cert` です。 | [TLS
検証モード](#tls-verification-modes)を参照してください。 |
+| `tls_certificate_path` | String | FE、BE、Cloud | 空 | コンポーネントが TLS
サーバーまたはクライアントとして動作する際に使用する証明書のパスです。 | フレームワークの契約では PEM 形式の証明書を想定しています。TLS
モジュールは、リーフ証明書または証明書チェーン全体を含む PEM ファイルに対応できます。 |
+| `tls_private_key_path` | String | FE、BE、Cloud | 空 | `tls_certificate_path`
とともに使用する秘密鍵のパスです。 | フレームワークの契約では PEM 形式の秘密鍵を想定しています。 |
+| `tls_private_key_password` | String | FE、BE、Cloud | 空 | 秘密鍵ファイルのパスワードです。 |
Base64 でエンコードされた値ではなく、平文のパスワード文字列です。 |
+| `tls_ca_certificate_path` | String | FE、BE、Cloud | 空 | ピア証明書の検証に使用する CA
証明書または CA バンドルのパスです。 | フレームワークの契約では PEM 形式の CA
証明書を想定しています。この値が空で、その利用が許される場合、TLS モジュールはシステムまたは JDK のデフォルトのトラストストアも使用できます。 |
+| `tls_cert_refresh_interval_seconds` | Integer | FE、BE、Cloud | `3600` |
証明書ファイルの再読み込みが必要かどうかを確認する間隔です。単位は秒です。 | フレームワークはこの間隔を公開します。実際の証明書の再読み込み動作は TLS
モジュールが実装します。 |
+| `tls_excluded_protocols` | String | FE、BE、Cloud | 空 | TLS
を使用しないプロトコル名をカンマで区切ったリストです。大文字と小文字は区別しません。 | 使用できるプロトコル名はコンポーネントと TLS
モジュールによって異なります。オープンソースのフレームワークでは、`thrift`、`mysql`、`http`、`arrowflight`、`brpc`、`bdbje`
などのセレクターが予約されています。実装がサポートするセレクターのみを使用してください。 |
+| `tls_peer_cert_required_san_dns` | String | FE、BE、Cloud | 空 |
選択したプライベートプロトコルに対する、ピア証明書の DNS Subject Alternative Name の許可リストです。 | 構文は
`<protocol>=<dns1>,<dns2>;...`
です。フレームワークは、ピア証明書による接続許可の制御を必要とするモジュール実装のために、この契約を予約しています。 |
+| `tls_cert_based_auth_ignore_password` | Boolean | FE | `false` |
証明書ベースの認証が成功した後、パスワード検証を省略できるようにします。 | FE
のユーザー認証フローにのみ影響します。有効にするとパスワードによる保護が弱まるため、TLS
モジュールが必要な証明書認証の動作を提供している環境でのみ使用してください。 |
+
+## TLS 検証モード {#tls-verification-modes}
+
+| モード | クライアント側 | サーバー側 | 用途 |
+| --- | --- | --- | --- |
+| `verify_none` | サーバー証明書を検証しません。 | クライアント証明書を検証しません。 | 証明書を検証せずに TLS
による暗号化を必要とする環境向けです。 |
+| `verify_peer` | サーバー証明書を検証します。 | クライアント証明書を要求しません。 | 一方向の TLS 検証向けです。この値は
mTLS を要求しません。 |
+| `verify_fail_if_no_peer_cert` | サーバー証明書を検証します。 | クライアント証明書を要求し、検証します。 |
相互の証明書検証を必要とする mTLS 環境向けです。 |
+
+## オープンソースビルドでのフレームワークの動作 {#framework-behavior-in-the-open-source-build}
+
+オープンソースのフレームワークは設定定義と拡張ポイントを提供します。`enable_tls` が `false`
の場合、デフォルトのプロバイダーは既存の平文通信の動作を維持します。
+
+`enable_tls` が `true` の場合、プロトコルの起動またはチャネルの作成は TLS フレームワークを経由します。対応する TLS
モジュールが提供されていない場合、オープンソースのデフォルト実装はそのプロトコルの TLS 起動を拒否し、TLS モジュールが必要であることを通知します。
+
+したがって、上の表は互換性に関する契約であり、標準のオープンソースパッケージで TLS を有効にするための完全な運用ガイドではありません。
+
+## 実装上の指針 {#implementation-guidance}
+
+カスタム TLS モジュールを実装する場合は、次の規則に従ってください。
+
+- このドキュメントに記載された設定名と意味を使用してください。同じ TLS 動作に別の設定名を導入しないでください。
+- 同じ設定項目が存在する FE、BE、Cloud コンポーネント間で、設定の動作を統一してください。
+- ユーザーが TLS モジュールで処理するプロトコルを選択できるよう、`tls_excluded_protocols` を尊重してください。
+- サーバー側とクライアント側の両方で `tls_verify_mode` を一貫して実装してください。
+- 証明書の再読み込みをサポートする場合は、`tls_cert_refresh_interval_seconds`
を再読み込みの確認間隔として使用してください。
+- ピア証明書の DNS SAN による接続許可の制御をサポートする場合は、表に記載した `tls_peer_cert_required_san_dns`
の構文を使用してください。
+-
証明書ベースの認証では、フレームワークの拡張ポイントを通じて、実行時の認証実装を提供してください。カスタム実装がない場合、オープンソースのデフォルトサービスは何も行いません。
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/config/ms-config.md
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/config/ms-config.md
new file mode 100644
index 000000000000..595c62a08149
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/config/ms-config.md
@@ -0,0 +1,28 @@
+---
+{
+ "title": "Meta Service の設定項目",
+ "language": "ja",
+ "description": "コンピュートとストレージを分離したモードにおける Meta Service
の設定項目の型、デフォルト値、実行時の変更可否、および効果。"
+}
+---
+
+このページでは、4.1.5 で追加された Meta Service の設定項目を紹介します。すべての設定項目はまだ網羅していません。Meta Service
は `doris_cloud.conf` を使用します。これらの設定項目は FE の `fe.conf` や BE の `be.conf` には指定しません。
+
+## トランザクション管理 {#transaction-management}
+
+### `enable_get_prepare_txn_by_coordinator_by_running_key`
{#enable_get_prepare_txn_by_coordinator_by_running_key}
+
+| 項目 | 値 |
+| --- | --- |
+| 型 | Boolean |
+| デフォルト値 | `true` |
+| 実行時に変更可能 | はい |
+| バージョン | 4.1.5 で追加 |
+
+Meta Service が coordinator
に属する準備済みトランザクションを検索する際のスキャン方法を制御します。デフォルトでは、まず実行中トランザクションのインデックスをスキャンし、対応するトランザクション情報を取得します。これにより、すべてのトランザクションレコードをスキャンせずに済みます。`false`
に設定すると、トランザクション情報のレコードを直接スキャンします。どちらの方法もトランザクションの選択条件は同じで、同じ結果を返します。スキャン方法を変更する必要がなければ、デフォルト値を維持してください。
+
+この項目を明示的に設定するには、Meta Service の `doris_cloud.conf` に以下を追加します。
+
+```properties
+enable_get_prepare_txn_by_coordinator_by_running_key = true
+```
diff --git
a/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md
new file mode 100644
index 000000000000..1bb9ff989519
--- /dev/null
+++
b/i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md
@@ -0,0 +1,88 @@
+---
+{
+ "title": "Tablet の Compaction Score を確認する",
+ "language": "ja",
+ "description": "BE ノード上の Tablet の Compaction Score
を確認し、スコア順に表示します。存算分離モードでは、必要に応じてメタデータを同期できます。"
+}
+---
+
+# Tablet の Compaction Score を確認する {#view-tablet-compaction-score}
+
+## 概要 {#description}
+
+この読み取り専用 API を使用すると、単一の BE ノードで Compaction Score が高い Tablet を確認できます。Tablet
のスコアは、その Tablet に属する Rowset のスコアの合計です。結果は `compaction_score`
の降順に並びます。存算分離モードでは、クラスタ内のすべての Tablet ではなく、この BE が現在キャッシュしている稼働中の Tablet を調べます。
+
+## 前提条件 {#prerequisites}
+
+BE の HTTP ポート(デフォルトは 8040)に直接接続します。BE の設定 `enable_all_http_auth`
が有効な場合は、グローバルな `ADMIN` 権限を持つ Doris
アカウントを使用してください。例に示す認証情報は、そのアカウントのものに置き換えてください。
+
+## リクエスト {#request}
+
+```text
+GET /api/compaction_score?top_n=<integer>&sync_meta=<boolean>
+```
+
+リクエストボディはありません。
+
+## クエリパラメータ {#query-parameters}
+
+| パラメータ | 型 | 必須 | デフォルト | 説明 |
+|---|---|---|---|---|
+| `top_n` | 非負整数 | いいえ | 利用可能なすべての Tablet | スコアが高い順に、最大 N 個の Tablet を返します。`0`
を指定すると `[]` を返します。値は符号付き 64 ビット整数の範囲内である必要があります。 |
+| `sync_meta` | 真偽値:`true` または `false` | いいえ | `false` |
存算分離モードでのみ使用できます。`true` の場合、スコアを計算する前に、この BE がキャッシュしている稼働中の Tablet のメタデータと
Rowset を Meta Service から同期します。存算一体モードでは、`sync_meta=false`
を含め、このパラメータ自体を指定しないでください。 |
+
+## 基本的な使い方 {#basic-usage}
+
+次のリクエストでは、Tablet のデータを返さずに、接続とパラメータの処理を確認できます。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=0'
+```
+
+```json
+[]
+```
+
+## レスポンス {#response}
+
+リクエストが成功すると、HTTP 200 と JSON 配列を返します。各要素には、値が文字列の以下のフィールドが含まれます。
+
+| フィールド | 説明 |
+|---|---|
+| `tablet_id` | Tablet ID。 |
+| `compaction_score` | Tablet に属する Rowset の Compaction Score の合計。 |
+
+たとえば、最大 10 個の Tablet を返すには、次のようにリクエストします。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=10'
+```
+
+次の出力は例です。ID、スコア、返される Tablet の数は BE の状態によって異なります。
+
+```json
+[
+ {"compaction_score": "5", "tablet_id": "42595"},
+ {"compaction_score": "4", "tablet_id": "10034"}
+]
+```
+
+存算分離モードでは、スコアを計算する前に、キャッシュされている Tablet の最新のメタデータを取得できます。
+
+```shell
+curl -u '<user>:<password>'
'http://127.0.0.1:8040/api/compaction_score?top_n=10&sync_meta=true'
+```
+
+レスポンスは同じ JSON 形式で、スコアは同期後に計算されます。
+
+## エラー処理と注意事項 {#error-handling-and-caveats}
+
+- `top_n` を解析できない場合や負の値を指定した場合は、HTTP 400 を返します。例:`invalid argument:
top_n=wrong`。
+- 存算一体モードで空でない `sync_meta` を指定すると、HTTP 400 を返します:``param `sync_meta` is only
available for cloud mode``。
+- 存算分離モードで、空でない `sync_meta` に `true` または `false` 以外を指定すると、HTTP 400
を返します。例:`invalid argument: sync_meta=wrong`。
+- メタデータの同期に失敗すると、HTTP 500 を返します。認証が有効な場合、認証情報がないか無効であれば、HTTP 401 または 403
を返すことがあります。
+- `top_n` が制限するのはレスポンスの件数であり、調査または同期する Tablet の数ではありません。スコアはこの BE の Tablet
の状態を示すもので、クラスタ全体のアトミックなスナップショットではありません。
+
+## ベストプラクティス {#best-practices}
+
+まず、小さな `top_n` とデフォルトの `sync_meta=false` を使用して、さらに調査する Tablet
を特定します。最新のメタデータが必要な場合は `sync_meta=true` を使用してください。`top_n`
を適用する前に、キャッシュされている稼働中の Tablet をすべて同期するため、レイテンシーと Meta Service の負荷が増える可能性があります。
diff --git
a/translations/state/ja/pages/course/current/101/apache-doris-table-guide.json
b/translations/state/ja/pages/course/current/101/apache-doris-table-guide.json
index 64ce860857b6..6e8091600ff7 100644
---
a/translations/state/ja/pages/course/current/101/apache-doris-table-guide.json
+++
b/translations/state/ja/pages/course/current/101/apache-doris-table-guide.json
@@ -8,13 +8,23 @@
"sourceLocale": "en",
"sourcePath": "course/101/03-apache-doris-table-guide.mdx",
"targetPath":
"i18n/ja/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx",
- "sourceCommit": "8b63adc6dffaae56e0353e0b5ca8b9dce41803f6",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
"sourceHash":
"7188a74214096313bd71bc8663d896fe5ad8f984b412a49239930b8fed2cb4d2",
"sourceTechnicalHash":
"c25bf62b78bb1f0fad182507ba609f4f820567d208a75f7e32bb1d64d73b264f",
- "targetHash":
"4553449f9569ae6525ee92d565601c80df0040b78ba41bdc072445404ab01af9",
+ "targetHash":
"e1931440138aff24534376e2a6110ed130f8054bc926d64ed3d4172de3f4ab84",
"reviewStatus": "machine",
"ownership": "machine",
- "translatedAt": "2026-10-26T14:06:43.225Z",
- "glossaryVersion": "1"
+ "translatedAt": "2026-11-07T16:40:49.575Z",
+ "glossaryVersion": "1",
+ "sourceRevisions": {
+ "en": {
+ "path": "course/101/03-apache-doris-table-guide.mdx",
+ "blob": "b0817228885e17b890f0e9b27e26219a1a662451"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs-course/current/101/03-apache-doris-table-guide.mdx",
+ "blob": "045bc0eecd193dcd1bd2bce3acd20dda2de460d1"
+ }
+ }
}
}
diff --git
a/translations/state/ja/pages/default/4.x/admin-manual/auth/tls-framework.json
b/translations/state/ja/pages/default/4.x/admin-manual/auth/tls-framework.json
new file mode 100644
index 000000000000..5b639a7380d5
--- /dev/null
+++
b/translations/state/ja/pages/default/4.x/admin-manual/auth/tls-framework.json
@@ -0,0 +1,55 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "4.x",
+ "docId": "admin-manual/auth/tls-framework",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath":
"versioned_docs/version-4.x/admin-manual/auth/tls-framework.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/auth/tls-framework.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"4ea294e089419c085e46dae72f52ae8b751035202fc0a573639e9f27b8135a6d",
+ "sourceTechnicalHash":
"67992242190d81f957842223e23c04ea92718900e2e5399c7961bdcffbca2472",
+ "targetHash":
"1752159c01a89d5df4cd172b5d906cf0d101f56f7b4b996c15e5e6433f0f4110",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:52:43.362Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 2,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"4ea294e089419c085e46dae72f52ae8b751035202fc0a573639e9f27b8135a6d",
+ "targetHash":
"1752159c01a89d5df4cd172b5d906cf0d101f56f7b4b996c15e5e6433f0f4110",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 1:
expected [\"html\",null,null,\"<!-- Knowledge type: Configuration parameters /
Extension contract -->\"]; received [\"html\",null,null,\"<!-- ナレッジの種類: 設定パラメータ
/ 拡張契約 -->\"]\nprotected node 2: expected [\"html\",null,null,\"<!-- Applicable
scenarios: TLS module integration / Configuration compatibility -->\"];
received [\"html\",null,null,\"<!-- 適用シナリオ: TLS モジュールの統合 / 設定の互換性 -->\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path":
"versioned_docs/version-4.x/admin-manual/auth/tls-framework.md",
+ "blob": "395b9f863ba1d9999658fb5921ee61383ec70604"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/admin-manual/auth/tls-framework.md",
+ "blob": "39ade6574fed4d7665eee8d8d12ad4bbbe00e655"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/4.x/admin-manual/config/ms-config.json
b/translations/state/ja/pages/default/4.x/admin-manual/config/ms-config.json
new file mode 100644
index 000000000000..9571134cb803
--- /dev/null
+++ b/translations/state/ja/pages/default/4.x/admin-manual/config/ms-config.json
@@ -0,0 +1,46 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "4.x",
+ "docId": "admin-manual/config/ms-config",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath":
"versioned_docs/version-4.x/admin-manual/config/ms-config.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/config/ms-config.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"a7dbf4061a9ee8c9251f5133dd41a22746d3f455be17f34c0e851a0d47fba739",
+ "sourceTechnicalHash":
"a38446236635fce679ec0ddec310a0d43c6a648dec4383f328edd97fc3059194",
+ "targetHash":
"169fe76e633b9a8fb781299153348cc0fb9ffd326dc2e20eb1e45a45cc9c0f7a",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:55:26.462Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 1,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"a7dbf4061a9ee8c9251f5133dd41a22746d3f455be17f34c0e851a0d47fba739",
+ "targetHash":
"169fe76e633b9a8fb781299153348cc0fb9ffd326dc2e20eb1e45a45cc9c0f7a",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "versioned_docs/version-4.x/admin-manual/config/ms-config.md",
+ "blob": "5b00f770b9abefeb9ae799d643fff3ff7a73043e"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/admin-manual/config/ms-config.md",
+ "blob": "9dab5f1d34a7a7929b04857d04f48bce3c46b787"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/4.x/admin-manual/open-api/be-http/compaction-score.json
b/translations/state/ja/pages/default/4.x/admin-manual/open-api/be-http/compaction-score.json
new file mode 100644
index 000000000000..07af25880fc2
--- /dev/null
+++
b/translations/state/ja/pages/default/4.x/admin-manual/open-api/be-http/compaction-score.json
@@ -0,0 +1,55 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "4.x",
+ "docId": "admin-manual/open-api/be-http/compaction-score",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath":
"versioned_docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"57ebf62d7abeabc8a2d0c2720e8069d158fad061a5636e89933206f29b2dbbcb",
+ "sourceTechnicalHash":
"a62c0a89c9bea2f0262a42418137f8df37220698316a344c26144ad0a4a79afd",
+ "targetHash":
"748e3c484f3d6bb97b4fd6e8a0832618410e92eacf1a65f89fafa77867240d20",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:56:43.760Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 2,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"57ebf62d7abeabc8a2d0c2720e8069d158fad061a5636e89933206f29b2dbbcb",
+ "targetHash":
"748e3c484f3d6bb97b4fd6e8a0832618410e92eacf1a65f89fafa77867240d20",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nnumeric values:
expected
[\"10\",\"200\",\"400\",\"400\",\"400\",\"401\",\"403\",\"500\",\"64\",\"8040\"];
received
[\"0\",\"1\",\"10\",\"2\",\"200\",\"400\",\"400\",\"400\",\"401\",\"403\",\"500\",\"64\",\"8040\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path":
"versioned_docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md",
+ "blob": "bcefbcf0e2f01de86b7c5311925a22525be503bb"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/admin-manual/open-api/be-http/compaction-score.md",
+ "blob": "233dc1fc4c3281d73bf3a6dacf840089a0714fdc"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/auth/authorization/custom.json
b/translations/state/ja/pages/default/current/admin-manual/auth/authorization/custom.json
new file mode 100644
index 000000000000..568b57175455
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/auth/authorization/custom.json
@@ -0,0 +1,64 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/auth/authorization/custom",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/auth/authorization/custom.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/authorization/custom.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"a028c6e5ed15c65bb9d596e6aa87cc257dd95d80d8cbdc227ee35929b4e0aec2",
+ "sourceTechnicalHash":
"6fc7eade9c0391901e9dd3c644f08373106b7c6fe307dcc682cc180138d9b3a5",
+ "targetHash":
"fe4d71ef454b159e3e350853afcbb3d33972ab1299c71393433d15c6a762b1c5",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:50:28.418Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 3,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"a028c6e5ed15c65bb9d596e6aa87cc257dd95d80d8cbdc227ee35929b4e0aec2",
+ "targetHash":
"fe4d71ef454b159e3e350853afcbb3d33972ab1299c71393433d15c6a762b1c5",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node
31: expected [\"inlineCode\",null,null,\"access_controller_type = my-authz\"];
received [\"inlineCode\",null,null,\"fe.conf\"]\nprotected node 32: expected
[\"inlineCode\",null,null,\"fe.conf\"]; received
[\"inlineCode\",null,null,\"access_controller_type = my-authz\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nnumeric values:
expected [\"4\",\"4\"]; received [\"1\",\"4\",\"4\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 3,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/auth/authorization/custom.md",
+ "blob": "68f63dd12dc8d267d5f72e5a69ff0624cc372e75"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/auth/authorization/custom.md",
+ "blob": "6e402b7203e962b5c311fd7737ac5f97ca087a85"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/auth/tls-framework.json
b/translations/state/ja/pages/default/current/admin-manual/auth/tls-framework.json
new file mode 100644
index 000000000000..d081aba0f3f4
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/auth/tls-framework.json
@@ -0,0 +1,55 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/auth/tls-framework",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/auth/tls-framework.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/auth/tls-framework.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"4ea294e089419c085e46dae72f52ae8b751035202fc0a573639e9f27b8135a6d",
+ "sourceTechnicalHash":
"67992242190d81f957842223e23c04ea92718900e2e5399c7961bdcffbca2472",
+ "targetHash":
"1752159c01a89d5df4cd172b5d906cf0d101f56f7b4b996c15e5e6433f0f4110",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:52:43.362Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 2,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"4ea294e089419c085e46dae72f52ae8b751035202fc0a573639e9f27b8135a6d",
+ "targetHash":
"1752159c01a89d5df4cd172b5d906cf0d101f56f7b4b996c15e5e6433f0f4110",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 1:
expected [\"html\",null,null,\"<!-- Knowledge type: Configuration parameters /
Extension contract -->\"]; received [\"html\",null,null,\"<!-- ナレッジの種類: 設定パラメータ
/ 拡張契約 -->\"]\nprotected node 2: expected [\"html\",null,null,\"<!-- Applicable
scenarios: TLS module integration / Configuration compatibility -->\"];
received [\"html\",null,null,\"<!-- 適用シナリオ: TLS モジュールの統合 / 設定の互換性 -->\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/auth/tls-framework.md",
+ "blob": "395b9f863ba1d9999658fb5921ee61383ec70604"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/auth/tls-framework.md",
+ "blob": "39ade6574fed4d7665eee8d8d12ad4bbbe00e655"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/cluster-management/tso.json
b/translations/state/ja/pages/default/current/admin-manual/cluster-management/tso.json
new file mode 100644
index 000000000000..48b66ba1a627
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/cluster-management/tso.json
@@ -0,0 +1,64 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/cluster-management/tso",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/cluster-management/tso.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/cluster-management/tso.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"de579414ef2f5a1fb036f9e51cccfd679438a1a6192e5a6f2aac5da60eafb338",
+ "sourceTechnicalHash":
"10dec0b96a4066b735872cc4739beb9d7718a3f22c35d581f9e4481e26989cdf",
+ "targetHash":
"70ceb50ea9c2f9a2f9aa548bc47706f22493589bb873560e096b1e29bf39c2a3",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:55:09.369Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 3,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"de579414ef2f5a1fb036f9e51cccfd679438a1a6192e5a6f2aac5da60eafb338",
+ "targetHash":
"70ceb50ea9c2f9a2f9aa548bc47706f22493589bb873560e096b1e29bf39c2a3",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 5:
expected [\"inlineCode\",null,null,\"enable_feature_changelog = true\"];
received [\"inlineCode\",null,null,\"fe.conf\"]\nprotected node 6: expected
[\"inlineCode\",null,null,\"fe.conf\"]; received
[\"inlineCode\",null,null,\"enable_feature_changelog = true\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 5:
expected [\"inlineCode\",null,null,\"enable_feature_changelog = true\"];
received [\"inlineCode\",null,null,\"fe.conf\"]\nprotected node 6: expected
[\"inlineCode\",null,null,\"fe.conf\"]; received
[\"inlineCode\",null,null,\"enable_feature_changelog = true\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 3,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/cluster-management/tso.md",
+ "blob": "048981a755b9778904d65ff4357231096e7d4eb2"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/cluster-management/tso.md",
+ "blob": "c94b09ed6c8b8851b2daba755ec42844b724e5e2"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/config/ms-config.json
b/translations/state/ja/pages/default/current/admin-manual/config/ms-config.json
new file mode 100644
index 000000000000..d36777429da8
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/config/ms-config.json
@@ -0,0 +1,46 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/config/ms-config",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/config/ms-config.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/config/ms-config.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"a7dbf4061a9ee8c9251f5133dd41a22746d3f455be17f34c0e851a0d47fba739",
+ "sourceTechnicalHash":
"a38446236635fce679ec0ddec310a0d43c6a648dec4383f328edd97fc3059194",
+ "targetHash":
"169fe76e633b9a8fb781299153348cc0fb9ffd326dc2e20eb1e45a45cc9c0f7a",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:55:26.462Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 1,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"a7dbf4061a9ee8c9251f5133dd41a22746d3f455be17f34c0e851a0d47fba739",
+ "targetHash":
"169fe76e633b9a8fb781299153348cc0fb9ffd326dc2e20eb1e45a45cc9c0f7a",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/config/ms-config.md",
+ "blob": "5b00f770b9abefeb9ae799d643fff3ff7a73043e"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/config/ms-config.md",
+ "blob": "9dab5f1d34a7a7929b04857d04f48bce3c46b787"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/open-api/be-http/compaction-score.json
b/translations/state/ja/pages/default/current/admin-manual/open-api/be-http/compaction-score.json
new file mode 100644
index 000000000000..91080d6df874
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/open-api/be-http/compaction-score.json
@@ -0,0 +1,55 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/open-api/be-http/compaction-score",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/open-api/be-http/compaction-score.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/be-http/compaction-score.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"57ebf62d7abeabc8a2d0c2720e8069d158fad061a5636e89933206f29b2dbbcb",
+ "sourceTechnicalHash":
"a62c0a89c9bea2f0262a42418137f8df37220698316a344c26144ad0a4a79afd",
+ "targetHash":
"748e3c484f3d6bb97b4fd6e8a0832618410e92eacf1a65f89fafa77867240d20",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:56:43.760Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 2,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"57ebf62d7abeabc8a2d0c2720e8069d158fad061a5636e89933206f29b2dbbcb",
+ "targetHash":
"748e3c484f3d6bb97b4fd6e8a0832618410e92eacf1a65f89fafa77867240d20",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nnumeric values:
expected
[\"10\",\"200\",\"400\",\"400\",\"400\",\"401\",\"403\",\"500\",\"64\",\"8040\"];
received
[\"0\",\"1\",\"10\",\"2\",\"200\",\"400\",\"400\",\"400\",\"401\",\"403\",\"500\",\"64\",\"8040\"]"
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/open-api/be-http/compaction-score.md",
+ "blob": "bcefbcf0e2f01de86b7c5311925a22525be503bb"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/open-api/be-http/compaction-score.md",
+ "blob": "233dc1fc4c3281d73bf3a6dacf840089a0714fdc"
+ }
+ }
+ }
+}
diff --git
a/translations/state/ja/pages/default/current/admin-manual/open-api/fe-http/tso-action.json
b/translations/state/ja/pages/default/current/admin-manual/open-api/fe-http/tso-action.json
new file mode 100644
index 000000000000..3776cf601666
--- /dev/null
+++
b/translations/state/ja/pages/default/current/admin-manual/open-api/fe-http/tso-action.json
@@ -0,0 +1,64 @@
+{
+ "schemaVersion": 1,
+ "page": {
+ "pluginId": "default",
+ "version": "current",
+ "docId": "admin-manual/open-api/fe-http/tso-action",
+ "locale": "ja",
+ "sourceLocale": "en",
+ "sourcePath": "docs/admin-manual/open-api/fe-http/tso-action.md",
+ "targetPath":
"i18n/ja/docusaurus-plugin-content-docs/current/admin-manual/open-api/fe-http/tso-action.md",
+ "sourceCommit": "060685ca7597183b740b337fbef4fb1ec81f2683",
+ "sourceHash":
"02c3f5260f6bdf50b6e55f97251083c6a8497693bf28529b316b0ebe8630a091",
+ "sourceTechnicalHash":
"c3692279acd7a56ef295b331915184ee0991405f0caf313408ae1cac1629cf22",
+ "targetHash":
"0fabccc66b7947b8d77864d1c9bcef68eed3352bd7b30999f3633d670e6cf858",
+ "reviewStatus": "machine",
+ "ownership": "machine",
+ "translatedAt": "2026-11-07T16:58:06.841Z",
+ "glossaryVersion": "1",
+ "generation": {
+ "policy": "whole-document-v1",
+ "mode": "full",
+ "reason": "no-previous-translation",
+ "attempts": 3,
+ "acceptedWithWarnings": false,
+ "sourceHash":
"02c3f5260f6bdf50b6e55f97251083c6a8497693bf28529b316b0ebe8630a091",
+ "targetHash":
"0fabccc66b7947b8d77864d1c9bcef68eed3352bd7b30999f3633d670e6cf858",
+ "warnings": [],
+ "history": [
+ {
+ "attempt": 1,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 8:
expected [\"code\",\"bash\",null,\"curl --user root
http://127.0.0.1:8030/api/tso\"]; received
[\"inlineCode\",null,null,\"true\"]\nprotected node 9: expected
[\"code\",\"json\",null,\"{\\n \\\"code\\\": 0,\\n \\\"msg\\\":
\\\"success\\\",\\n \\\"data\\\": {\\n \\\"window_end_physical_time\\\":
1625097601000,\\n \\\"current_tso\\\": 426009585254400123,\\n
\\\"current_tso_physical_time\\\": 16250976 [...]
+ }
+ ]
+ },
+ {
+ "attempt": 2,
+ "issues": [
+ {
+ "check": "protected-content",
+ "message": "Restore protected source content:\nprotected node 8:
expected [\"code\",\"bash\",null,\"curl --user root
http://127.0.0.1:8030/api/tso\"]; received
[\"inlineCode\",null,null,\"true\"]\nprotected node 9: expected
[\"code\",\"json\",null,\"{\\n \\\"code\\\": 0,\\n \\\"msg\\\":
\\\"success\\\",\\n \\\"data\\\": {\\n \\\"window_end_physical_time\\\":
1625097601000,\\n \\\"current_tso\\\": 426009585254400123,\\n
\\\"current_tso_physical_time\\\": 16250976 [...]
+ }
+ ]
+ },
+ {
+ "attempt": 3,
+ "issues": []
+ }
+ ]
+ },
+ "sourceRevisions": {
+ "en": {
+ "path": "docs/admin-manual/open-api/fe-http/tso-action.md",
+ "blob": "4bc05aa88575ec5d29f485a7cf9c05f04d36dfa2"
+ },
+ "zh-CN": {
+ "path":
"i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/open-api/fe-http/tso-action.md",
+ "blob": "d21febe870ef3368739ba61409227e6ae6bc200c"
+ }
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]