🐱 うさねこ教室 Python と可観測性の教室

Part 6

データシステム

このパートで学ぶこと

バックエンドサービスの信頼性とスケーラビリティは、データシステムの設計によって決まります。 本パートでは『データ指向アプリケーションデザイン』(Martin Kleppmann 著)を主な参考文献として、ストレージ・レプリケーション・パーティショニング・トランザクション・分散合意の基礎を学びます。 各章ではトレードオフを明示し、実務での判断基準を身につけることを目指します。

前提知識

  • SQL の基本操作(SELECT / INSERT / UPDATE)
  • ネットワークの基礎(TCP、HTTP)
  • プロセス・スレッドの概念

想定所要時間

全 6 章を通して 4〜6 時間 を想定しています。 各章は独立して読めますが、順番に進めるとストレージ→レプリケーション→パーティション→トランザクション→分散合意という依存関係を自然に理解できます。

到達目標

  • B-tree と LSM-tree の特性を理解し、ワークロードに応じたストレージエンジンを選択できる
  • レプリケーション方式の違いと、レプリケーションラグが引き起こす問題を説明できる
  • パーティショニング戦略とホットスポットの回避方法を設計に活かせる
  • トランザクション分離レベルの意味を理解し、適切なレベルを選べる
  • 分散システム固有の障害モードと合意アルゴリズムの役割を説明できる
  1. ストレージとインデックス
  2. レプリケーション
  3. パーティショニング
  4. トランザクションと一貫性
  5. 分散システムの問題
  6. エンコーディングとスキーマ進化