SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
SQL
アンチパターン
  和田 卓人 (@t_wada)
Feb 15, 2013 @ デブサミ
和田 卓人
id: t-wada
@t_wada
github: twada
諸君は自らの経験からいくらか学ぶことがで
きるという、全く愚かな考えであろうが、
余はむしろ他人の失敗を学ぶことで、自分の
失敗を回避することを好む。
     ─オットー・フォン・ビスマルク


Nur ein Idiot glaubt, aus den eigenen Erfahrungen zu lernen.
Ich ziehe es vor, aus den Erfahrungen anderer zu lernen, um
von vorneherein eigene Fehler zu vermeiden.
Agenda


1. 本書の構成
2. アンチパターンとは
3. おわりに
4つの部
25のパターン
1.   論理設計
2.   物理設計
3.   クエリ
4.   アプリケーション
1.   論理設計
2.   物理設計
3.   クエリ
4.   アプリケーション
論理設計のアンチパターン
1.   ジェイウォーク(信号無視)
                       ざわ…ざわ…
2.   ナイーブツリー(素朴な木)
3.   IDリクワイアド(とりあえずID)
4.   キーレスエントリ(外部キー嫌い)
5.   EAV(エンティティ・アトリビュート・バリュー)
6.   ポリモーフィック関連
7.   マルチカラムアトリビュート(複数列属性)
8.   メタデータトリブル(メタデータ大増殖)
1.   論理設計
2.   物理設計
3.   クエリ
4.   アプリケーション
物理設計のアンチパターン

09. ラウンディングエラー(丸め誤差)

10. サーティワンフレーバー(31のフレーバー)

                        否定意見多し
11. ファントムファイル(幻のファイル)

12. インデックスショットガン(闇雲インデックス)
1.   論理設計
2.   物理設計
3.   クエリ
4.   アプリケーション
クエリのアンチパターン

13. フィア・オブ・ジ・アンノウン(恐怖のunknown)

14. アンビギュアスグループ(曖昧なグループ)

                   様々な解決策
15. ランダムセレクション

16. プアマンズ・サーチエンジン(貧者のサーチエンジン)

17. スパゲッティクエリ

18. インプリシットカラム(暗黙の列)
1.   論理設計
2.   物理設計
3.   クエリ
4.   アプリケーション
アプリケーションのアンチパターン
19. リーダブルパスワード(読み取り可能パスワード)

20. SQLインジェクション

21. シュードキー・ニートフリーク(疑似キー潔癖症)

22. シー・ノー・エビル(臭いものに蓋)

23. ディプロマティック・イミュニティ(外交特権)

24. マジックビーンズ(魔法の豆)

25. 砂の城      奥野さん書き下ろし!
Agenda


1. 本書の構成
2. アンチパターンとは
3. おわりに
アンチパターンとは
べからず集
あるある集
   だけでは無い!
本書のアンチパターンの構成

           名前重要!!
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
例: ナイーブツリー
   (素朴な木)
なぜカタカナ!?
パターン名が英語そのままカタカナ表記であ
るのは、目次を見ただけではビックリするポ
イントですね。


ただ、チーム内で相談するときなどに目立つ
名前が付いているのはむしろありがたいです
し、何よりなんかカッコよくておもしろかっ
たです!
         http://d.hatena.ne.jp/moro/20130205/1360044434
アンチパターン名で議論できるようになる


「 マルチカラムアトリビュート とか 10 年
      前に通ったわー」

「あーはいはい インデックスショットガン 乙」
Explain の結果も見ないでインデックス貼りまく
           る奴いるよねーーー



http://yoshiori.github.com/blog/2013/02/10/sql-antipatterns/
実例: ナイーブツリー(素朴な木)
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
目的: 階層構造を格納し、クエリを実行する
実例: ナイーブツリー(素朴な木)
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
アンチパターンとは何でしょうか。それは、
問題の解決を意図しながらも、しばしば他の
問題を生じさせてしまうような技法を指しま
す。
             ─ Bill Karwin



         よかれと思って裏目
         に出てしまうもの
アンチパターン: 常に親のみに依存する

CREATE TABLE Comments (
   comment_id  SERIAL PRIMARY KEY,
   parent_id   BIGINT UNSIGNED,
   comment     TEXT NOT NULL,
);



 親idが入る
アンチパターンにより起こること


