2

多数 (数十から数十万) のオブジェクトを格納するためのシステムを開発する必要があります。各オブジェクトは電子メールのようなものです。メインのテキスト本文と、サイズが制限されたいくつかの補助テキスト フィールドがあります。ボディのサイズは数バイトから数 KB です。

各アイテムには、それを識別する単一の一意の ID (おそらく GUID) があります。

ストアは、オブジェクトが追加されたときにのみ書き込まれます。よく読まれます。削除はまれです。データはほとんどすべて人間が読めるテキストであるため、簡単に圧縮できます。

I/O を発行し、メモリとキャッシュを管理できるシステムが理想的です。

インデックスをメモリに保持し、それを使用してインデックスをオブジェクトの単一 (および主) キーにマップします。キーを取得したら、ディスクまたはキャッシュからロードします。

データ管理システムはアプリケーションの一部である必要があります。OS サービスに依存したくありません。または個別にインストールされたパッケージ。ネイティブ (C++) が最適ですが、マネージ (C#) も問題ありません。

データベースは当然の選択だと思いますが、これはオブジェクトの検索とメモリへのロードを超高速にする必要があります。私はデータベース技術の経験がなく、一般的なリレーショナル システムではこの可変サイズのデータ​​をすべて効率的に処理できないのではないかと心配しています。

(注、これは私の仕事とは何の関係もありません - これは個人的なプロジェクトです。)

あなたの経験では、従来のリレーショナル DB に代わる実行可能な代替手段は何ですか? または、DBはこれに適していますか?

4

7 に答える 7

2

SQLiteを見てください。これには、利用可能な多くのプログラミング言語と環境のバインディングがあり、Berkeley DBのように、データベース エンジンのインストールを必要としないディスク上のデータベースです。

適切なインデックスを追加するだけで、検索は非常に高速になり、基本的にセットベースのデータベースであるため、一括クエリなどを実行できます.

于 2008-11-04T08:14:45.450 に答える
2

PFS を試してみます: http://blog.sensenet.hu/post/2008/05/Portal-File-System-(PFS)-an-open-source-content-repository-for-Net.aspx

Jackrabbit は完璧な選択だったので、c/.Net を使用しているのは残念です。

于 2008-11-04T07:54:40.653 に答える
1

このデータをどのように検索するかを実際には示していません。メインデータがMySQLに保存されているいくつかのテキストマイニングアプリケーションで同様の作業を行いましたが、キーワード検索に基づいてメッセージテーブルで適切な行を見つけるために、Ferret(プロジェクトはRubyにあります)でテキスト検索インデックスを維持しています。このハイブリッドなアプローチは、あなたにも役立つと思います。C# 環境では、SQLServer と Lucene.Net が適切に機能する場合があります。周りを見渡せば、C++ 空間でも同様のソリューションを見つけることができると確信しています。

SQLServer の全文検索を使用することはお勧めしません。Lucene とその派生は、はるかに優れた選択肢のようです。

ファイルベースのソリューションよりも、ほぼすべての DB ソリューションの方がうまくいくと思います。最新のデータベースは、少なくともスペースに関しては、データ要件を処理できるはずです。大きなフィールドにインデックスを構築することは別の問題です。そのため、検索する必要がある場合は、テキスト マイニング アプローチをお勧めします。

于 2008-11-04T04:55:01.330 に答える
0

まさに Berkeley DB が設計された目的のように思えます。しかし、私はそれを使用していません。

于 2008-11-04T05:05:22.073 に答える
0

Apache+mod-dav のような WebDav-Server について考えてみてください。これにより、コンテンツとメタデータがディスクに保存されます。検索のために、Lucene などの既存の検索エンジンをこの WebDav サーバーの上に置くことができます。

このようにして、独自の開発を最小限に抑え、強力な機能群から始めます。

于 2008-11-04T05:15:52.830 に答える
0

db4oまたはKarvoniteを見たことがありますか?

于 2009-08-11T13:28:20.713 に答える
-1

Glimpseをご覧ください。

于 2008-11-04T08:00:30.707 に答える