makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「理論から学ぶデータベース実践入門Night」に参加しました

2015/10/8(木) 「理論から学ぶデータベース実践入門Night」に参加してきました。

connpass
http://connpass.com/event/20066/

場所は渋谷の株式会社VOYAGE GROUPさんです。
参加者は90人くらいでしょうか。

以下の書籍をターゲットとしたイベントなのです。



ちなみに私、この書籍の読書会にも参加してます。
http://riron-db.connpass.com/
この日のイベントにも、読書会の主催者さんはじめ4~5名参加してました。


@nippondanjiさん講演
なぜ、いまリレーショナルモデルなのか from Mikiya Okuno


以下、スライドに無い口頭補足部分を中心に、個人メモ。
---

■ 自己紹介 (P.3)
  • MySQLサポートエンジニア。パフォーマンスチューニングもサポートでやってる点が珍しい。
  • 酷いクエリをたくさん見ることができた。「これはなんかおかしいぞ」というのが、この本を書く動機だった。
  • 世の中、クソクエリが溢れすぎじゃないか。
  • オープンソースではなく「自由なソフトウェア」の普及をライフワークにしている。これを語り出すと時間なくなるので次回。
  • 健康第一で、有酸素運動をやってる。趣味はリカンベント。

■ リレーショナルモデルは枯れた理論なのに何で今さら? (P.5)
  • データベースは関係理論など小難しい退屈な話が多い。
  • エキサイティングな要素があんまりなくて、置き去り感があるんじゃないか、と感じていた。

■ 巷にあふれるあやふやな情報 (P.6)
  • RDBを本気で語ってる技術解説がない。しかも、無いだけじゃなくて、あやふやな情報が多いことに気づいた。
  • バックグラウンドの理論がさっぱり抜けてる解説があまりにも多くて、それってどうなの?
  • 正規化は第3正規形まででいい、という主張があるが、それはなんの根拠があって言っているのか?
  • こういうの見てると、感情が高まってくる。

■ 皆さんに本書で伝えたいこと (P.10)
  • リレーショナルモデルがなんなのか、ちゃんと説明している本がない。
  • C.J.Date先生の本が一番いいんじゃないかと思ってる。

  • リレーショナルモデルの使い方がわかれば限界も見えてくる。
  • 「理論から学ぶデータベース実践入門]」は入門書。さらなる勉強の取っ掛かりにしてほしい。
  • 本書を読んでいて、誤植とか間違いに気づいたらTwitterなどで知らせていただけると助かる。

■ リレーショナルモデルは道具 (P.11)
  • 伝えたいことは、リレーショナルモデルは道具、あくまで手段ということ。

■ データモデルとは (P.13)
  • データモデルとは、データの論理的な表現方法。
  • リレーショナルモデルはデータモデルの1種。
  • 物理じゃない。データモデルでカラムストア、というと違和感がある。それって物理なので、データモデルじゃないよね。
  • 論理は、データの意味。

■ データベースを単なる入れ物だと考えてはいけない理由 (P.17)
  • 「自分で書けば何でもできる」という考えは間違い。既存のものを利用してこそ真のコンピュータエンジニア。
  • データモデルとかを知らないから、なんでも「自分で書けばなんでもできる」と言ってるだけじゃないか。

■ 一つのデータモデルでは足りない場合 (P.22)
  • どんな場合でもRDBを使えばいいとは思ってない。データモデルに適切なDBを選びましょう。そうしないとお互い不幸になる。
  • 1つのデータモデルですべてうまく行く、という銀の弾丸はない。
  • 1つの製品が複数のデータモデルを持つ「マルチモデル」というのもある。
  • MySQLlもPostgreSQLも、Jsonを扱えるようになった。ただ、MySQLでJsonを扱うやつlはβ版。

■ リレーショナルモデルとは! (P.24)
  • 集合に根ざしたデータモデル。
  • テーブル同士の関係性(リレーションシップ)ではない。

■ リレーションとは (P.25)
  • テーブルには事実が格納されている。
  • 現実世界にある物事に対する事実の集合がリレーション。
  • つまり、テーブル≒リレーション。

