Soumettre la recherche
Mettre en ligne
お前の罪を数えろ
•
1 j'aime
•
2,487 vues
Masahiro Tomita
Suivre
NSEG #96 SQLアンチパターン読書会スペシャルで発表したスライド
Lire moins
Lire la suite
Technologie
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 73
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
mysql casual #4
mysql casual #4
kenji naito
TypeScript 勉強会
TypeScript 勉強会
Masahiro Wakame
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
Ruby 2.5
Ruby 2.5
Masahiro Tomita
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル
Masahiro Tomita
ネットワークこわい
ネットワークこわい
Masahiro Tomita
CSV
CSV
Masahiro Tomita
MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
Masahiro Tomita
Recommandé
mysql casual #4
mysql casual #4
kenji naito
TypeScript 勉強会
TypeScript 勉強会
Masahiro Wakame
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
Ruby 2.5
Ruby 2.5
Masahiro Tomita
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル
Masahiro Tomita
ネットワークこわい
ネットワークこわい
Masahiro Tomita
CSV
CSV
Masahiro Tomita
MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
Masahiro Tomita
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
Masahiro Tomita
Ruby24
Ruby24
Masahiro Tomita
MySQLの文字コード事情
MySQLの文字コード事情
Masahiro Tomita
進捗と品質
進捗と品質
Masahiro Tomita
MySQLを拡張する
MySQLを拡張する
Masahiro Tomita
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
Masahiro Tomita
MyNAができるまで
MyNAができるまで
Masahiro Tomita
文字化け
文字化け
Masahiro Tomita
Crystal
Crystal
Masahiro Tomita
メールの暗号化
メールの暗号化
Masahiro Tomita
文字化け
文字化け
Masahiro Tomita
進捗と品質
進捗と品質
Masahiro Tomita
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
Masahiro Tomita
🍣=🍺
🍣=🍺
Masahiro Tomita
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
Masahiro Tomita
Sequelのすすめ
Sequelのすすめ
Masahiro Tomita
MySQLのプロトコル解説
MySQLのプロトコル解説
Masahiro Tomita
Dockerイメージを作る
Dockerイメージを作る
Masahiro Tomita
Dockerさわってみた
Dockerさわってみた
Masahiro Tomita
Nseg49 mysql
Nseg49 mysql
Masahiro Tomita
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Contenu connexe
Plus de Masahiro Tomita
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
Masahiro Tomita
Ruby24
Ruby24
Masahiro Tomita
MySQLの文字コード事情
MySQLの文字コード事情
Masahiro Tomita
進捗と品質
進捗と品質
Masahiro Tomita
MySQLを拡張する
MySQLを拡張する
Masahiro Tomita
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
Masahiro Tomita
MyNAができるまで
MyNAができるまで
Masahiro Tomita
文字化け
文字化け
Masahiro Tomita
Crystal
Crystal
Masahiro Tomita
メールの暗号化
メールの暗号化
Masahiro Tomita
文字化け
文字化け
Masahiro Tomita
進捗と品質
進捗と品質
Masahiro Tomita
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
Masahiro Tomita
🍣=🍺
🍣=🍺
Masahiro Tomita
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
Masahiro Tomita
Sequelのすすめ
Sequelのすすめ
Masahiro Tomita
MySQLのプロトコル解説
MySQLのプロトコル解説
Masahiro Tomita
Dockerイメージを作る
Dockerイメージを作る
Masahiro Tomita
Dockerさわってみた
Dockerさわってみた
Masahiro Tomita
Nseg49 mysql
Nseg49 mysql
Masahiro Tomita
Plus de Masahiro Tomita
(20)
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
Ruby24
Ruby24
MySQLの文字コード事情
MySQLの文字コード事情
進捗と品質
進捗と品質
MySQLを拡張する
MySQLを拡張する
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
MyNAができるまで
MyNAができるまで
文字化け
文字化け
Crystal
Crystal
メールの暗号化
メールの暗号化
文字化け
文字化け
進捗と品質
進捗と品質
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
🍣=🍺
🍣=🍺
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
Sequelのすすめ
Sequelのすすめ
MySQLのプロトコル解説
MySQLのプロトコル解説
Dockerイメージを作る
Dockerイメージを作る
Dockerさわってみた
Dockerさわってみた
Nseg49 mysql
Nseg49 mysql
Dernier
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Dernier
(9)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
お前の罪を数えろ
1.
自己紹介自己紹介 とみたまさひろ 得意技 Ruby MySQL 文字化け 好きなO/Rマッパーは Sequel ������������������������������������問題 1
2.
SQLの嫌いなところSQLの嫌いなところ 英語っぽい コンピュータで扱う言語っぽくない 予約語が多い カラム名に「group」が使えなくて死ぬ 余計な単語 INSERT INTO, GROUP
BY 2
3.
英語だからみんな騙されてるけど英語だからみんな騙されてるけど 日本語だったら「ぴゅう太」日本語だったら「ぴゅう太」 みたいなもんだからなみたいなもんだからな 3
4.
お前の罪を数えろお前の罪を数えろ NSEG #96 (お、丸8年では?) 2018/01/27 とみたまさひろ 4
5.
SQLアンチパターンを読んだ感想SQLアンチパターンを読んだ感想 5
6.
「あー、あるある」「あー、あるある」 6
7.
数えてみよう数えてみよう 7
8.
ジェイウォークジェイウォーク 1カラムに複数の値を格納する 8
9.
やったやった 「a,b,c」とするのはシロウト 「,a,b,c,」としておくと LIKE '%,値,%' で検索できて便利 9
10.
ナイーブツリーナイーブツリー 子が親IDを参照するツリー構造 10
11.
ふつーにやる そもそもツリー構造をRDBで表現するのが負け 同じ負けなら単純な方がいい そういえばMySQLも8から再帰クエリ書けますね Nested Set はやりすぎ感 http://tmtms.hatenablog.com/entry/20110223 /redmine 11
12.
IDリクワイドIDリクワイド すべてのテーブルに「id」列を用いる 12
13.
よくやった userテーブルのidカラムは user.id と書けていい感じ user.user_id
はなんか冗長 全体でカラム名を一意にした方がいいような気もする 13
14.
キーレスエントリキーレスエントリ 外部キー制約を使用しない 14
15.
え? MySQLをdisってんの? 初期のMySQLには外部キーなんてなかったんですよ 消す時に順番に気をつけないとエラーになるし PostgreSQL だと何か方法あった気もする 15
16.
エンティティ・アトリビュート・エンティティ・アトリビュート・ バリューバリュー 汎用的な属性テーブルを使用する汎用的な属性テーブルを使用する 名前カラムと値カラムみたいなやつ 16
17.
ごめんなさい 値の型ごとにテーブルを用意する くらいはしてもよかった 実はJSONでもいいかも 17
18.
ポリモーフィック関連ポリモーフィック関連 二重目的の外部キーを使用する二重目的の外部キーを使用する 18
19.
たぶんやってない…と思う 19
20.
マルチカラムアトリビュートマルチカラムアトリビュート 複数の列を定義する複数の列を定義する tag1, tag2, tag3
カラムみたいなやつ 20
21.
たぶんやってない…と思う 21
22.
メタデータトリブルメタデータトリブル テーブルや列をコピーするテーブルや列をコピーする 行数の多いテーブルを分割するとか 22
23.
諸般の事情によりやってました つらい 23
24.
ラウンディングエラーラウンディングエラー FLOATデータ型を使用するFLOATデータ型を使用する 24
25.
残念ながら使う機会がなかった 25
26.
サーティワンフレーバーサーティワンフレーバー 限定する値を列定義で指定する限定する値を列定義で指定する MySQLでENUM使ったり CHECK制約で値のリストを指定したり 26
27.
使ったことはある そんなに悪くなかったような… 27
28.
ファントムファイルファントムファイル 大きなデータをファイルで管理大きなデータをファイルで管理 28
29.
やってる ふつうやりますよね? まあつらいこともあるけど 29
30.
インデックスショットガンインデックスショットガン 闇雲にインデックスを使用する闇雲にインデックスを使用する 30
31.
たぶんやってない 31
32.
フィア・オブ・ジ・アンノウンフィア・オブ・ジ・アンノウン col=NULL とか func(NULL)
とかcol=NULL とか func(NULL) とか 32
33.
ふつうはやらない 33
34.
アンビギュアスグループアンビギュアスグループ 非グループ化列を参照する非グループ化列を参照する SELECT col1 ...
GROUP BY col2 とか 34
35.
やってた たぶんMySQL以外はエラーになる 意外と便利 https://twitter.com/tmtms/status /846254316797095936 35
36.
ランダムセレクションランダムセレクション データをランダムにソートするデータをランダムにソートする 36
37.
自分はやらないけどそういう要求があった場合はむずか しいですね 37
38.
プアマンス・サーチエンジンプアマンス・サーチエンジン LIKE '%文字列%'LIKE '%文字列%'
で全文検索で全文検索 38
39.
やるやる お手軽なのでおすすめ ��� PostgreSQLは何かの仕組みで LIKE
'%文字列%' でも インデックスを効かせることができたような 39
40.
スパゲティクエリスパゲティクエリ 複雑で長いクエリ複雑で長いクエリ 40
41.
SQL力が低くて複雑なクエリは書けません 41
42.
インプリシットカラムインプリシットカラム SELECT *SELECT * 42
43.
プログラム中ではふつうは書かない 手作業では使う 43
44.
リーダブルパスワードリーダブルパスワード パスワードを平文で格納するパスワードを平文で格納する 44
45.
昔やりました ごめんなさい 今は平文で格納することはないけど ハッシュ値じゃなくて復号可能な暗号にすることもある 45
46.
SQLインジェクションSQLインジェクション 未検証の入力をコードとして実行する未検証の入力をコードとして実行する 46
47.
O/Rマッパー使いましょう 47
48.
シュードキー・ニートフリークシュードキー・ニートフリーク 隙間を埋める隙間を埋める 偉い順にIPアドレスを振るみたいな? 48
49.
人目に触れるものをキーとしては つかわない方がいいですね 49
50.
シー・ノー・エビルシー・ノー・エビル 肝心な部分を見逃す肝心な部分を見逃す 例外機構がない言語でエラーチェックしてない 50
51.
そんな人いる? 例外を隠蔽するプログラムは見たことある 51
52.
ディプロマティックディプロマティック イミュニティイミュニティ SQLを特別扱いするSQLを特別扱いする プログラムを管理するようにはSQLを管理してない 52
53.
文書化はしてない ER図は必要になった時にツールで生成すればよくね? Railsのマイグレーションの仕組みはすばらしい 53
54.
マジックビーンズマジックビーンズ モデルがアクティブレコードそのものモデルがアクティブレコードそのもの 54
55.
あるある 55
56.
砂の城砂の城 想定不足想定不足 サービス継続・運用の話 56
57.
運用してないからパス 57
58.
結果結果 58
59.
13 / 2513
/ 25 59
60.
過半数 ��� 60
61.
おまけおまけ 61
62.
アンチパターンを考えてみたアンチパターンを考えてみた 62
63.
ソーリーソーリー ジャパニーズ・オンリージャパニーズ・オンリー 63
64.
日本語テーブル名/カラム名日本語テーブル名/カラム名 64
65.
英語 日本語 created_at 作成日時 user_name
利用者名 65
66.
あれ?わかりやすいあれ?わかりやすい 66
67.
文字数も少なくてすむし文字数も少なくてすむし 67
68.
入力は面倒だがエディタやIDEが入力は面倒だがエディタやIDEが きっとなんとかしてくれるきっとなんとかしてくれる 68
69.
情報処理推進機構(IPA)も推奨(?)情報処理推進機構(IPA)も推奨(?) 情報処理試験データベースで日本語テーブル名と日本語 カラム名のクエリを手で書かされた記憶が… SELECT 顧客名, 会社名
FROM 顧客管理台帳 LFET JOIN 会社管理台帳 USING 会社識別番号 WHERE 顧客住所 ... 69
70.
業務用語をそのまま使える業務用語をそのまま使える 70
71.
アンチパターン…? ������ 71
72.
実は結構よいのでは実は結構よいのでは 72
73.
おわりおわり 73
Télécharger maintenant