2011-11-09 6 views
0

私たちは、XMLファイルを持続するアプリケーションを持っています。 1つの大きなXMLファイル(他のファイルへのインデックスのように機能する)とは別に、他のすべてのファイルは別々のフォルダに保存され、非常に小さい(ほとんどの場合、ドキュメントに関するメタデータ(例:video/pdfなど)関係する観点からは、物理的にディスクに格納されている(すなわち、ディレクトリパスを介して)文書に関連付けられたメタデータとは別に、データ/オブジェクト間の関係があまりにも多すぎるというわけではありません。したがって、すべてのデータはドキュメントに関連付けられています。XMLファイルからデータベースに移動する必要がありますか?

XML索引ファイルの検索以外に、他のすべての検索は、「Windows索引検索」を使用して行われます。

システムは単一のユーザー用ですが、将来は複数のユーザーに変更されます。つまり、インデックスファイルに複数のユーザーが同時に更新することになります。

別の要件として、それぞれが独自のドキュメントリポジトリを管理する異なるマシンに複数のインデックスファイルを置くことがあります。このファイルは非常に大きくなる可能性があります(各エントリにはいくつかのメタデータとディスク上のドキュメントへの参照が含まれます)。これは、コンテンツを検索/ブラウズするために、複数のマシンで検索する必要があることを意味します。

これを念頭において、私はデータベースを持っているといくつかの問題を解決できるかもしれませんが、問題に対処しなければならない段階(ORMモデル、データベース、リポジトリ、コマンドなど)。

これらの問題のいくつかは、データベースルートを経由せずに他の方法で解決できますか?

TIA JD

+2

すべてのことは多くの方法で解決できます。しかし、私の経験では、特に非シーケンシャルなアクセスが必要な場合、XMLはデータベースにとってはまれなフォーマットです。最終的に最終的には、シリアル化形式のメモリ内のデータベースのみが使用されます。すべての機能はあなた自身で作成することができます。私はsqlite、mysql、mongodb、couchdbを使用することをお勧めします... – sehe

+0

あなたはmongodb/couchdbに言及しました。ある種のドキュメントに関連するかなりのメタデータであると思われるドメインモデルには、より適しているでしょうか? –

答えて

2

あなたのXML処理を高速化するネイティブXMLデータベースを試みることができます。私はBerkeley DB XML(埋め込みライブラリ)とeXist(ネットワーク化されたクライアントサーバー、REST)の両方を使用して成功しました。特に、前者はどこにでも散在する小さなXMLファイルを単一の索引ファイルで置き換えるという問題を解決したので、XML索引ファイルを置き換える可能性があります。後者はLuceneを介してフルテキスト検索を行います。

+0

ありがとうございました。 XMLデータベースによって並行性はどのように解決されますか? –

+0

私は.netの世界にいると言わざるを得ないので、XMLデータベースとツールの両方が機能するでしょうか? –

+0

@JD:Berkeley DB XMLはロックをサポートしていると思います。 .NETについてはわかりませんが、BDBXMLはC++で書かれています(C++/CLIとC#コードでラップするかもしれません)一方、eXistはRESTインターフェースを使って照会できます。 –

2

あなたの作業負荷が確実にデータベースを必要とする方向に動いているかのように聞こえます。データはすべてXMLであるため、ネイティブXMLデータベースに移動することは、最も混乱のないルートにする必要があります。あなたがそれを買う余裕があれば人気のある製品は最近MarkLogicになりがちな場合はeXistになる傾向があります。 (どちらにも関心はありませんが、両方の満足しているユーザーを知っています)

+0

記載されているデータのサイズについては、無料のMarkLogicの「Express」ライセンスで十分でしょう。 –

関連する問題