SELECT c1.*, c2.*, c3.*, c4.*
FROM Comments c1 -- 1階層目
  LEFT OUTER JOIN Comments c2
    ON c2.parent_id = c1.comment_id -- 2階層目
  LEFT OUTER JOIN Comments c3
    ON c3.parent_id = c2.comment_id -- 3階層目
  LEFT OUTER JOIN Comments c4
    ON c4.parent_id = c3.comment_id -- 4階層目


                     素朴すぎる故に
                     アンチパターン
実例: ナイーブツリー(素朴な木)
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
直面している問題の種類や、メンバー間の会
話での何気ない言葉が、そこにアンチパター
ンがあるかもしれないことに気づくヒントに
なります。
             ─ Bill Karwin
アンチパターンの見つけ方

「このツリーでは、深さを何階層までサポー
トすればいい?」

「ツリー型のデータ構造を扱うコードなんて
二度と書きたくないな」

「ツリーの中で孤児になった行をきれいにす
るために、定期的にスクリプトを実行しなけ
れば」
実例: ナイーブツリー(素朴な木)
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
アンチパターンを用いても良い場合
共通テーブル式(CTE:common table expression)
    を使って再帰クエリを書ける場合

WITH CommentTree
     (comment_id, bug_id, parent_id, author, comment, depth)
AS (
     SELECT *, 0 AS depth FROM Comments
     WHERE parent_id IS NULL
  UNION ALL
     SELECT c.*, ct.depth+1 AS depth FROM CommentTree ct
     JOIN Comments c ON ct.comment_id = c.parent_id
)
SELECT * FROM CommentTree WHERE bug_id = 1234;
アンチパターンを用いても良い場合

本書にはアンチパターンを適用しても良い状況の
説明もあって好感が持てます。 (略) この本は単な
る「べからず集」ではなく「パターン本」だから
です。コンテキストや制約が異なれば導かれる解
法も異なるというわけです。




http://yojik.hatenablog.jp/entry/2013/02/13/235729
実例: ナイーブツリー(素朴な木)
0.   名前
1.   目的
2.   アンチパターン
3.   アンチパターンの見つけ方
4.   アンチパターンを用いても良い場合
5.   解決策
解決策: 代替ツリーモデルを使用する
             策1: 経路列挙 (Path Enumeration)
comment_id       path    発言者            コメント


    1            1/       Fran      このバグの原因は何かな?


    2           1/2/      Ollie   ヌルポインターのせいじゃないかな?


    3          1/2/3/     Fran    そうじゃないよ。それは確認済みだ。


    4           1/4/      Kukla   無効なインプットを調べてみたら?


    5          1/4/5/     Ollie    そうか、バグの原因はそれだな。

                                  よし、じゃあチェック機能を追加して
    6          1/4/6/     Fran
                                       もらえるかな?

    7         1/4/6/7/    Kukla      了解。修正したよ。
解決策: 代替ツリーモデルを使用する

2. 入れ子集合
NestedSet




            3. 閉包テーブル
            Closure Table
解決策: 代替ツリーモデルを使用する

              解決策の比較表
         テーブ 子へのクエ ツリーへの               参照整合性
 設計                        挿入    削除
         ル数   リ実行 クエリ実行                  維持

隣接リスト     1   簡単    難しい    簡単    簡単     可能


再帰クエリ     1   簡単    簡単     簡単    簡単     可能


経路列挙      1   簡単    簡単     簡単    簡単     不可


入れ子集合     1   難しい   難しい    難しい   難しい    不可


閉包テーブル    2   簡単    簡単     簡単    簡単     可能
Agenda


1. 本書の構成
2. アンチパターンとは
3. おわりに
アンチパターンを共有しよう!
この本の素晴らしいところは、よく
見る「悪い」方法を「悪いこと」
としてまとめてくれたことです。
    http://bleis-tift.hatenablog.com/entry/2013/02/14/SQLアンチパターン




     この問題!
 進研ゼミでやったところだ!
                   http://yojik.hatenablog.jp/entry/2013/02/13/235729
Developers
    Summit

               アンチパターンを共有しよう!
N E X T 	
   A C T I O N !




• 経験した失敗に、名前、目的、アンチパター
    ン(裏目に出た方法)、その見つけ方などを考
    えてみよう。
• 「どうすればよかったか」を考えてみよう。
• それを共有しよう!


                             Developers Summit 2013 Action !
                                                               39
