はい、そのやり方がちょっと面白くて、あ、RDBだと、列にNUMBER型とか、INTEGER型とか、型を付けますよね。はい、テーブルを作るときに指定します。VARCHAR(6)とか。そこに「XML」って書けるんです。その列にぽこっとXMLを放り込めます。XMLの要素がこれのものを取り出すとか。スラッシュでつなげるアレですよね。SQLの中にXPath書けるんですよ。最近のDB2ではXQuery▼も全部解釈するようになってます。なんで、XQueryかXPathを投げていただくと、ぽこっと出せます。WHEREの中にXPathを書いたりします。喜んでいただいたので、おやつをプレゼントです。DELUCAのマカロン▼です。わたしはこの茶色いのにしよっかな。(もぐもぐ...)これおいしいなあ。文書やデータを、構造付で記述するためのマークアップ言語。特徴は汎用的に利用できること。Languageの略。JavaScriptで扱いやすく、人間にも読み書きしやすい、データ交換のためのフォーマット。Notationの略。構造化データなどを文字列として扱うためのデータ形式。リストやハッシュなどを構造を手軽に表現できる。XML文書の特定部分を指し示すための構文のこと。XMLデータを問い合わせするための言語。マカロンは洋菓子の一種。メレンゲや砂糖、アーモンドパウダーを混ぜ合わせてから成形して焼き、クリームをはさむ。DELUCAは、食のセレクトショップ。クエリーを投げるほうなんですが、プログラミング言語を選ばないんですよ。SQLをDB2に投げる機能を備えているプログラミング言語からだったら、DB2のXML機能を全部呼び出せます。さっきちょっと言ったように、SQL文の代わりに「XQUERY~」と書いたり、SQLのWHERE節にXPathを書いたりして、問い合わせを実行できます。はい、普通にINSERT文で入ります。SQL文と結果セットの関係はそのまま、でもXQUERY書いたり、クエリーの結果がXMLだったりするんですね。XMLを受け取ったDB2は、XML文書をパースして、エラーチェックをしたうえで、ツリー情報を解析して、そのツリー構造の通りに、HDDに保存します。検索が高速なんですね。ああ、構文チェックしてくれるのありがたいなあ。DB2の実装としては、ストレージエンジンをそれぞれ別に用意しています。列としては一緒のところに並んでいますが、物理的には別のところに保存されます。外部記憶上の持ち方としては、ぜんぜん違う構造になっています。ときどき誤解されるのは、DB2がXMLを採用したといっても、超長いVARCHARとして入れてるんじゃないかって思われることがありますが、そうではないです。速く取り出せるってことですよね。古いデータですが、1.5GHzのCPUのサーバーで、XMLを取り出すクエリーのSELECT文で、1秒間に5000から6000くらい処理できます。XMLの要素にインデックスを張ることもできるんですよ。INDEX文が作れるんですね。すると、ここの検索がINDEX効いててビャッって取り出せるのですごく速くなる。