変更キー
変更が起きた可能性のある発生元行を識別する変更検知履歴
defined
validation: okcoverage: completeopen questions none
meaning: presentresponsibilities: presentboundaries: presentinvariants: presentrationale: presentevidence: presentlinked concepts: present
Open Questions
- None
Definition Statements
Meaning
7 statements
| Statement | Text |
|---|---|
ここで言う Source Table とは、Dirty Key が発生したテーブルを一意に識別できる完全名dirty-key-source-table-package | ここで言う Source Table とは、Dirty Key が発生したテーブルを一意に識別できる完全名である。スキーマ名など、同じ package 内でテーブルを一意に特定するために必要な情報を含む。 |
ここで言う Key とは、Source Table 内の該当行を一意に識別する情報である。複合キーにも対応key-source-table | ここで言う Key とは、Source Table 内の該当行を一意に識別する情報である。複合キーにも対応する。 |
Dirty とは、追加、更新、削除など何らかの理由により、転送対象として再評価されるべき可能性があることを示すtransfer-target-dirty | Dirty とは、追加、更新、削除など何らかの理由により、転送対象として再評価されるべき可能性があることを示す。 |
変更が起きた可能性のある Source Table と Key の組み合わせを記録する変更検知履歴dirty-key-change-detection-history-record-source-table | Dirty Key とは、変更が起きた可能性のある Source Table と Key の組み合わせを記録する変更検知履歴である。 |
Management とは、Dirty Key をイミュータブルな変更検知履歴として管理する仕組みdirty-key-change-detection-history-management | Dirty Key Management とは、Dirty Key をイミュータブルな変更検知履歴として管理する仕組みである。 |
転送対象かどうかを確定しないdirty-key-transfer-target | Dirty Key は、転送対象かどうかを確定しない。 |
転送対象かどうかは、Transfer Target Decision で判断transfer-target-context-decide-work-item | 転送対象かどうかは、`Transfer Target Decision` で判断する。 |
Responsibilities
9 statements
| Statement | Text |
|---|---|
Management は、転送アプリケーション全体で共有される変更検知履歴として扱うdirty-key-change-detection-history-management-2 | Dirty Key Management は、転送アプリケーション全体で共有される変更検知履歴として扱う。 |
Management は、Source Table と Key の組み合わせで発生元行を識別できる情報を保持dirty-key-hold-management-source-table | Dirty Key Management は、Source Table と Key の組み合わせで発生元行を識別できる情報を保持する。 |
Management は、単一キーだけでなく複合キーに対応dirty-key-management | Dirty Key Management は、単一キーだけでなく複合キーに対応する。 |
Management は、変更検知または登録の時点を説明できる時刻情報を持つdirty-key-change-detection-management | Dirty Key Management は、変更検知または登録の時点を説明できる時刻情報を持つ。 |
ただし、その時刻情報を厳密なイベント順、登録確定順、処理順の保証として扱ってはならない。responsibility-b2adcf08 | ただし、その時刻情報を厳密なイベント順、登録確定順、処理順の保証として扱ってはならない。 |
Management への登録方法はスコープ外である。CDC、DBトリガー、手動追加等、なんらかの方法で追加する仕組みは別途必要dirty-key-management-cdc-db | Dirty Key Management への登録方法はスコープ外である。CDC、DBトリガー、手動追加等、なんらかの方法で追加する仕組みは別途必要である。 |
Management への登録は非同期、並列で実行されることを想定dirty-key-management-2 | Dirty Key Management への登録は非同期、並列で実行されることを想定する。 |
Management への登録は transfer 中も常に追加され続ける可能性を想定dirty-key-management-transfer | Dirty Key Management への登録は transfer 中も常に追加され続ける可能性を想定する。 |
transfer は、Dirty Key Management への追記を長時間妨げる前提で設計してはならない。dirty-key-transfer-management | transfer は、Dirty Key Management への追記を長時間妨げる前提で設計してはならない。 |
Boundaries
3 statements
| Statement | Text | Similarity negated |
|---|---|---|
転送指示、転送状態、転送結果ではない。not-dirty-key-state | Dirty Key は転送指示、転送状態、転送結果ではない。 | - |
追加、更新、削除のどれが起きたかを確定する責務を持たない。not-dirty-key | Dirty Key は、追加、更新、削除のどれが起きたかを確定する責務を持たない。 | - |
転送済み、処理済み、重複、転送履歴、赤伝対象の現在有効な黒を管理しないnot-dirty-key-active-black-processed-red-transfer | Dirty Key は、転送済み、処理済み、重複、転送履歴、赤伝対象の現在有効な黒を管理しない。 | - |
Invariants
5 statements
| Statement | Text |
|---|---|
Management はイミュータブルな変更検知履歴として扱うdirty-key-change-detection-history-management-3 | Dirty Key Management はイミュータブルな変更検知履歴として扱う。 |
Management は、同一 Source Table と Key の Dirty Key を複数記録できるdirty-key-record-management-source-table | Dirty Key Management は、同一 Source Table と Key の Dirty Key を複数記録できる。 |
変更検知、再通知、再評価のために、同じ Source Table と Key を何度追加してもよい。change-detection-source-table-key | 変更検知、再通知、再評価のために、同じ Source Table と Key を何度追加してもよい。 |
transfer は、Dirty Key 自体に転送進捗や処理結果を書き戻さない。dirty-key-transfer | transfer は、Dirty Key 自体に転送進捗や処理結果を書き戻さない。 |
transfer は Dirty Key Management にあるシーケンスの大小を登録確定順、イベント順、処理順として扱ってはならないdirty-key-transfer-management-2 | transfer は Dirty Key Management にあるシーケンスの大小を登録確定順、イベント順、処理順として扱ってはならない。 |
Rationale
2 statements
| Statement | Text |
|---|---|
Management に同一キーのユニーク制約を置かない理由dirty-key-change-detection-history-state-record-management | Dirty Key Management に同一キーのユニーク制約を置かない理由: Dirty Key Management は変更検知履歴であり、現在状態テーブルではない。 同じ Source Table と Key の組み合わせに対して、複数回の変更検知、再通知、手動投入が発生してよい。 そのため、同一 Source Table と Key の Dirty Key を複数記録できる必要がある。 また、登録時に存在チェックを行わないことで、外部 producer が低コストに追記できる。 |
Management が変更理由を問わない理由dirty-key-decide-management | Dirty Key Management が変更理由を問わない理由: Dirty Key Management は、元テーブル上のイベント種別を転送上の操作種別へ変換しない。 論理削除のように、元テーブル上は更新でも、データソースクエリから取得されなくなることで転送上は削除相当になる場合がある。 そのため、変更理由が分かったとしても、Dirty Key Management はそれを転送判断の正本として扱わない。 Dirty Key Management が表すのは、何らかの変更により、そのキーを再評価すべき可能性がある、ということだけである。 |
Internal Links
- None
External Relationships
| Concept | Kind | Reason | Supported by | Evidence |
|---|---|---|---|---|
転送実行記録transfer-run | is-distinct-from | Dirty Key は転送指示、転送状態、処理結果ではない。 | dirty-key-management-transfer, dirty-key-transfer-management, dirty-key-transfer | spec:dirty-key |
Coverage
| Area | Coverage | Reason | Resolution criteria |
|---|---|---|---|
definition | complete | concept.json の意味、責務、境界、不変条件、理由を curated statement として移植済み。 | - |
relationships | complete | concept-relationship.json と移行元 concept.json の外部関係を反映済み。 | - |
Evidence
| Evidence ID | Type | Path | Exists |
|---|---|---|---|
spec:dirty-key | spec | concept.json | yes |
Validation
- No validation issues.
Technical Metadata
- Source JSON:
packages/transfer/docs/concepts/dirty-key/concept.json