Docs
📚

データ志向アプリケーション設計(DDIA)

13件のドキュメント

  1. 1.
    🗄️

    データ志向アプリケーション設計:概要

    信頼性・スケーラビリティ・保守性を軸に、データ中心システムの設計原則を整理する。Martin KleppmannのDDIAの核心

    概念
  2. 2.
    🧩

    データモデルとクエリ言語

    リレーショナル・ドキュメント・グラフの3モデルを比較し、それぞれの強みと適切な使いどころを理解する

    概念
  3. 3.
    💾

    ストレージエンジンとインデックス

    DBが内部でデータをどう保存・検索するか。BツリーとLSMツリーの設計思想の違いを理解することで、適切なDBエンジンを選べるようになる

    概念
  4. 4.
    🔁

    レプリケーション

    同じデータを複数ノードに保持する方法。シングルリーダー・マルチリーダー・リーダーレスの3方式と、レプリケーション遅延が生む一貫性の問題を理解する

    概念
  5. 5.
    🍕

    パーティショニング(シャーディング)

    大量データを複数ノードに分割して格納する方法。キーレンジとハッシュの分割戦略、ホットスポットの回避、リバランシングの設計を理解する

    概念
  6. 6.
    🔒

    トランザクションとACID

    ACIDの意味と各分離レベルが防ぐ競合状態を理解する。「シリアライザブルはいつも必要か?」という問いに答えられるようになる

    概念
  7. 7.

    分散システムの本質的な問題

    ネットワーク遅延・クロック同期・プロセス停止など、分散システムが本質的に抱える問題を理解する。「分散環境で何を信頼できるか」を知ることが設計の出発点

    概念
  8. 8.
    🤝

    一貫性と分散合意

    線形化可能性(最強の一貫性)から因果一貫性まで、分散システムの一貫性モデルを整理。RaftとPaxosが解く問題と、分散トランザクションの2PCを理解する

    概念
  9. 9.
    📦

    バッチ処理

    大量データを効率よく処理するバッチパイプラインの設計。MapReduceの仕組みとその限界、Sparkなどデータフローエンジンへの発展を理解する

    概念
  10. 10.
    🌊

    ストリーム処理

    終わりのないイベントストリームをリアルタイムで処理する方法。Kafkaのログ設計、ウィンドウ集計、ストリーム-バッチ統合の考え方を理解する

    概念
  11. 11.
    📋

    エンコーディングとスキーマ進化

    JSON/XML の限界とバイナリフォーマット(Protobuf・Avro)の設計思想。後方/前方互換性を保ちながらスキーマを進化させる方法を理解する

    概念
  12. 12.
    🔗

    Sagaパターンと分散トランザクション

    マイクロサービス間にまたがるトランザクションを2PCなしで実現するSagaパターン。コレオグラフィとオーケストレーションの2方式と、補償トランザクションの設計を理解する

    概念
  13. 13.
    🏗️

    データシステムの統合設計

    バッチとストリームを統合し、DBを「アンバンドル」して再構成する考え方。DDIAの結論として、派生データとデータフローの全体設計を理解する

    概念