XMLデータベース開発方法論(6) Page 1/5
変化に強いXMLデータベース設計とチューニング
川俣 晶
株式会社ピーデー
2005/11/19
本連載は、XMLデータベースの開発方法論を展開する内容である。全6回の連載の前半3回では、なぜXMLデータベースを採用すべきなのかという根元的な認識を読者と共有し、後半3回においてXMLデータベース構築に特化した開発方法論を展開する。(編集局)
更科 ……(中略)ただ、合理性を掲げ、ノイズを排除していく限り、息苦しさはつきまとうと思うんです。でも、彼らはその息苦しさも忘却しようとするから業が深い。ただ、楽園の中で全能の王様を演じている分には個人の自由なんですよ。不毛ではありますが。問題は虚構の万能感で満足できずに現実へ持ち込もうとする夜郎自大さで……(中略)……現実を忘却しようとする----潔癖な理論に隠された欲望です。 『「戦時下」のおたく』ササキバラ・ゴウ編 角川書店刊 p395より |
主な内容 --Page 1--
前回のおさらいと今回のテーマノイズまみれのシステム --Page 2--
変化に追従する柔軟なデータ構造拡張のためのスタブ --Page 3--
YAGNI再び要素と属性の問題再び 「ゼロ時間変換」を行うか否かの選択 データベースのリファクタリング --Page 4--
データ構造の最適化の必要性準備段階 追加/削除の最適化 --Page 5--
クエリの無駄を省くクエリの効率アップ 「標準」に魂を奪われるな! 連載の終わりに |
前回、前々回は、XMLデータモデルによるデータベース設計の基礎的なノウハウを説明した。これらは、XMLでの言語設計と重複するノウハウも多いが、異なる部分もあるので注意を要する。また、XMLの世界を経由せずにXMLデータベースの世界にやって来るデータベース技術者の便宜も考えてまとめられている。
さて、今回はより応用的な内容に進んでいく。具体的には、変化に強いデータベース設計と、性能を向上させるための設計についてのヒントである。XMLデータベースは変化に強いのだが、真に変化に強いデータベースは、きちんと変化に備えることによってしか生まれない。そのためのヒントを書いてみたい。また、巨大データベースが期待されることも多いXMLデータベースでは、性能面での問題が生じる可能性がある。より高い性能を得るための設計のヒントも述べてみたい。
なお、XMLデータベースは利用実績も少なく、確定した設計指針なども存在しないと思う。ここで述べられている内容は、あくまで、現時点で筆者が考える「より良い結果を引き出すであろう(容易に想定される悪い結果を回避できるであろう)」設計指針であることに注意を払っていただきたい。つまり、完全であることも、誤りがないことも保証はできない。しかし、少なくともXMLやXMLデータベースを初めて使うという利用者の立場からすれば、いくつもの重大なトラブルを回避できるだけの有益な内容は含んでいるはずである。
この連載では、変化を受け入れることが本来は必須の要件であり、変化の拒絶は非現実的であることをすでに説明した。予測不能の変化が不可避であるということは、合理的であらゆる不純物(ノイズ)が排除された美しいシステムを構築することは不可能であることを意味する。逆にいえば、そのような価値観を目指して作られたシステムは、たとえ美しく完成したとしても、それは実際のニーズと食い違う可能性が高いことを意味する。そして、食い違いが明らかになったとき、それを修正しようとした場合に、美しさが徒(あだ)になる可能性もある。美しいシステムと修正が容易なシステムは必ずしも一致しないためである。
それにもかかわらず、理想的な美しいシステムを夢見る技術者は後を絶たない。冒頭に引用した文はいまどきの「おたく」(同書では、カタカナ表記の「オタク」ではなく、ひらがな表記の「おたく」が使われている)についての更科修一郎氏の発言であるが、この条件に当てはまるソフトウェア技術者は確かに存在するように思える。つまり、コンピュータの内部はすべて1ビット単位で支配できるが故に、すべてが美しい秩序に沿って構築された理想的なシステムは可能であるという幻想を抱き、その幻想に合致しないものをノイズとして排斥しようとする態度は、けして珍しいものではないように思える。
もちろん、理想的なシステムなど幻想にすぎないことは、現実が教えてくれる。次から次へと発生する修正要求で、美しい設計がみるみる汚されていく状況など、誰でも経験があることだろう。その状況で、本来は美しいシステムが幻想であるのに、修正要求の方が理不尽であると理解される場合注、そう理解した者は容易に「私は正しいことを知っているのに周囲が理解しない」という心理状況に陥る可能性がある。もちろん、そのような者が頭の中で、いくら自分なりの理想の世界を描こうと、要求された仕事をこなし続ける限りは何ら問題ではない。個人が頭の中で何を考えようと自由である。しかし、それを頭の中から取り出して主張するようになれば話は別である。それは現場のリアリティに合致せず、引用した文で「夜郎自大」と表現された態度と類似しているといえる。理想の主張、説得は、十分な問題解決能力を持たざる技術者がその現実を忘却する手段として機能するということである。
注:本当にどう解釈しても理不尽な修正要求も実在するが、ここでは合理性や必然性のある修正要求について考えている。 |
さて、このような話を書いたのは、今回これから語る内容が何かを明確化するためである。ここで私が語るのは、問題解決能力のあるシステム構築方法であり、データベースが変化を受け入れる方法であり、データベースが性能を発揮するための方法である。それは、不可避に発生する不純物(ノイズ)を受け入れる方法といい換えてもよい。ノイズとは、例えば予測できない設計の変更要求であるとか、きれいに収まらない例外的なデータなどである。それらをいかにして受容するかが今回の主テーマである。ということは、もちろん、ノイズを排斥した美しくも理想的なシステムについては一切語らない。ほとんどのソフトウェア技術者が向き合っているのは、おそらくノイズまみれのシステムだと思うからである。
ちなみに、「ノイズをすべて排除した純粋な美しいシステム」を目指さないことは、敗北を認めることではない。勝ち取るべき勝利は、ニーズに合致するシステムのスムーズな構築と円滑な稼働であって、それを実現するためには多くの困難に打ち勝たねばならない。あえていえば、ノイズを排除したシステムを作ることと比べ、ノイズを受け入れるシステムを作ることはけた違いに困難な闘いになる。ここで述べるのは、そのような意味での闘いに勝つためのヒントである。(次ページへ続く)
1/5 |
Index | |
XMLデータベース開発方法論(6) 変化に強いXMLデータベース設計とチューニング |
|
Page 1 ・前回のおさらいと今回のテーマ ・ノイズまみれのシステム |
|
Page 2 ・変化に追従する柔軟なデータ構造 ・拡張のためのスタブ |
|
Page 3 ・YAGNI再び ・要素と属性の問題再び ・「ゼロ時間変換」を行うか否かの選択 ・データベースのリファクタリング |
|
Page 4 ・データ構造の最適化の必要性 ・準備段階 ・追加/削除の最適化 |
|
Page 5 ・クエリの無駄を省く ・クエリの効率アップ ・「標準」に魂を奪われるな! ・連載の終わりに |
XMLデータベース開発論 |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|