■ 集合の性質 (P.26)
  • 集合はテーブルと比較すると、重複もNullもなくて、存在する値のみ存在していて、要素間に順序がない。

■ SQLにあってリレーショナルモデルにないもの (P.32)
  • リレーションは値だから、更新はない。
  • リレーションの演算は繰り返しとかできない。

■ NULLの功罪 (P.35)
  • Nullは便利。リレーショナルモデルが扱えるものを超えられる。
  • でも諸刃の剣。どうやって最小限のダメージで食い止めるか。
  • Nullがあってもいいテーブルがある。そうしないとちゃんと表現できない場合がある。
  • でもNullを許さないテーブルにNullがあると破綻する。

■ 分離レベルとデータの正しさ (P.40)
  • 分離レベルはトランザクションの概念であって、リレーショナルモデルの概念ではない。
  • 分離レベルちゃんと理解しないと危ない状況になる。
  • MySQLはREPEATABLE-READにすると、参照系はロックが付かない。参照はある瞬間のスナップショットだけど、最新ではない。
  • MySQL はREPEATABLE-READでもファントムリードが起きない。これは本当に素晴らしい。
  • READ-COMMITTEDは、使うのが難しい。範囲検索で問題がある。クエリ毎に見えるデータが違ってきてしまう。みんなはそれを理解して使っているのか・・・。自分でちゃんとロックとかしないと、不整合が起きる。
  • READ-UNCOMMITTEDは、一体なんのために使うのか・・・?
  • SQL標準と同じ分離レベルの名前がついてるのに振る舞いが違う、というのは本当に困る。
  • ロッキングリード vs ノンロッキングリード。ロックかけるときとロックかけないときで、取ってくる値が違う。

■ クエリが効率になる (P.45)
  • 1回のクエリで必要なデータが取れる。
  • そうじゃなく、クライアントにたくさんデータ送ってアプリ側で取捨選択、だと、クライアント⇔サーバ間のトラフィックが大きくなる。

■ データモデルは論理的な表現 (P.49)
  • データモデルは論理、実装は物理。
  • 実装を知らないと性能に予測できない。
  • SQL標準は理想であって実装ではない。実装を知っておくことは重要。

■ Q&A
Q.
最近では関数型とか出てきて、ラムダ計算に基づいている。
リレーショナルモデルは、論理演算とかの制約にひっぱられていることもあるのでは。
リレーショナルモデル以外に注目している理論あるか。
A.
グラフDBとか、いいものが出てくればいいな、と思っている。
XML型DBは最近、息してない。
ドキュメント型DBは、生暖かい目で見守ってる。
関数型も、リレーショナルモデルの宣言型に近いのでいいのでは。


LT大会
その場で無料のピザとビールが振る舞われ、LT大会です。

20151008_db_1.jpg

ひらぽんさん
ならば(その弐) from Tomoaki Hiramoto


tacke_jpさん
Datalogからsqlへの トランスレータを書いた話 from Yuki Takeichi


hironomiuさん
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話) from Hironori Miura


meijikさん
NULLとの戦い RDBMS実装編 from Meiji Kimura


aoyagikouheiさん
集合演算を真っ向から否定するアレの話 from Kouhei Aoyagi


---
先頭のひらぽんさんと、Nullネタのmeijikさんは、前述した読書会でご一緒している方です。
笑いあり、役立つ内容ありと、どのLTも面白かったです。
アンチパターンに踏み込む内容もありましたが、奥野さん曰く、「分かって使っているのなら良いと考えている」とのこと。


★感想:
著者の奥野さんから直に話が聞けるということで、読書会でリアルタイムで読んでいる私にとっては渡りに船なイベントでした。
DBというとSQLや正規化など正道を説明する本が多いのですが、この本は集合理論だったりNULLだったり履歴だったりと、切り口が非常に斬新です。
ということでこのブログ読んでるそこの貴方、読書会にも是非参加して議論しましょう!

ピザ、美味しかった~

奥野さん、LT登壇された皆さん、企画運営の関係者さん、ありがとーございました。
関連記事
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://makopi23.blog.fc2.com/tb.php/188-893498d1
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad