「ClubDB2 第146回 : 達人が語る こんなデータベース設計はヤダ!」に参加

Club DB2 のナイト・サークル「第146回 達人が語る こんなデータベース設計はヤダ!」に参加してきた(LT が終わったタイミングでギリギリ到着)。Club DB2におじゃまするのは昨年9月の Watson 以来。

発表者

ミック
http://www.geocities.jp/mickindex/

SQL のリレーショナルモデルを学ぶなら上でミックさんの「達人に学ぶ SQL徹底指南書」(↓)が難易度・価格的に一番お手頃ではないかと思う。

アジェンダ

リレーショナルデータベースの設計技法については、理論化されているようでいて、あまり現場ではきちんとした指針が存在しません。
そのため、多くのバッドノウハウやグレーノウハウが繰り返し生み出されています。本日は、そのようなアンチパターンを一堂に集めてみたいと思います。

  • ダメな物理設計
    • テーブルはファイルじゃねえんだよ
    • サイジングでCPUしか見ない奴一歩前へ出ろ
    • いまだにメモリをケチるなんてどんだけ時代遅れですか
    • 32bit OSはオワコン
  • ダメな論理設計
    • 垂直分割と水平分割は本当に悪いのか
    • なぜ結合するSQLは怖いのか
    • 正規化を崩す判断はいつするべきなのか
    • ループという名の呪い

発表資料

雑感

Mick さんはエンタープライズ方面に振れたDBアーキテクトで、アプリケーション系開発が主体の自分とは守備範囲が大きく異なる。
初めてお目に掛かるが、かなりお若い。
自分が普段意識することのない、物理設計方面の話を聞けたのはよかった。
ネットワーク(帯域とか)の話題がほとんど出なかったのは意外。

以下は雑多な備忘録。
=============================
データベース設計

以下の3つで構成される

  1.  物理設計(サーバ、ストレージ、アーキテクチャ、サイジング)
  2.  論理設計(ER図、モデリング、処理方式)
  3.  実装設計

今回は#1のストレージ・サイジングと#2の処理方式がテーマ。

手続き型の呪い

手続き型プログラミングの延長でSQLにとどまっている人が多く、脱皮しないと、いつまでもリレーショナルモデル本来の集合指向をいかした SQL を書けない。

DBサーバとサイジング

サーバサイジングは

  • CPU
  • メモリ
  • ネットワーク
  • ストレージ

のバランスで決まる。

DBサーバは往々にしてI/O バウンド

DBサーバのスケールアウト

シェアードディスクは更新系トランザクションに引きずられてスケールしない
DB2 pureScale, Oracle RAC が引き合いに出されていた

ストレージについて

ブラックボックスなところがある
性能評価が難しい
ベンダーさんもよくわかっていない。
さくらクラウドの大規模障害を思い出した

オンメモリDB

HDDの回転数は頭打ち。
オンメモリの時代。
ただし SSD や Fusion IO のつっこんだ話はなかった。

手続き型の呪い

J. Celko  : Joe Celko’s SQL for Smarties

7.3.7 How To Use a Cursor

The best performance improvement technique for cursors inside the database is not to use them.
SQL engines are designed for set processing and not with individual rows.

ミック さんは最新の第4版を絶賛翻訳中で、来年発売予定とのこと。

「ガツン系」

  • 必要なデータを一発で取得
  • O(1)
  • SELECT hoge
    FROM tbl
    WHERE pk BETWEEN ‘a’ AND ‘z’

「ぐるぐる系」

  • データの数だけ何回もSQLを走らせる
  • O(n)
  • SELECT hoge
    FROM tbl
    WHERE pk = ‘a’

セミナーの約半分は「ぐるぐる系」がいかに悪なのか延々と議論。
プログラマーがぐるぐるで書いている場合もあれば、利用しているライブラリがぐるぐる系で書かれており、知らずにぐるぐるしていることもある。
LT で紹介された ORM の jflute は非ぐるぐる系。なおミックさんが好きな ORM は無いらしい。

参加者のブログ

Advertisements
Tagged with: ,
Posted in database, report

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 4 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 4 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: