コンテンツにスキップ

DynamoDB

DynamoDBは検索用データベースではなく、ワークフロー状態管理用途で使用されます。プロジェクト、文書、ワークフロー、セグメント、処理ステップのすべての状態を1つのテーブルで管理するOne Table Designパターンを適用しています。


項目
課金On-Demand
Partition KeyPK(String)
Sort KeySK(String)
GSI1GSI1PK / GSI1SK
GSI2GSI2PK / GSI2SK
StreamNEW_AND_OLD_IMAGES

PK: PROJ#{project_id}
SK: META
フィールド説明
data.nameプロジェクト名
data.language言語(デフォルト: en)
data.document_prompt文書分析用カスタムプロンプト
data.ocr_modelOCRモデル(デフォルト: pp-ocrv5)

プロジェクト-文書リンク(PROJ# / DOC#)

Section titled “プロジェクト-文書リンク(PROJ# / DOC#)”
PK: PROJ#{project_id}
SK: DOC#{document_id}

プロジェクトに属する文書一覧はbegins_with(SK, 'DOC#')でクエリします。

プロジェクト-ワークフローリンク(PROJ# / WF#)

Section titled “プロジェクト-ワークフローリンク(PROJ# / WF#)”
PK: PROJ#{project_id}
SK: WF#{workflow_id}
フィールド説明
data.file_nameファイル名
data.statusワークフローステータス

ワークフローメタデータ(DOC#またはWEB#)

Section titled “ワークフローメタデータ(DOC#またはWEB#)”
PK: DOC#{document_id}(またはWEB#{document_id})
SK: WF#{workflow_id}
フィールド説明
data.project_id所属プロジェクト
data.file_uriS3パス
data.file_nameファイル名
data.file_typeMIMEタイプ
data.execution_arnStep Functions実行ARN
data.statuspending / in_progress / completed / failed
data.total_segments総セグメント数
data.preprocess前処理ステージ別ステータス(ocr、bda、transcribe、webcrawler)

ワークフローステップ(WF# / STEP)

Section titled “ワークフローステップ(WF# / STEP)”
PK: WF#{workflow_id}
SK: STEP
GSI1PK: STEP#ANALYSIS_STATUS
GSI1SK: pending | in_progress | completed | failed

ワークフローの各処理ステップの状態を追跡します。GSI1により現在実行中の分析を高速に検索できます。

ステップ説明
segment_prepセグメント準備
bda_processorBedrock Document Analysis
format_parserフォーマットパース
paddleocr_processorPaddleOCR処理
transcribe音声変換
webcrawlerWebクローリング
segment_builderセグメント構築
segment_analyzerAI分析(Claude)
graph_builderグラフ構築
document_summarizer文書要約

各ステップはstatuslabelstarted_atended_aterror属性を持ちます。

PK: WF#{workflow_id}
SK: SEG#{segment_index:04d} ← 0001, 0002, ...
フィールド説明
data.segment_indexセグメントインデックス
data.s3_keyS3パス(セグメントデータ)
data.image_uri画像URI
data.image_analysis画像分析結果配列

クエリインデックスキー条件
プロジェクト文書一覧PrimaryPK=PROJ#{proj_id}SK begins_with DOC#
プロジェクトワークフロー一覧PrimaryPK=PROJ#{proj_id}SK begins_with WF#
ワークフローメタデータPrimaryPK=DOC#{doc_id}SK=WF#{wf_id}
ステップ進行状態PrimaryPK=WF#{wf_id}SK=STEP
セグメント一覧PrimaryPK=WF#{wf_id}SK begins_with SEG#
特定セグメントPrimaryPK=WF#{wf_id}SK=SEG#{index}
実行中の分析検索GSI1GSI1PK=STEP#ANALYSIS_STATUSGSI1SK=in_progress

  • 単一トランザクション: ワークフロー作成時にメタデータとステップ状態をbatch_writeで原子的に作成
  • 効率的なクエリ: プロジェクトのすべての文書/ワークフローを単一クエリで取得
  • コスト削減: 1つのテーブルで管理し、運用の複雑さを最小化

DynamoDBは状態とメタデータのみを保存し、実際のデータ(セグメントコンテンツ、分析結果)はS3に保存します。

DynamoDB S3
├─ ワークフロー状態 ├─ セグメント元データ
├─ ステップ別進行状態 ├─ 分析結果(JSON)
├─ セグメントメタデータ(s3_key) ├─ エンティティ抽出結果
└─ WebSocket接続情報 └─ 文書要約

Step Functionsのペイロード制限(256KB)により、DynamoDBを中間ストレージとして活用します。3000ページ以上の文書もセグメントインデックスのみを渡して処理できます。