ご清聴ありがとうございました

本書のハッシュタグは
  #sqlap です!

Mais conteúdo relacionado

Mais procurados

マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)Koichiro Matsuoka
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころTakuto Wada
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーke-m kamekoopa
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法yoku0825
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 

Mais procurados (20)

マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 

Destaque

SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークke-m kamekoopa
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionunassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionTakuto Wada
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところTakuto Wada
 
OSS についてあれこれ
OSS についてあれこれOSS についてあれこれ
OSS についてあれこれTakuto Wada
 
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)makopi 23
 
コーディングを考慮したWebデザインガイドライン
コーディングを考慮したWebデザインガイドラインコーディングを考慮したWebデザインガイドライン
コーディングを考慮したWebデザインガイドラインHiroyuki Makishita
 
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCacheAWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCacheAmazon Web Services Japan
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料Hironori Miura
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plusyoku0825
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術Daisuke Tamada
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Soudai Sone
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2Tomofumi Yagi
 
Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testingMind The Firebird
 
High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0Alexey Kovyazin
 
人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきかMikiya Okuno
 
SQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメSQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメNorito Agetsuma
 

Destaque (20)

SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionunassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところ
 
OSS についてあれこれ
OSS についてあれこれOSS についてあれこれ
OSS についてあれこれ
 
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
 
コーディングを考慮したWebデザインガイドライン
コーディングを考慮したWebデザインガイドラインコーディングを考慮したWebデザインガイドライン
コーディングを考慮したWebデザインガイドライン
 
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCacheAWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testing
 
Firebirdの障害対策
Firebirdの障害対策Firebirdの障害対策
Firebirdの障害対策
 
High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0
 
人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか
 
SQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメSQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメ
 

Semelhante a SQLアンチパターン - 開発者を待ち受ける25の落とし穴

Perl で自然言語処理
Perl で自然言語処理Perl で自然言語処理
Perl で自然言語処理Toshinori Sato
 
ダブル配列の豆知識
ダブル配列の豆知識ダブル配列の豆知識
ダブル配列の豆知識s5yata
 
パターンを活用したチーム活動を体験しよう
パターンを活用したチーム活動を体験しようパターンを活用したチーム活動を体験しよう
パターンを活用したチーム活動を体験しようYou&I
 
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争Eric Sartre
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTYuya Unno
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)nishikawa_makoto7
 
オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献Keiichi Kobayashi
 
リガーのお仕事のお話|『階層構造の設計について』語ってみる
リガーのお仕事のお話|『階層構造の設計について』語ってみるリガーのお仕事のお話|『階層構造の設計について』語ってみる
リガーのお仕事のお話|『階層構造の設計について』語ってみるTech Art Online
 
研究発表で失敗しないための8つのTips
研究発表で失敗しないための8つのTips研究発表で失敗しないための8つのTips
研究発表で失敗しないための8つのTipsYasunori Sakai
 
困らない程度のJDK入門
困らない程度のJDK入門困らない程度のJDK入門
困らない程度のJDK入門Yohei Oda
 
マインドマップを使った 仕様分析&テスト設計
マインドマップを使った 仕様分析&テスト設計マインドマップを使った 仕様分析&テスト設計
マインドマップを使った 仕様分析&テスト設計Akira Ikeda
 
アジャイルな見積りと計画づくり1
アジャイルな見積りと計画づくり1アジャイルな見積りと計画づくり1
アジャイルな見積りと計画づくり1Arata Fujimura
 
Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Kouhei Sutou
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT Akabane Hiroyuki
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
上級ユーザビリティテスト手法
上級ユーザビリティテスト手法上級ユーザビリティテスト手法
上級ユーザビリティテスト手法Tarumoto Tetsuya
 

Semelhante a SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (20)

Perl で自然言語処理
Perl で自然言語処理Perl で自然言語処理
Perl で自然言語処理
 
ダブル配列の豆知識
ダブル配列の豆知識ダブル配列の豆知識
ダブル配列の豆知識
 
パターンを活用したチーム活動を体験しよう
パターンを活用したチーム活動を体験しようパターンを活用したチーム活動を体験しよう
パターンを活用したチーム活動を体験しよう
 
Database smells
Database smellsDatabase smells
Database smells
 
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献
 
