XML文書をDBに保存したいのですが、通常のDBでは構造を保ったままDBに入れることは無理です。例えば<xml><abc>Hello</abc></xml> という構造のHelloだけ抜き出してDBに入れることは可能ですが、Helloと<abc>タグが対になっていることは保存は無理ということです。


TaminoなどのNative DBというのがあるのは知っていますが、MySQLやPostgresでうまいことXML文書の構造を保ちながらDBにいれる良い方法はないでしょうか?

関係ないですが、MSSQL2005やOracle10gでは良い方法があるみたいですね。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/24 23:13:22
  • 終了:2006/08/30 09:33:23

ベストアンサー

id:bonlife No.3

回答回数421ベストアンサー獲得回数752006/08/28 12:03:09

ポイント53pt

XMLをDBに格納して何をしたいのでしょうか。

利用目的が分からないので、なんとも言えませんが、単純にXML文書を格納したいだけでしたら、MySQLであれば各種BLOB型、PostgreSQLであればbytea型に保存すれば良いと思います。

質問文にある「XML文書の構造を保ちながらDBにいれる」ことは可能です。

XML文書の内部を柔軟に検索したい場合、こちらで紹介されているようなネイティブXMLデータベース製品を使う必要があります。

用途によると思いますが、Xprioriという無料のXML/DBもあります。

ただし、OSはWindows系、DBサイズの上限が1GB、非商用、個人利用などの制限がありますのでご注意ください。

あるいは、Xindiceを使ってみても良いかもしれません。

参考になれば幸いです。

その他の回答(2件)

id:fonya3 No.1

fonya3回答回数238ベストアンサー獲得回数102006/08/25 00:15:37

ポイント27pt

http://www.atmarkit.co.jp/fdb/single/04_tx1/tx1_01.html

今までXMLをDBに入れようという用事が無かったので今回改めて

調べてみて思ったのですが(↑)を見るとXMLDBはRDBとは全く

異質なものですね。MySQLもPostgreSQLもRDBなのでネイティブ

でXMLデータを格納する手段はないでしょう。

やるとしたら、XMLの構造に合わせたしたテーブルを用意して入れ

るかですが、XML → 変換 → DB → 変換 → XML という感じで

全然うれしくないですよね。

それか、

親tag level tag value

のようなテーブルを用意してXML構造ごとDBに保管するかという

感じでしょうか。

と思って再度人力検索をかけたら

http://www.ipa.go.jp/about/news/event/pdf/29A4_yui.pdf#searc...

こんな試みを発見!

現状、試行錯誤中という感じでしょうか。

MySQLでも

http://dev.mysql.com/doc/refman/4.1/ja/compatibility.html

「データベースサーバでの XML サポートの提供を考えています。」

との説明もありました。

もうしばらくことの進展を待たないといけないみたいですね。

id:moonhappy

実は紹介して頂いたサイトは既に見ています。1年くらい前に見ましたが未だに進展無しとなれば当分時間がかかりそうですね。やはり目的の事を達するにはネイティブXML DBを使うしかなさそうですね。

2006/08/25 00:21:11
id:s0u No.2

s0u回答回数3ベストアンサー獲得回数02006/08/25 00:58:45

IBM DB2 の新しいバージョン(v9)で扱えるという事ですがどんなもんかは良くわからないですね。

IBM DB2 9 - Japan

id:bonlife No.3

回答回数421ベストアンサー獲得回数752006/08/28 12:03:09ここでベストアンサー

ポイント53pt

XMLをDBに格納して何をしたいのでしょうか。

利用目的が分からないので、なんとも言えませんが、単純にXML文書を格納したいだけでしたら、MySQLであれば各種BLOB型、PostgreSQLであればbytea型に保存すれば良いと思います。

質問文にある「XML文書の構造を保ちながらDBにいれる」ことは可能です。

XML文書の内部を柔軟に検索したい場合、こちらで紹介されているようなネイティブXMLデータベース製品を使う必要があります。

用途によると思いますが、Xprioriという無料のXML/DBもあります。

ただし、OSはWindows系、DBサイズの上限が1GB、非商用、個人利用などの制限がありますのでご注意ください。

あるいは、Xindiceを使ってみても良いかもしれません。

参考になれば幸いです。

  • id:nobe_nobe
    良い方法ということでは、当たらないかもしれませんが、XML構造に合わせたDBをつくれば、出来ます。千頁程度の冊子(カタログ的な内容)をDBで登録し、XML出力して、PDFで製本するプログラムを何本か作成したことがあります。DB-XMLの変換、XMLの解析は、phpでもさくっとできます。
    DBの更新、検索のSQL文が長く(数百文字)なりますが、力ずくで何とかなります。どうしてもチューニングが必要になります。階層が深くなると、再帰ループで削除を行うと、相当時間がかかります。7階層100万件で1日以上かかりました。SQL文実行と生成(階層解析+対象の検索)を分けて、半分ぐらいになりました。
    参考になれば....

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません