XMLデータベース・オフショアITアウトソーシングのサイバーテックXML技術をベースに、制作業務の内製化・効率化を実現する国産コンポーネントCMS、および超高速XMLデータベースとITサービスを提供いたします。エンジニア特別対談「エンジニアが本音で語る!XMLデータベース、その真の実力とは」(1)1ページ2ページ3ページエンジニアの視点で語られることが少なかった、XMLデータベース。DB)今回は、XMLデータベースシステムインテグレーションの第一人者である、キヤノンITソリューションズ株式会社の木村氏に、XMLデータベースを使ったシステム提案・構築・実装の経験を踏まえ、その使いどころと構築のツボ、今後について伺った。千晶1.プロローグ白井:木村さんにXMLデータベースのお話を頂く前に、XMLデータベース製品について、その分類方法や呼称が統一されていないので、ここから整理したいと思います。私達サイバーテックでは、XMLデータベースを、「XMLのハンドリングに特化したデータベース製品」と定義しています。DB」と分類される事もありますが、テーブル型アーキテクチャがベースであるため、「リレーショナルデータベース(RDB)」と分類する事にしています。DBの技術調査という目的も兼ねて、当社向けのベンダ説明会に参加しました。DBを使った業務システムの開発に携わったのはいつ頃ですか?木村:2004年に、NeoCoreを使った製品情報管理システムの開発が最初です。白井:その当時、RDBでXMLが扱える製品はありましたか?木村:はい、RDBでもXMLデータを扱う事ができる製品はありました。DBを扱える、と言ってもXML系のツールを使い、XMLタグをRDBテーブルのカラムにマッピングする使い方や、XML-EDIに代表されるようなXMLデータを単に変換して業務システムに流すような使い方が中心でしたね。お客様への提案時に、XMLを扱えるデータベースをいくつか比較・検証しました。DBを選定された決め手となった理由は何だったのですか?木村:最も大きな理由が、「専門のシステム管理者・データベース管理者が不要な、社内で管理運用できるシステムにして欲しい」という要件があった事です。導入後にデータ項目の追加変更が発生する事が最初から想定されていて、顧客からは「データの構造変更が頻繁に発生するので、そのために都度データベースの再設定やアプリケーション改修によるコストや時間をかける事は許されない」、と強く言われていました。当社もRDBを使ったSIを行っていますから、社内からは、その当時「データマッピングをして、インデックスを張ればRDBでも実現できるのではないか」という声があがったのは事実です。業務要件として、データ(製品情報)の構造変更が頻繁に発生する、という事は明確でしたから、従来のRDBアプローチでは、要件は満たせないと考えていました。白井:パフォーマンス面での検証についてはいかがでしたか?木村:やりました。RDBも含めて一生懸命やりました。(笑)まずは各テーブルに対してXMLタグをマッピングして格納する方法。これは、現実的な方法ではありませんでした。データ構造が変わったら結局テーブルを設計し直す必要があります。XMLを使う意味がなくなってしまいます。(※図2)2つ目は、CLOBフィールドにXMLをそのまま入れる方法があります。これはXMLの形式にとらわれず格納する事ができますが、検証の結果、業務で耐えうる十分な検索パフォーマンスがでませんでした。3つ目は、CLOBに格納されているXMLの中で、検索対象となる特定タグについて通常のテキストフィールドに入れて、そこにインデックスを張る方法があります。この方法ですと、高速にターゲットとなるXMLタイプを特定する事が可能にはなりました。検索項目が増えた場合に必ずテーブルの改修が発生してしまうので、今までと異なる形式のXMLが飛んできた時点で、結局エンジニアによるチューニング作業が発生してしまいます。図2:RDBのCLOBにXMLをマッピングする木村:XMLを活用する場合であっても、システム内には、RDBデータとXMLデータが混在するのが一般的でしょう。したとき、直感的には、XMLを扱えるRDBで構築することが最適解であるように見えます。確かに、XMLデータが付加的な情報として扱われている場合は、XMLを扱えるRDBが有効な場合があります。具体的に、即ち、安全性や、システムリソース、それに伴うパフォーマンスを考えたとき、扱う情報毎にサーバを分けて構築するケースも考えられるのではないでしょうか。DBを使い、表形式データを格納するサーバには、RDBを配置する、即ち、システムとしてのハイブリッドが現実的であることも多いと思います。DBに格納され、情報システムの運用者がいなくても業務が回るシステムにします。「製品スペック情報」と連動してWebカタログに表示するための「顧客データ」や「受注データ」は、RDBに格納する。DBをシステムとしてハイブリッドにして使われています。DBとRDBをどのように配置すれば良いか、という議論になるのです。白井:なるほど、データベースだけではなく、システムとしてのハイブリッドですね。DBに格納するデータを分離したパターンは多数あります。