kagamihogeの日記

kagamihogeの日記です。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み

おおよそ近年の Web アプリというか業務アプリは RDBMS の存在無くして語ることは出来ないケースがほとんどである。RDBMS ってのはホントーによくできていて、SELECT,INSERT,UPDATE,DELTE の 4 つの SQL を知っていればホントーにお手軽に永続化機構が利用できてしまう。

DB*1 の発展のおかげで、今でこそ「お手軽に永続化機構が利用できる」ことに違和感を感じなくなってしまっている。がしかし、ほんの数十年もさかのぼって固定長データ全盛の時代になると、この部分は標準的な手続きが整備されてなかったっぽいんだよね。物理的にデータがどう格納されるかを決定するのはプログラマーの責任だったみたいなのですよ。

おかげで 10-20 年くらい前のテーブル設計(構造化設計といったほうがいいか)の教科書を見ると、平気で「カラムには将来の変更に備え予約領域1,予約領域2,予約領域3 を設けること」なんてことが書いてあったりします。テーブル設計なめてんのか、って話ですが、そんだけデータの論理的な格納され方と物理的な格納され方を意識せにゃならん時代だったんでしょうねぇ。

ちょっと話がズレたけど。そんな時代背景があったので、物理的にデータがどんな風に格納されてようが SQL たたけばおk、っていう風にした DB のインパクトはものすごく大きかったんだと思います。今となってはアンマリ実感沸かない話ではあるのだけども。

でまぁ前振りが長くなってしまいましたが。なんだかんだいって現代の業務アプリでは欠かせないのが DB なわけです。

そんでもって。DB はいくらかの SQL をテキトーに知っておけばお手軽データストアとして使える素晴らしさがある反面、ちゃんと使いこなそうとすると途端に難易度が跳ね上がる代物でもあります。ボトルネックになるのは I/O が絡む部分と相場が決まっておるわけですよ。パフォーマンス出すことを求められるとアプリケーション開発の文脈とは異なる知識やアプローチが要求されるため、中々難儀をすることになります。専任の DBA 置ければ理想的なんだろうけど……中々そうは問屋が卸さないんですよね。開発のライフサイクルに置いて DB のエキスパートが要求される局面ってどーしてもスポットになりがちな事情も絡んだりして……

そんなわけで「データベースってなぜ動くの?」ってとこをちょっと勉強しようと考えて本書を手に取りました。もちょっと DB の中身を知った上でアプリ作れるようにならにゃなぁ、と。

それで本書の中身ですが、特定の RDBMS を対象とせず RDBMS の特徴を網羅的に解説しています。内容はこんな感じ。

第1部 はじめに(データベースの基礎とディスクアクセス)
第2部 SQLの処理(SQLをどう料理するか(SQL構文解析
SQLから演算へ)
カタログとインデックス ほか)
第3部 システム化のサポート(トランザクションの基礎
トランザクション制御とMVCC ほか)
第4部 複数データベースをまとめる(クラスタリングによる性能向上
データベースのパーティショニング)

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine SELECTION) 目次より抜粋

データベースってそもそも何よ的なところから、SQL が入力されるとどのように処理されていくのかを順に追い、テーブルやインデックスの構造の解説、DB が備えているトランザクションや MVCC などの機構の解説、最後にややオマケ的にクラスタリングとパーティショニングの性能向上に関する話。

DB はディスクと CPU とメモリというそれぞれ性質の異なるハードウェア資源のバランスを取りつつ、SQLトランザクションや同時実行制御などのソフトウェアサービスの側面もある。なんつーか、ハードとソフト両面に渡って非常に幅広い分野をカバーしてるのよね。しかもひとつひとつの分野もまたすごく奥深い。

DB の世界はホント広いですな……



最後に一言。本書は 2005/2 発行なのでふれてないし今だったら絶対ふれてるだろうけど、SSD で DB がどう変わるかはすごく気になるところ。理論上はランダムアクセスの速度が大幅に改善されるわけだし。今まではディスクというストレージ形態に縛られていた部分が、果たしてどう変わるのか or 変わりうるのか。

その辺りの未来を占う上でも、DB がなんで動くのかマッタク知らないですな人にはオススメしたい一冊です。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine SELECTION)

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine SELECTION)

*1:ホントーは DB と RDBMS とは書き分けないといけないんだけど、メンドイので以下ごっちゃ煮で DB で通します。