2010-12-13 13 views
1

私は、数ギガバイトのサイズの値を扱うことができるキー値ストアを探しています。私はRiakRedisCouchDbMongoDBを見ました。大きな値のSQLデータベースなし

このDBには、ユーザーの作業領域(ファイルシステムのディレクトリと同じ、サブディレクトリとファイルを再帰的に含む)を保存します。もちろん、私はファイルシステムを使うことができましたが、例えば、RedisでサポートされているRAM、フェールオーバーソリューション、バックアップ、レプリケーション/クラスタリングなどのキャッシュ機能は持っていません。

これは、作業領域内の1つのファイルが1つのキーと値のタプルにマップされるため、保存される値の大半がバイナリデータであり、最終的には数ギガバイトになることを意味します。

誰にもこれらの製品についての経験はありますか?

+0

マルチギガバイトの値は何ですか?バイナリデータ?テキストの大量の文字列? – ceejayoz

+0

あなたの投稿に[署名またはタグラインを使用しないでください](http://stackoverflow.com/faq#signatures)。 – meagar

+0

値はバイナリデータです。 – Erik

答えて

1

MongoDBは大きなバイナリ値をサポートしているので、現在はMongoDBを使用していますが、非常に普及しており、ユーザーベースも大きくなっています。多分、私たちは別の店に切り替えるつもりですが、現在はとても良く見えます!

2

まず、GBのデータサイズからMD5またはCRC32を取得することは、計算上非常に高価になります。おそらくそれを避ける方が良いでしょう。データをファイルに格納し、ファイル名をインデックスに登録する方法はありますか?

あなたが主張しているのであれば、データ値全体ではなく、最終的なデータ位置への参照配列/テーブルとともにハッシュを保存するだけです。このアプローチの安全性(固有でない可能性)は、大きなサンプル数によって直接変化します。あなたが作成するハッシュが長ければ長いほど、32ビットと64ビットとの比は1024ビットです。より安全です。プログラミング言語のほとんどの辞書システムまたはデータベースエンジンは、バイナリデータ記憶メカニズムを備えています。それに失敗すると、ハッシュされた数値に対応する16進数値の文字列をcharカラムに格納することができます。

+0

なぜギガバイトのハッシュを計算する必要がありますか?私のキーは非常に短い文字列です。 – Erik

+0

OP: "いくつかのギガバイトの大きさの値" - しかし、このコメントでは、合計RAMで大量に使用される一連の値を意味することがあります。そして、それは意味があります。 – zanlok

+0

[SQL-Lite](http://www.sqlite.org/)を使用してみませんか?それはメリットが多いです。 – zanlok