Viper 2で学ぶXMLデータベース最新事情(3)
“プロフ”サイトの構築だってXML DBでしょ
日本アイ・ビー・エム
中林 紀彦
2007/12/21
■プロフサービスの基本となる機能の実装
XMLデータを格納するテーブルができたので、次は実際に機能の実装について解説していきましょう。今回はXMLデータベースの話なのでXQueryを中心に解説を進めます。
1. XMLデータの登録
最初の登録はXQueryではなく、ごく普通のSQL文でXMLデータをインサートします。
INSERT INTO PROFXMLATT VALUES( |
リスト1-1 SQL文で初期データを登録 |
2. 対象データの検索
ハンドルネーム(HN)だけのレコードができたので、ここからはXQueryを使ってデータの操作を行っていきます。まず、変更対象となるデータを検索するために、HN(ここでは整数)からXQueryを使って検索します。XML列の項目名という属性を検索条件にしていますが、HNというリレーショナル列(整数列)もあるので通常のSELECT文でも検索可能です。
xquery |
リスト2-1 ハンドルネームで絞り込み検索 |
3. プロフィール項目の追加
現在のプロフィールにはHNしかないので、いろいろなプロフィールを追加していきますが、この部分が今回のポイントです。XMLデータを更新しますので、「XQuery Update Facility」というXQueryの拡張機能を使います。これに関しては後で詳しく解説します。例では項目に性別のデータを追加しています。
xquery |
リスト3-1 XQueryを使ったデータの更新 |
これがXMLデータを変更するためのTransform表現です。「Transform」キーワードはオプションなので、以降は省略します。
参考:insert時の場所の指定 項目の追加の場所は、リスト3-1のケースでは最後に挿入されますが、ほかにも下記のように挿入場所の指定が可能です。
|
さて、ここがポイントなのですが、実はリスト3-1のXQueryは取り出された結果セットのXMLデータが変更されているだけで、データベースに格納されているXMLデータは変更されません。リスト3-2のようにUPDATE文でXQueryからの結果でXMLカラムを更新する必要があります。
UPDATE PROFXMLATT SET PROFXML = |
リスト3-2 UPDATE文でXMLカラムを更新 |
データの絞り込みをXPathでリスト3-3のように表現することもできます。
UPDATE PROFXMLATT SET PROFXML = |
リスト3-3 XPathでデータを絞り込む例 |
DB2 9.5からはもっと簡略化でき、「$PROFXML(カラム名)」と書くだけです。
UPDATE PROFXMLATT SET PROFXML = |
リスト3-4 DB2 9.5で$PROFXMLを使った構文 |
UPDATE文を使ったときの注意点としては、文書ノード(ルート・ノード)を指定する必要があるのと、WHERE条件を必ず指定することです。UPDATE文でWHERE条件がないとすべての列を更新する可能性があるので要注意です。リスト3-2、リスト3-3、リスト3-4では、WHERE条件がないとすべての列が更新されてしまいます。これ以降、UPDATE文は省略してXQueryのみを記載します。
2/4 |
Index | |
連載:Viper 2で学ぶXMLデータベース最新事情(3) “プロフ”サイトの構築だってXML DBでしょ |
|
Page 1 ・どのサービスよりも高機能で柔軟な“プロフ”サイト |
|
Page 2 ・プロフサービスの基本となる機能の実装 1. XMLデータの登録 2. 対象データの検索 3. プロフィール項目の追加 |
|
Page 3 4. プロフィール項目の変更 5. プロフィール項目の削除 6. 複数のプロフィール項目を同時に変更 7. プロフィール項目の順序を変更する |
|
Page 4 ・「XQuery Update Facility」とは? ・XMLデータベースならではのひと味もふた味も違う機能 |
Viper 2で学ぶ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」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|