Movatterモバイル変換


[0]ホーム

URL:


Mikiya Okuno, profile picture
Uploaded byMikiya Okuno
PDF, PPTX4,937 views

Database smells

Embed presentation

Download as PDF, PPTX
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 システム
ご静聴ありがとうございました。

Recommended

PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
あなたが知らない リレーショナルモデル
PDF
なぜ、いまリレーショナルモデルなのか
PDF
MySQLアーキテクチャ図解講座
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
PDF
20120830 DBリファクタリング読書会第三回
PDF
Database qpstudy-okuno
PDF
リレーショナルデータベースとの上手な付き合い方
PDF
リレーショナルな正しいデータベース設計
PDF
データベース設計徹底指南
PDF
Rdbms qpstudy-okuno
PDF
What's New in MySQL 5.7 Replication
PPTX
Analytics Environment
PPTX
第52回なんてかんたんなJavaEE
PPTX
第51回NDS PostgreSQLのデータ型 #nds51
PDF
ActiveRecord::Enumのススメ
PDF
Getting start with knockout.js
PDF
今さら聞けないDiとspring
ODP
人材発掘うっはうは
PDF
Dark vol4 for_slideshare
PDF
TypeScript 勉強会
PDF
IT業界における伝統芸能の継承 #hachiojipm
PDF
クライアントサイドjavascript簡単紹介
PDF
Pentaho ETL@DevLOVE関西
PDF
複合主キーの扱い方
PDF
JavaScriptユーティリティライブラリの紹介
ODP
Data analytics with hadoop hive on multiple data centers
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PDF
【17-E-3】 オンライン機械学習で実現する大規模データ処理

More Related Content

PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
あなたが知らない リレーショナルモデル
PDF
なぜ、いまリレーショナルモデルなのか
PDF
MySQLアーキテクチャ図解講座
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
PDF
20120830 DBリファクタリング読書会第三回
PDF
Database qpstudy-okuno
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
あなたが知らない リレーショナルモデル
なぜ、いまリレーショナルモデルなのか
MySQLアーキテクチャ図解講座
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
RDBにおけるバリデーションをリレーショナルモデルから考える
20120830 DBリファクタリング読書会第三回
Database qpstudy-okuno

What's hot

PDF
リレーショナルデータベースとの上手な付き合い方
PDF
リレーショナルな正しいデータベース設計
PDF
データベース設計徹底指南
PDF
Rdbms qpstudy-okuno
PDF
What's New in MySQL 5.7 Replication
PPTX
Analytics Environment
PPTX
第52回なんてかんたんなJavaEE
PPTX
第51回NDS PostgreSQLのデータ型 #nds51
PDF
ActiveRecord::Enumのススメ
PDF
Getting start with knockout.js
PDF
今さら聞けないDiとspring
ODP
人材発掘うっはうは
PDF
Dark vol4 for_slideshare
PDF
TypeScript 勉強会
PDF
IT業界における伝統芸能の継承 #hachiojipm
PDF
クライアントサイドjavascript簡単紹介
PDF
Pentaho ETL@DevLOVE関西
PDF
複合主キーの扱い方
PDF
JavaScriptユーティリティライブラリの紹介
リレーショナルデータベースとの上手な付き合い方
リレーショナルな正しいデータベース設計
データベース設計徹底指南
Rdbms qpstudy-okuno
What's New in MySQL 5.7 Replication
Analytics Environment
第52回なんてかんたんなJavaEE
第51回NDS PostgreSQLのデータ型 #nds51
ActiveRecord::Enumのススメ
Getting start with knockout.js
今さら聞けないDiとspring
人材発掘うっはうは
Dark vol4 for_slideshare
TypeScript 勉強会
IT業界における伝統芸能の継承 #hachiojipm
クライアントサイドjavascript簡単紹介
Pentaho ETL@DevLOVE関西
複合主キーの扱い方
JavaScriptユーティリティライブラリの紹介

Viewers also liked

ODP
Data analytics with hadoop hive on multiple data centers
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PDF
【17-E-3】 オンライン機械学習で実現する大規模データ処理
PDF
Cloudera Manager4.0とNameNode-HAセミナー資料
PPTX
Writing Yarn Applications Hadoop Summit 2012
PDF
Lars George HBase Seminar with O'REILLY Oct.12 2012
PPTX
Future of HCatalog - Hadoop Summit 2012
PDF
並列データベースシステムの概念と原理
PDF
あなたの知らないPostgreSQL監視の世界
KEY
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
PPTX
SQLチューニング入門 入門編
PDF
Datalogからsqlへの トランスレータを書いた話
PPTX
ならば(その弐)
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Data analytics with hadoop hive on multiple data centers
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
【17-E-3】 オンライン機械学習で実現する大規模データ処理
Cloudera Manager4.0とNameNode-HAセミナー資料
Writing Yarn Applications Hadoop Summit 2012
Lars George HBase Seminar with O'REILLY Oct.12 2012
Future of HCatalog - Hadoop Summit 2012
並列データベースシステムの概念と原理
あなたの知らないPostgreSQL監視の世界
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
SQLチューニング入門 入門編
Datalogからsqlへの トランスレータを書いた話
ならば(その弐)
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~

Similar to Database smells

PDF
リレーショナルデータベースとの上手な付き合い方 long version
PPTX
SQLアンチパターン メンター用資料
PDF
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
PPT
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PPT
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
PDF
SQLアンチパターン読書会 レジュメ
PDF
Sql基礎の基礎
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
PDF
データベース技術 3(Database_3)
PPTX
Db seminar 20190619
PPTX
企業等に蓄積されたデータを分析するための処理機能の提案
PPTX
SQLアンチパターンNight
PDF
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
PDF
Japan.r 2データベース
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
PDF
パネルディスカッション資料(公開版)
PDF
NoSQLとビックデータ入門編Update版
PDF
データベース09 - データベース設計
PDF
Oracle設計
リレーショナルデータベースとの上手な付き合い方 long version
SQLアンチパターン メンター用資料
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
SQLアンチパターン読書会 レジュメ
Sql基礎の基礎
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
データベース技術 3(Database_3)
Db seminar 20190619
企業等に蓄積されたデータを分析するための処理機能の提案
SQLアンチパターンNight
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Japan.r 2データベース
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
パネルディスカッション資料(公開版)
NoSQLとビックデータ入門編Update版
データベース09 - データベース設計
Oracle設計

More from Mikiya Okuno

PDF
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
PDF
MySQL Cluster 新機能解説 7.5 and beyond
PDF
MySQL 5.7 トラブルシューティング 性能解析入門編
PDF
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
PDF
What's New in MySQL 5.7 Security
PDF
とあるギークのキーボード遍歴
PDF
What's New in MySQL 5.7 InnoDB
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
PDF
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
PDF
人類は如何にして大切な データベースを守るべきか
PDF
MySQLトラブル解析入門
PDF
Mysql toranomaki
PDF
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
ODP
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
PDF
MySQL日本語利用徹底入門
ODP
Performance Schema @ MySQL Casual #2
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
MySQL Cluster 新機能解説 7.5 and beyond
MySQL 5.7 トラブルシューティング 性能解析入門編
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
What's New in MySQL 5.7 Security
とあるギークのキーボード遍歴
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
人類は如何にして大切な データベースを守るべきか
MySQLトラブル解析入門
Mysql toranomaki
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL日本語利用徹底入門
Performance Schema @ MySQL Casual #2

Database smells

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

[8]ページ先頭

©2009-2025 Movatter.jp