scalardb-transaction

star 6

ScalarDBのトランザクション設計を行います。トランザクション境界定義、パターン選定(単一集約内/2PC/Saga/ハイブリッド)、OCC競合率評価、バッチ処理設計、v3.17最適化適用計画を含みます。ワークフローStep 05(トランザクション設計)で使用します。

wfukatsu By wfukatsu schedule Updated 2/18/2026

name: scalardb-transaction description: ScalarDBのトランザクション設計を行います。トランザクション境界定義、パターン選定(単一集約内/2PC/Saga/ハイブリッド)、OCC競合率評価、バッチ処理設計、v3.17最適化適用計画を含みます。ワークフローStep 05(トランザクション設計)で使用します。

ScalarDB Transaction Design Skill

目的

ScalarDB のトランザクションパターンを選定・設計し、以下を生成する:

  • トランザクション境界定義
  • パターン選定結果と根拠
  • OCC競合率評価
  • バッチ処理設計
  • v3.17 最適化適用計画
  • エラーハンドリング・リトライ戦略

リファレンス資料

資料 パス 参照内容
トランザクションモデル research/07_transaction_model.md 7つのトランザクションパターン
バッチ処理 research/09_batch_processing.md バッチ有効/無効ケース、チャンクサイズ
ScalarDB 3.17 research/13_scalardb_317_deep_dive.md 最適化機能の詳細
ワークフロー05 workflow/05_transaction_design.md Step 05 手順

実行フロー

Stage 1: トランザクション境界の定義

Step 04(データモデル)の結果を基に、各ビジネスプロセスのトランザクション境界を定義する。

トランザクション境界テンプレート:

トランザクション名 ビジネスプロセス 関与集約 関与テーブル 操作種別
Read/Write/ReadWrite

Stage 2: トランザクションパターン選定

各トランザクションに対してパターンを選定:

パターン 適用条件 ScalarDB API
単一集約内 1サービス・1テーブル DistributedTransaction
単一サービス複数テーブル 1サービス・複数テーブル DistributedTransaction
2PC(2サービス) 2サービス間ACID TwoPhaseCommitTransaction
2PC(3サービス) 3サービス間ACID(上限) TwoPhaseCommitTransaction
Saga 結果整合性で十分 アプリケーション実装
Saga + 部分2PC 一部ACIDが必要 ハイブリッド

パターン選定マトリクス:

トランザクション名 選定パターン 根拠 リスク

Stage 3: OCC 競合率評価

楽観的並行性制御(OCC)の競合率を評価し、対策を検討する。

競合率評価テンプレート:

トランザクション 対象レコード 同時実行数 推定競合率 許容範囲 対策
< 5%

競合率が高い場合の対策:

  1. Partition Key の見直し(アクセス分散)
  2. トランザクション範囲の縮小
  3. リトライ戦略の調整
  4. ビジネスプロセスの再設計(Saga化検討)

Stage 4: バッチ処理設計

バッチ処理テンプレート:

バッチ名 処理内容 対象テーブル 予想レコード数 チャンクサイズ トランザクション範囲
100-1000推奨 チャンク単位

ScalarDB バッチ処理の制約:

  • 長時間トランザクションは OCC 競合リスクが高い
  • チャンク単位でコミットする設計が必須
  • Batch Operations(v3.17)で複数操作を一括送信可能

Stage 5: v3.17 最適化適用計画

最適化機能 適用対象 効果 設定
Piggyback Begin 全トランザクション ラウンドトリップ -1 有効化推奨
Write Buffering 書き込み多いTx ネットワーク呼出削減 対象Txで有効化
Batch Operations バッチ処理 スループット向上 バッチ処理で使用
Tx Metadata Decoupling 小レコードテーブル ストレージ効率化 READレイテンシ影響を評価

Stage 6: エラーハンドリング・リトライ戦略

エラーハンドリングテンプレート:

例外 原因 対応 リトライ
CrudConflictException OCC競合 リトライ Yes(指数バックオフ)
CommitConflictException コミット時競合 リトライ Yes(指数バックオフ)
UnknownTransactionStatusException 状態不明 確認→リトライ or 補償 条件付き
CommitException コミット失敗 abort→リトライ Yes
UnsatisfiedConditionException 条件未達 ビジネスロジック判断 No

リトライ設定テンプレート:

パラメータ 推奨値 説明
最大リトライ回数 3-5 過度なリトライは避ける
初回待機時間 100ms 指数バックオフの起点
最大待機時間 5000ms 上限
バックオフ係数 2.0 倍増
ジッター ±50ms 同時リトライの分散

Stage 7: 出力

成果物を output/phase2/05_transaction_design.md に出力。


使用例

/plan-step 05

Step 04 のデータモデルに基づいてトランザクション設計を行ってください。
特に以下のプロセスの設計を重視:
- 注文確定(注文 + 在庫 + 決済の3サービス跨ぎ)
- ポイント付与(結果整合性で可)
- 月次バッチ集計
Install via CLI
npx skills add https://github.com/wfukatsu/coding-agent-for-scalardb --skill scalardb-transaction
Repository Details
star Stars 6
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator