データベースの間違った使い方10項目
一般的なシステムで広く利用されているリレーショナルデータベースですが、システムの進化と共にデータベースの構造も複雑になりがちです。RestMQの作者、Gleicon Moraes氏の公開したスライドがシステムが複雑化していく様子をわかりやすく説明した上で「アンチパターン」を提示していました。
それによるとデータベースのアンチパターンは以下の通り。
- 動的なテーブルの作成
- テーブルをキャッシュとして使う
- テーブルをキューとして使う
- テーブルをログとして使う
- 分散したグローバルなロック
- ストアドプロシージャ
- 使われない項目
- JOIN地獄
- ORMによって繰り返されるクエリ
- 負荷のコントロール
どれも理由があって採用されるデザインですが、確かに後に問題を引き起こした経験もあり耳が痛い感じですね。スライド内ではそれぞれの問題についての解決策としてMongoDBやRestMQなどの利用を進めています。「本来の使い方をしていない」という事の例として「レースカーのようにドリフトする鴨の画像」が使われていたのもユーモラスです。
他のページの画像も面白くタメになる内容なのでご覧になってみてください。
via:http://www.slideshare.net/gleicon/architecture-by-accident
[…] データベースの間違った使い方10項目 […]
先週のA-Listersまとめ #2 « A-Listers
2011/05/16 at 06:13
[…] いまだに根強い人気を誇る「データベースの間違った使い方10項目」という今月前半公開の記事ですが、「いきあたりばったりのアーキテクチャと教訓」としてPublickeyさんにピックアップしていただきました。スライドの詳説が分かりやすく、前述の当サイトの記事がおもしろかったという方にはかなりオススメです。 […]
先週のA-Listersまとめ #3 « A-Listers
2011/05/23 at 10:02
[…] Queueを実装したいなと思い、適当にMysqlのテーブルを使って書こうと思ったら、 それはアンチパターンだよって記事を見つけた。 https://tech.a-listers.jp/2011/05/09/architecture-by-accident/ […]
- 寝る前にラーメン 寝る前にラーメン | エンジニアのコードに関する忘備録
2011/05/30 at 00:46
[…] データベースの間違った使い方10項目 […]
先週のA-Listersまとめ #11 « A-Listers
2011/07/18 at 09:01