February 19, 2012

44のアンチパターンに学ぶDBシステム

44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)
44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)

キーワード:
 小田圭二、DB、アンチパターン、Oracle、大罪
Oracleの中の人によって、DBのアンチパターン集が示されている本。記事末尾に44のアンチパターンを全て列挙するので、今回は目次を割愛。

本書はDBマガジンで連載されていた記事が本になったもので、プロジェクトの現場で苦労している部分、症状は似たものであることから、その失敗事例、落とし穴の例をキリスト教の7つの大罪(拙速、無関心、狭量、無精、強欲、無知、傲慢)になぞらえてDBでのアンチパターンとして44個まとめられたものとなる。「アンチパターン」の説明はWikipediaによると『ある問題に対する、不適切な解決策を分類したものである』とある。そこから、本書ではユニークなパターンタイトルが付けられ、各アンチパターンに以下のような構造で内容の説明が示されている。
  • 説明
  • 挿話証拠
  • 頻出スケール(どこで見られるか)
  • 再構想解
  • 背景
  • 一般形式
  • 症状と結果
  • 典型的な原因
  • 例外的なケース
  • 再構想による解決
  • トラブルから学ぶアーキテクチャ
現在データベーススペシャリスト試験の勉強をしていたり、実際の仕事でAccessを利用したDBシステムのリファクタリングなどをやっていて、あまりよろしくないDBをどう改善するか?のヒントにならないかと思って読んでみた。大きめの書店のDBコーナーに行っても、分厚すぎず分かりやすくDBの改善についての全体像が把握できる本がほとんどない中、この本は結構役に立った。

著者はOracleのエンジニアであることから、DBシステムが使われたさまざまなプロジェクトを経験されてきている。その経験的なものなどが一般化されていてとても分かりやすかった。

例えば、アンチパターン2『大河ドラマ「SQL」』では、パズルのような長すぎるSQL文が使われていて、性能が悪すぎたり、SQL文の解析処理に時間がかかるということがあったりする。そういう場合は、きちんとひも解いてSQLを書き直し、テストすることが得策と示されている。まぁ、理想はそうだよね、でも時間も工数も人員もないよねって思ったりもww

他には大規模DBシステムの典型的なものとしては、アンチパターン5『OLTPなのにSQLが重い』っていうのとか。OLTPはオンライントランザクション処理のことで、予約システムや物販システムに利用されているもの。顧客との契約にレスポンス5秒以内ね!!ってところに10秒待っても画面が固まったままなのだけど・・・っていう場合にはこれに当てはまる。その原因と解決策も簡単に示されている。

機械系だけではなくマネジメント的な人間系のアンチパターンもあって、かなり網羅されている印象。DBシステムのメンテナンス、運用要員になった場合、DBシステムの肝、気をつけなくてはいけないところ、パフォーマンスのボトルネックになっている部分ってなんだろう?というようなことを一通り把握するにはかなり優れている。さらに、Oracleをベースとしてアーキテクチャの説明もあってよい。

ただ、どうしても網羅性に主眼が置かれている作りのため、実際のパフォーマンスチューニングは具体的にどうやるんだ?といった部分などについては若干物足りなさもある。そこらへんは別の書籍をあたるか、現場のデキるDBスペシャリストな人に教わるしかないかなと。

ITシステムにおいて、データベースが使われていないものはほとんどと言ってないほどなので、データベースに詳しくなっておきたいと思っていた。そのため、本書で「開発者側DBAにお勧めのスキル」というものが載っていたので、参考になった。一言でDBと言っても、データモデリングなど上流部分から、パフォーマンチューニング、SQLコーディングと行った運用、下流部分までとさまざまなだなぁと思った。

最後に、本書で示されている44のアンチパターンのタイトルを以下にすべて示しておく。
  1. ねずみ算
  2. 大河ドラマ「大作SQL」
  3. バケツ RDBMS
  4. 太っちょ(多くの列を持つ表)
  5. OLTPなのにSQLが重い
  6. DATE型の意識統一不足(時分秒など)
  7. データの保持期間を決めていない
  8. 不適切なリトライの仕組み
  9. バッチにおいて適切に処理を分割していない
  10. バッチがリラン(再実行)できない
  11. 再利用しない(コネクションなど)
  12. バインド変数を使っていないSQL
  13. 組み合わせ爆発
  14. 臭い物に蓋をすると、もっと臭くなる
  15. データの量の暴力
  16. 過ぎたるはなお及ばざるがごとし
  17. データの分身の術……どれが本物?
  18. DB連携地獄
  19. サーバー移行やバージョンアップでSQLのテスト軽視
  20. トランザクションスコープが不適切
  21. なんでもかんでもリアルタイム集計
  22. 詰まると接続が増えるアーキテクチャ
  23. 引きずられるアーキテクチャ
  24. 無関心(エラーが起こるまで異常に気がつかない)
  25. タイタニックシンドローム(絶対に沈まないと思って緊急時の備えを怠る)
  26. 自分で自分を診察する(自分を冷静に判断することはできない)
  27. 不法占拠
  28. 掃除しない部屋
  29. 振り返れば相手はいない
  30. 足元おろそか
  31. リソースのバランスが悪い
  32. 気がついたらテストの時間がない(もしくはテストをしない)
  33. 目標なきチューニング
  34. 完璧な初期DBサイズ見積もりと実際のデータ量の差が生む悲劇
  35. 性能に関するアプローチがない
  36. DBに格納されているテストデータ量が少ない/種類が少ない
  37. 見て見ぬふり
  38. 重すぎる高価な鎧(よろい)
  39. 度を越した楽観
  40. 心配屋
  41. 自社に合ったDBAのあるべき姿が分からない/DB担当の要員アサインが悪い
  42. DBAが育たない
  43. セキュリティ権限設定とDB運用のミスマッチ
  44. DBチームのリーダー/担当者の権限が弱い
DBシステムのプロジェクトに関わったことのある人は、必ずどれか一つはあるあるwwwってなること確実!!

今年は更新頻度を上げると宣言していたはいいけど、2月はあまり更新できておらず。読んでいる本が分厚すぎたり、仕事が若干忙しくなってきたこともあったり、DBスペシャリスト試験の勉強を最優先にしていることもあって、4月半ばまでは更新頻度がかなり下がるかも。なので、気長にお待ちを〜。



44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)
44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)
著者:小田 圭二
販売元:翔泳社
(2009-11-28)
販売元:Amazon.co.jp

読むべき人:
  • DBシステムのプロジェクト要員の人
  • DBシステムのリファクタが必要な人
  • DBを極めたい人
Amazon.co.jpで『データベース』の他の本を見る

bana1 DBアンチパターンクリック☆  にほんブログ村 本ブログへ



トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星