Database smells
Upcoming SlideShare
Loading in...5
×
 

Database smells

on

  • 8,093 views

 

Statistics

Views

Total Views
8,093
Views on SlideShare
6,422
Embed Views
1,671

Actions

Likes
18
Downloads
37
Comments
1

18 Embeds 1,671

http://control.blog.fc2.com 779
http://d.hatena.ne.jp 547
http://makopi23.blog.fc2.com 192
https://si0.twimg.com 34
https://populr.me 27
http://50.19.84.12 20
http://garagekidztweetz.hatenablog.com 17
http://us-w1.rockmelt.com 14
http://info.eduardotsolis.com 11
https://k-witch.appspot.com 9
https://twimg0-a.akamaihd.net 9
http://tweetedtimes.com 4
http://s.deeeki.com 2
http://107.21.119.193 2
http://esolis.populr.me 1
http://pinterest.com 1
http://localhost 1
http://webcache.googleusercontent.com 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Database smells Database smells Presentation Transcript

  • Database Smellsデータベースの不吉な臭い @データベース・リファクタリング読書会 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com
  • 免責事項● 本プレゼンテーションにおいて示されている見解は、私自身 の見解であって、オラクル・コーポレーションの見解を必ず しも反映したものではありません。ご了承ください。
  • 自己紹介● 今日は個人として来ています。 – http://nippondanji.blogspot.com/ – Twitter: @nippondanji● MySQL サポートエンジニア – 2000 年にサン・マイクロシステムズ入社 – 2007 年に MySQL KK へ転職 – 気付くとまたサン・マイクロシステムズに・・・ – 現在は日本オラクルに在席。 – サポート一筋 12 年● 日々のしごと – MySQL トラブルシューティング全般 – Q&A 回答 など
  • 私の日々の仕事は サポートです。
  • 困ったことがなければ 特に必要ない
  • しかし世の中そんなに甘くない
  • トラブルは日常!!
  • 難問のラストリゾート・・・ それがサポート!!
  • サポートの日常● そもそも既に困っているからサポートへ – お客様が既に臭いに気づき・・・ – 手に負えないからサポートへ!! – 既に手遅れな場合も● よくあるパターン – 個性的なテーブルを目にすること幾多 – ややこしいクエリ – 膨大なスロークエリログ
  • 世界は不吉な臭いで充満している!
  • 世界は不吉な臭いで充満している!!● 全員が気づいていないことは誰も気付けない – ベストでないプラクティスが慣習に – みんなそれが普通だと思っている● 日本的なるもの – 盲目的な前例主義 – 変更を許さない官僚主義 – 面子 ● 間違いを指摘できない ● 指摘しても聴く耳を持たれない
  • うまい空気を吸いたいです・・・
  • 腐海に入ってはならん・・・ by ババ様
  • システム移行案件にて・・・スキーマは既存システムのものを そのまま使います!! 作りなおす意味あんのかよ・・・
  • ロジックの実装はすべて PL/SQLなぜならアーキがそう決めたからです! 処理の大半はデータの整合性チェックだったり。 それって DB の制約でできるよね?
  • お見積もりは テーブルひとつにつき○○万円です。 → じゃあテーブル数を減らそう!http://sec.ipa.go.jp/std/ent01-c.html テーブル数が減れば良いってもんじゃ・・・
  • 悲劇を避けるために
  • ほとんどの問題はテーブル設計に帰着する● ひと言で言うと、リレーショナルモデルを無視した設計に なっている場合は悲劇につながる。 – リレーショナルモデルを正しく使おう!! ● 知らない場合はまず勉強しよう!! – リレーショナルモデルを知らずに RDBMS を使うのは、オブ ジェクト指向を知らずに Java を書くようなもの。 HTML を知らずにウェブプログラムを書くようなもの。運転の仕 方を知らずにクルマを走らせるようなもの。超危険!!● リレーショナルモデル – リレーションの演算 – 集合論理● データベース設計理論 – 正規化 – 直交性
  • アンチパターンのストーリーPress Enter■http://el.jibun.atmarkit.co.jp/pressenter/all_entrylist.html第 1 回より引用 誰かが Java を教えている。地声なのか熱くなっているのか、講師の声はやたらと大き く、いつもより研修内容がよく聞こえていた。  唐突に、その言葉が響いた。  「オブジェクト指向など実業務では使い物にならない!」  私は思わず手を止めてしまい、壁を見つめた。 〜中略〜 「オブジェクト指向の本とかサイトとか見ると、さぞすごいもののように書かれているけ ど、ないからないから、そんなこと。 20 年選手のオレが言うんだから間違いない!」
  • くれぐれも・・・リレーショナルモデルなんて実践では役に立たないなどと 思わないでください。
  • RDBMS の落とし穴● リレーショナルモデルに従わなくても強力だったりする – データに永続性がある – データをメモリ上にキャッシュできる – トランザクションがある – SQL によって柔軟な検索がおこなえる – インデックスにより高速な検索がおこなえる – バックアップやレプリケーションなどのツールが充実 – 超便利!!● 単なるデータの入れ物として使っていませんか?
  • リレーショナルモデルの利点● 開発・メンテの効率化 – Java に例えると・・・ ● 例)オブジェクト指向を知らなくても Java は便利だが・・・ – 豊富な API やパッケージ – 強力な開発環境 etc ● 待ち受けてるのは地獄 – 読みづらい、コードの重複がたくさん、バグだらけ – リレーショナルモデルに従うと ● アプリのコード量が減る ● データの整合性をデータベースで保証できる ● SELECT がストレートに ● パフォーマンスの向上 ● データベースの変更が容易に
  • というわけでひっそりと連載していますhttp://gihyo.jp/magazine/wdpress/archive/2012/vol69 次回は正規化の お話です。
  • まとめ!
  • 世界は不吉な臭いが充満している!● 感覚が麻痺しているかも – 内輪の常識を疑う – 赤信号、みんなで渡れば怖くない? ● みんな揃って地獄行き!! – プログラムや運用でカバーする羽目になる ● コスト大!!● 目を覚まそう!! – 改善した結果どうなるか – 挫けず勇気をもって改善を。
  • 危険を回避するために● リレーショナルモデルに従う。 – データベースの設計には必須の知識!! ● しかしまともに学習する機会はほとんどないかも。 ● 何はともあれリレーショナルモデルについての正しい理解 を。 – RDBMS の基本機能だけで満足しない。 – 正規化とはひと言でいうと重複を排除する作業 ● 正規化していないとひとつの意味のレコードが複数の場 所に出現してしまう ● すべてを同時に更新しないと更新異常に!!● データベースをリファクタリングしよう!! – 世の中は危険な臭いで充満している!! – 勇気を持って改善を。
  • 腐海に踏み込んだあなたへ。● ガスマスクをつけよう。 – 適切な防御で身を守ります。 – 無ければ即死?● 毒ガスの正体を見極める。 – 多くのコードはデータの整合性確認に費やされる – 逆に言うと・・・ ● 整合性確認漏れに注意が必要 ● 整合性は更新処理で問題になる – 例)テンポラリテーブルを活用 ● 条件が複雑な場合にはスパゲティになりがち ● ひとつの SELECT で解決するのではなく、短いクエリに区 切る ● ストアドプロシージャのほうが上手に書ける場合も
  • お勧め書籍● データベース・リファクタリング以外にも – SQL and Relational Theory – The Art of SQL – SQL Antipatterns – 44 のアンチパターンに学ぶ DB システム
  • ご静聴ありがとうございました。