質問

XML ドキュメントを保存し、それに対してさらにクエリを効果的に実行するための最適なオープンソース ソリューションを検討しています。データ量は少なくなります。私が理解している限り、ネイティブ XML データベースが私の場合に適切な解決策を形成する可能性があります。明らかに、XML ドキュメントは非常に効率的な方法で保存されます。あなたの経験を学ぶことは素晴らしいことです。適切な解決策について何か提案はありますか?アプリで XML ストレージ エンジンを採用した経験はありますか?

役に立ちましたか?

解決

私たちは職場でネイティブ XML サーバーを使用してきました。データが 100 ~ 200MB 程度以下の場合は問題ありませんが、その後はデータを処理できる適切なサーバーが見つかりませんでした。私は次のことを試しました:

  • 存在する:Java ベースのネイティブ XML サーバー (オープンソース):大きなファイルの場合、通常は JVM のメモリを消費し、メモリ不足例外がスローされます。
  • セドナ:C ベースのネイティブ XML サーバー (オープンソース):実際に大規模なデータベースを処理できますが、データベースからインデックスのないデータをクエリしようとするとセグメンテーション違反が発生します。
  • Tamino XML データベース (独自仕様):最初の XML データベースの 1 つで、成熟していますが、XQuery のサポートが貧弱で (少なくとも、私たちが使用しているほぼ最新のバージョンでは、XQuery のサポートが非常に不十分です)、これまで見てきたように、訓練を受けた専門家でも適切にセットアップできませんでした。十分に速くしてください。

私の提案は次のとおりです。

  • 小規模なデータや Java ベースのシステムの場合は、eXist を試してください。SQlite のようなファイルベースのデータベースサポートもあり、便利かもしれません。
  • パフォーマンスが重要な小規模から中規模のデータの場合は、sedna を使用します。私のテストによると、3 つの中で最も速いです。
  • サポートが必要な場合は、Taminoを使用してください。少なくともサポートはあります。

大規模なデータベース (1 GB 以上) の場合は、(まだ) どれもお勧めしません。eXist は通常、200MB サイズのデータ​​ベースでクラッシュしました。sedna はインデックスが作成されていないものにクエリを実行すると 1GB サイズのデータ​​ベースでクラッシュし、tamino は 1 回の実行で 500MB のデータをロードすることさえできず、システム全体がクラッシュしました。もちろん、これらのシステムはすべて進化しているため、もう少し後には安全に使用できるようになるかもしれませんが、ネイティブ XML データベースは残念ながらまだ未熟です。

他のヒント

Oracle XML DBなどの主要なベンダー提供のソリューションを調べましたか。試したことはありませんが、そのようなものに予算があるなら、評価する価値があります!

また、Wikipediaには XML Dbsの素晴らしいリストがあり、評価することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top