|
||||||||||
| 1 2 3 次のページ | ||||||||||
| pureXML(DB2 9のXML機能) | ||||||||||
|
今回はDB2 9の一番の新機能「pureXML」を紹介します。 DB2 9の特徴は何といってもXMLデータを扱うための専用エンジンを実装しているところです。V8までのDB2を含む従来のリレーショナルデータベース(RDBMS)でもXMLを扱うことはできましたが、既存のデータベースの機能を利用したいわば「暫定的」な対応方法でした。 XMLデータの格納方法は大きく2種類あり、XMLデータをテーブルの各列にマッピングするシュレッディング方式と、VARCHARやCLOBといった列にそのままの形で保管する方式の2種類の方法が採用されていました。どちらの方式もそれぞれ、柔軟性とパフォーマンスのトレードオフで、両方の長所を持った本当の意味でのXMLデータベースとは呼べなかったのが実情です。 最新バージョンであるDB2 9では、これまでのRDBMSの枠を超えてネイティブXMLストレージと呼ばれるXML専用のエンジンを搭載しました。この機能を総称して「pureXML」と名づけています。もちろん従来からのリレーショナルエンジンもそのまま引き継がれていますので、DB2 9はXMLとリレーショナルのハイブリッドデータベースとなります。 pureXMLは、XMLの柔軟性を損なうことなくデータベースに格納するために、XMLスキーマの定義を必要としない「スキーマレス」の管理が可能になっています。もちろんXMLスキーマを指定することも可能ですし、1つのXML列で複数のXMLスキーマを指定することも可能です。 またパフォーマンスに関しても、新たに実装したネイティブXMLストレージにより、XMLの階層型フォーマットの形式を損なうことなく格納できます。さらに、XMLエレメントやアトリビュートに対しても、それぞれにインデックスを作成できるようになっていますので、パフォーマンスに関してもRDBMSに引けをとらない実装になっています。 このようにDB2 9は、ハイブリッドデータベースであり、階層型データベース、RDBMSに次ぐ、まさに「第3世代のデータベース」なのです。 |
||||||||||
| なぜXMLデータベースか? | ||||||||||
|
これまでのRDBMSでも様々なデータを格納することが可能ですし、ちょっとした作業は必要でしたがXMLデータも扱うことができました。ではなぜXMLデータベースが必要なのでしょうか? 答えは簡単です。今まではRDBMSの選択肢しかなかったため、無理やりRDBMSを使っていたのです。例えば、商品データベースなどが良い例です。 図1のように商品データというのは多種にわたる属性を持つものが多いため、従来のリレーショナルデータモデルで表現すると(第1正規形の例)、すべての属性をカバーするためには不要な項目を持つ必要があり、無駄が多い表になってしまいました。
表1:このケースでのデメリット また、属性を列として個別に管理するため、(当然といえば当然なのですが)属性を追加したり変更したりするためには、データベースの定義(スキーマ)を変更する必要がありました。データベースの定義を変更するということは非常にインパクトが大きく、サービスイン後にこれを行おうとすると、最低限以下の4つの項目が必要になります。特にサービスを停止をする必要があるのでビジネスにもインパクトを与えてしまいました。
表2:データベースの定義を変更する場合に必要な項目 それではXMLデータベースを使った実装例について考えてみましょう。 図2をみてわかるように非常にシンプルな実装になります。 ![]() 図2:XMLデータベースによる商品データベースの実装例 XMLデータで商品の属性を表現しているため、必要な属性だけをエレメントとして定義して記述すればよく、RDBMSのように必要のない項目を持たなくてもよいのです。何よりも、新しい属性を追加する際にもデータベースの定義を変更する必要がないのでサービスを停止することなく新しい機能を追加したり、サービスの内容を変更したりできます。
表3:XMLデータベースを使うメリット |
||||||||||
|
1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||



