Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DDIA (Designing Data-Intensive Applications) はいいぞ

yubessy
January 09, 2019

DDIA (Designing Data-Intensive Applications) はいいぞ

社内勉強会用資料です

yubessy

January 09, 2019
Tweet

More Decks by yubessy

Other Decks in Programming

Transcript

  1. 目次 Part 1. Foundations of Data Systems Chapter 1. Reliable,

    Scalable, and Maintainable Applications Chapter 2. Data Models and Query Languages Chapter 3. Storage and Retrieval Chapter 4. Encoding and Evolution
  2. 目次 Part 2. Distributed Data Chapter 5. Replication Chapter 6.

    Partitioning Chapter 7. Transactions Chapter 8. The Trouble with Distributed Systems Chapter 9. Consistency and Consensus
  3. 目次 Part 3. Derived Data Chapter 10. Batch Processing Chapter

    11. Stream Processing Chapter 12. The Future of Data Systems
  4. 例: 最もシンプルなDBMS 実装 単一ファイルに追記式でデータを書き込むだけ #!/bin/bash db_set() { echo "$1,$2" >>

    database } db_get() { grep "^$1," database | sed -e "s/^$1,//" | tail -n 1 } $ db_set 123456 '{"name":"London"}' $ db_get 123456 {"name":"London"} ここにindexing やcompaction の概念を導入してゆく
  5. 比較されるさまざまな技術・概念 Data modeling: relational vs. document Processing: transaction vs. analytics

    Index: primary vs. secondary Storage: row-oriented vs. column-oriented Encoding: text vs. binary Replication: synchronous vs. asynchronous Partition: static vs. dynamic ...
  6. ちなみに: 自分の読み方 1 → 3 → 2 の順に読み進めている ( 今

    3 の半分くらい) Part 1. Foundations of Data Systems Part 3. Derived Data Part 2. Distributed Data 特に 3 はデータ基盤でよく使われる技術を解説 Hadoop MapReduce, Spark, Tez, ... AMPQ, Pub/Sub, ...