web-dev-qa-db-ja.com

シンプルでフラットなXMLベースのクエリ可能なデータストレージソリューションはありますか?

私は長い間、XMLベースのクエリ可能なデータストアを追求してきました。継続的な検索と評価にもかかわらず、次のような私のニーズを満たすソリューションをまだ見つけていません。

  1. データは完全にフラットテキストファイルのXMLノードに含まれています。
  2. 「スキーマ」に対して作成/読み取り/更新/削除(CRUD)操作を実行するための「ネイティブ」メソッド、または少なくとも控えめな方法があります。依存関係のセットの複雑さに応じて、http、XHR、javascript、PHP、BASH、またはPerlを介したアクセスは邪魔にならないと考えます。
  3. サーバー側のファイルシステムの読み取りと書き込み。
  4. プラグインなしでブラウザからアクセスできるクライアント側のインターフェース要素。

いくつかの追加の優先(ただしオプション)要件は次のとおりです。

  1. 単純なSQL、または同様の構文クエリに応答します。
  2. XMLHTTPRequest、HTTPプロパー、またはJSONのいずれかを介して、「余分なもの」なしで、必要最小限のhttpsサーバーでデータを提供します。

いくつかの考え:

私が探しているものは、いくつかのJavaサーバー実装によって可能になるかもしれませんが、この質問のために、それがすべての要件を満たしている場合を除いて、それを提案しないでください。Javaは、特にクライアント側は実際にはオプションではなく、開発の観点からも魅力的ではありません。*

ファイルシステムを歩くのは一続きであり、XPATHまたはXSLTでそれが可能だと聞いたことがありますが、私の知る限り、それはゴールデンタイムの準備ができておらず、まだ推奨されていません。ただし、ファイルシステムを再帰的にトラバースする機能は、そのようなシステムが便利な機能であるために必要です。

この時点で、私は基本的に、CGIとBashを介して説明したことを実装しましたが、もっと簡単な方法が必要です。考え?

7
alex gray

そこにはネイティブのXMLデータベースがあり、その中で最も有名なのは eXist でしょう。

これらは、標準化された xQuery 言語を使用して簡単にクエリおよび変更できます。 xPathやxsltのような他のすべてのXML機能を使用することもできます。全文検索は、Apache Luceneを介して簡単に統合できます。

要件の欠点は、Javaベースであることです。ただし、データを取得するための標準的な方法は基本的にREST-Serviceであるため、サーバー側で使用して好きな言語でアクセスできます。 PHPおよびPerl のような一部の言語には、eXist-Datastoreにアクセスするためのライブラリーがすでにあります。

よろしければ、 eXist機能シート をご覧ください。私はそれがあなたの要件を証明していると確信しています。

3
Falcon

データをxmlファイルに保存することは、エンジニアリングの観点からは非常に恐ろしいストレージメカニズムのように思われ、それがおそらく、求めているものに対する標準的なソリューションがない主な理由です。ほとんどの人は、ある種のリレーショナルまたは非リレーショナルデータストアにデータを格納し、必要に応じてデータからXMLへの変換をその場で実行します。データベースは高速CRUD操作用に設計されており、多くの研究がそのようにしています。これらすべてを再発明してファイルシステムにボルトで固定するのは、少しばかげています。

2
davidk01

これらを見て、評価したことがあります XMLデータベース

データをXML形式で保存できるデータ永続化ソフトウェアシステム。次に、これらのデータをクエリし、エクスポートして、目的の形式にシリアル化できます。 XMLデータベースは通常、ドキュメント指向のデータベースに関連付けられています...

データベースでXMLを使用する理由の1つは、データ転送にXMLがますます一般的に使用されるようになったことです。これは、「データベースからデータが抽出され、XMLドキュメントに入れられる」ことを意味します。 (変換コストの点で)より効率的であり、XML形式でデータを格納する方が簡単であることが判明する可能性があります...

2
Qwerky