Skip to content

<- Concepts

変更キー

変更が起きた可能性のある発生元行を識別する変更検知履歴
id dirty-keyformat schema v2
defined
validation: okcoverage: completeopen questions none
meaning: presentresponsibilities: presentboundaries: presentinvariants: presentrationale: presentevidence: presentlinked concepts: present

Open Questions

  • None

Definition Statements

Meaning

7 statements

StatementText
ここで言う 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

StatementText
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

StatementTextSimilarity 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

StatementText
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

StatementText
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 が表すのは、何らかの変更により、そのキーを再評価すべき可能性がある、ということだけである。
  • None

External Relationships

ConceptKindReasonSupported byEvidence
転送実行記録
transfer-run
is-distinct-fromDirty Key は転送指示、転送状態、処理結果ではない。dirty-key-management-transfer, dirty-key-transfer-management, dirty-key-transferspec:dirty-key

Coverage

AreaCoverageReasonResolution criteria
definitioncompleteconcept.json の意味、責務、境界、不変条件、理由を curated statement として移植済み。-
relationshipscompleteconcept-relationship.json と移行元 concept.json の外部関係を反映済み。-

Evidence

Evidence IDTypePathExists
spec:dirty-keyspecconcept.jsonyes

Validation

  • No validation issues.

Technical Metadata

  • Source JSON: packages/transfer/docs/concepts/dirty-key/concept.json

Released under the MIT License.