リガーのお仕事のお話|『階層構造の設計について』語ってみる
リガーのお仕事のお話|『階層構造の設計について』語ってみるリガーのお仕事のお話|『階層構造の設計について』語ってみる
リガーのお仕事のお話|『階層構造の設計について』語ってみる
 
研究発表で失敗しないための8つのTips
研究発表で失敗しないための8つのTips研究発表で失敗しないための8つのTips
研究発表で失敗しないための8つのTips
 
伝わるプレゼン
伝わるプレゼン伝わるプレゼン
伝わるプレゼン
 
TDDを研ぎ究める
TDDを研ぎ究めるTDDを研ぎ究める
TDDを研ぎ究める
 
困らない程度のJDK入門
困らない程度のJDK入門困らない程度のJDK入門
困らない程度のJDK入門
 
マインドマップを使った 仕様分析&テスト設計
マインドマップを使った 仕様分析&テスト設計マインドマップを使った 仕様分析&テスト設計
マインドマップを使った 仕様分析&テスト設計
 
アジャイルな見積りと計画づくり1
アジャイルな見積りと計画づくり1アジャイルな見積りと計画づくり1
アジャイルな見積りと計画づくり1
 
Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
 
上級ユーザビリティテスト手法
上級ユーザビリティテスト手法上級ユーザビリティテスト手法
上級ユーザビリティテスト手法
 
Ruu031222
Ruu031222Ruu031222
Ruu031222
 

Mais de Takuto Wada

OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてTakuto Wada
 
power-assert, mechanism and philosophy
power-assert, mechanism and philosophypower-assert, mechanism and philosophy
power-assert, mechanism and philosophyTakuto Wada
 
アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書Takuto Wada
 
テスト用ライブラリ power-assert
テスト用ライブラリ power-assertテスト用ライブラリ power-assert
テスト用ライブラリ power-assertTakuto Wada
 
Reviewing RESTful Web Apps
Reviewing RESTful Web AppsReviewing RESTful Web Apps
Reviewing RESTful Web AppsTakuto Wada
 
power-assert in JavaScript
power-assert in JavaScriptpower-assert in JavaScript
power-assert in JavaScriptTakuto Wada
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014Takuto Wada
 
テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術Takuto Wada
 
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短いTakuto Wada
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話Takuto Wada
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1Takuto Wada
 
js テスト放浪記
js テスト放浪記js テスト放浪記
js テスト放浪記Takuto Wada
 
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase ClassxUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase ClassTakuto Wada
 
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionTakuto Wada
 
xUTP Chapter27 Generated Value
xUTP Chapter27 Generated ValuexUTP Chapter27 Generated Value
xUTP Chapter27 Generated ValueTakuto Wada
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should knowTakuto Wada
 
10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testingTakuto Wada
 
Tochigi Test-no-Kaigi position paper
Tochigi Test-no-Kaigi position paperTochigi Test-no-Kaigi position paper
Tochigi Test-no-Kaigi position paperTakuto Wada
 

Mais de Takuto Wada (20)

OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
 
power-assert, mechanism and philosophy
power-assert, mechanism and philosophypower-assert, mechanism and philosophy
power-assert, mechanism and philosophy
 
アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書
 
テスト用ライブラリ power-assert
テスト用ライブラリ power-assertテスト用ライブラリ power-assert
テスト用ライブラリ power-assert
 
Reviewing RESTful Web Apps
Reviewing RESTful Web AppsReviewing RESTful Web Apps
Reviewing RESTful Web Apps
 
power-assert in JavaScript
power-assert in JavaScriptpower-assert in JavaScript
power-assert in JavaScript
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 
テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術
 
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
TDDBC お題
TDDBC お題TDDBC お題
TDDBC お題
 
DevLOVE DDDBC
DevLOVE DDDBCDevLOVE DDDBC
DevLOVE DDDBC
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
 
js テスト放浪記
js テスト放浪記js テスト放浪記
js テスト放浪記
 
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase ClassxUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
 
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
 
xUTP Chapter27 Generated Value
xUTP Chapter27 Generated ValuexUTP Chapter27 Generated Value
xUTP Chapter27 Generated Value
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should know
 
10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing
 
Tochigi Test-no-Kaigi position paper
Tochigi Test-no-Kaigi position paperTochigi Test-no-Kaigi position paper
Tochigi Test-no-Kaigi position paper
 

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (7)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

SQLアンチパターン - 開発者を待ち受ける25の落とし穴