Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

イミュータブルデータモデル(世代編)

23,087 views

Published on

第1回 しょぼべん ( http://connpass.com/event/10849/ )

で話しした、イミュータブルデータモデル(世代編)です。

Published in: Software
  • Be the first to comment

イミュータブルデータモデル(世代編)

  1. 1. イミュータブルデータモデル ジェネレーションズ(世代編) kawasima
  2. 2. たくさんの方々に見ていただきありがとうございます! http://www.slideshare.net/kawasima/ss-40471672
  3. 3. 入門編の続編として、 リレーショナルデータモデルで もっとも厄介な「世代」を扱いかた についてお話します。 入門編まだの方はそちらをまずご覧ください!
  4. 4. ありがちな例 日付属性をもったリソース? イベントではないよなぁ… 商品コード 適用開始日 商品名 価格 注文番号 注文日 注文番号 商品コード 適用開始日 注文 注文明細 商品(R)
  5. 5. 「イベントは更新不可」の性質を利用 「過日のイベント」と「未来の予定イベント」 は区別して扱おう ● 過去の価格は変更できない ● 未来の価格は変更できるし、変更の予定を取り消すこともできる
  6. 6. イベントの予実として扱う 商品コード 商品名 商品コード 適用予定日 価格 注文番号 注文日 商品コード 適用開始日 (適用終了日) 価格 値付け実績(E) 商品(R) 注文番号 商品コード 予定価格 注文明細 注文 適用予定日が来たものを値 付け実績として反映させる
  7. 7. 簡単ですね!
  8. 8. もう少し複雑な例
  9. 9. 例題 番組ID 番組名 番組ID 芸能人ID 芸能人ID 芸能人名 番組名も、出演者の名前も改編期やウッチャンによって変え られるが、名前が変わっても同じものとみなして扱いたい。 番組 レギュラー出演 芸能人 番組名 適用開始日 ウンナンの気分は上々。 1996年7月19日 - 1999年3月19日 新・ウンナンの気分は上々。 1999年3月26日 - 2003年3月28日 ウンナンの気分は上々。 2003年4月4日 - 2003年9月26日 芸能人名 適用開始日 海砂利水魚 〜2001年9月27日 くりぃむしちゅ〜 2001年9月28日〜
  10. 10. ありがちな汚モデル 番組ID 適用開始日 (適用終了日) 番組名 番組ID 番組適用開始日 芸能人ID 芸能人適用開始日 レギュラー出演開始日 レギュラー出演終了日 芸能人ID 適用開始日 (適用終了日) 出演者名 番組 芸能人レギュラー出演 ※ちなみにこの適用開始日・終了日の問題は、”動的参照関係”を考慮しなくて はならないという、難しめの問題もあります。 http://watanabek.cocolog-nifty.com/blog/2011/12/post-a77b.html
  11. 11. サロゲートキーを導入する 番組ID 番組コード 適用開始日 (適用終了日) 番組名 番組コード 芸能人コード レギュラー出演開始日 レギュラー出演終了日 芸能人ID 芸能人コード 適用開始日 (適用終了日) 出演者名 番組 芸能人レギュラー出演 課題: ID属性がIdentifiableではない。 少しはスッキリしたが…
  12. 12. イミュータブルモデル fashion 番組ID 番組ID 出演者ID レギュラー出演開始日 レギュラー出演終了日 番組ID 適用開始日 番組名 芸能人ID 芸能人ID 適用開始日 芸能人名 番組 芸能人 レギュラー出演 番組属性 芸能人属性
  13. 13. こういうモデルを キレイめに扱いたくば イミュータブルなデータベースを使おう!
  14. 14. こういうモデルを キレイめに扱いたくば イミュータブルなデータベースを使おう!
  15. 15. Datomic ● UPDATEというものは存在しない。 ● スキーマ全体でトランザクション管理され ており、履歴が積み重なっていてもデフォ ルトで最新のデータにアクセスされる。 ● すべてのデータはEAVTのタプルで格納 される。 http://www.datomic.com E Entity A Attribute V Value T Transaction
  16. 16. ノーデプロイ分散ジョブ実行環境 JobStreamer job-streamer.github.io 近日発表 そんなDatomicを使ったプロダクトを作っております… よろしくお願いします!

×