第5回 Data-Oriented Programming 読書会


参加者トピック

ディスカッション

9 Persistent data structures

9.1 The need for persistent data structures

https://lampwww.epfl.ch/papers/idealhashtrees.pdf

9.2 The efficiency of persistent data structures

リストやツリーなど基本的なデータ構造が効率的だということを説明していた

9.3 Persistent data structures libraries

Clojure の提供するデータ構造、データ操作を、他のプログラミング言語でもライブラリとして利用できるようになっていることを説明していた

9.4 Persistent data structures in action

Lodash の _Immutable へ置き換えるだけで元のコードはほとんどそのまま動く

9. Summary

  • 不変コレクション永続化データ構造 は違う概念
  • 構造化共有が利用できると、元の値を破壊しないで効率的に新しい値を作ることができる

10 Database operations

10.1 Fetching data from the database

  • 普通は 遅延バインディング と言えば実行時に呼び出す関数を解決することを指す
    • このセクションでは、未知の値を既知の型として解釈することを指している
  • クエリごとに JSON Schema を書いてデータ型を検証する

10.2 Storing data in the database

  • 例えば Java では Map コレクションの要素にアクセスするとき map.item1 のようなドット記法は使えない
  • だから DOP の考え方を説明するときは汎用的な記法にする
    • 例えば Lodash なら _at(map, ["item1"]) と書ける

10.3 Simple data manipulation

  • データストアに保存し、取得できるフィールド名と、アプリケーションの使用したいフィールド名は異なる場合があるから、アプリケーション側で対応表を用意して、変換すればいいということを説明していた
    • 前のセクションで木構造を探索するCPU時間を気にしていたのに、突然富豪的な処理を導入しているのは不思議

10.4 Advanced data manipulation

  • SQL レベルでデータを操作している意味がわからない
    • システムの扱うすべてのデータはメモリ上に木構造で展開されていたはず
    • 差分を計算してアトミックに更新できるのではなかったのか

11 Web services

  • 10章データベース操作と同じく、アプリケーションの関心事だけを扱っている雰囲気

11.1 Another feature request

11.2 Building the insides like the outsides

参考情報