.NET用の永続的なKey-Valueストレージを探しています。.NET - 高速で軽量な永続的なキー値ストレージ
- 文字列で識別され、いくつかのオプションの(名前付き)プロパティと、単なるバイト配列の値を持つオブジェクトには、ストレージが使用されます。 SQLソリューションの場合、私はそれを1つのstring - > idテーブルといくつかのid - > blobテーブルとしてモデル化します。
- データの予想量は、数メガバイト(以上10 Mbが、現在はほとんどありませんが、100メガビットにスケールアップする素敵なボーナスだろう)
- 軽量である - 好ましくは、単一のアセンブリ、間違いなく外部アプリケーションなし
- 読み込み書き込みよりも頻繁に100倍になります。
- 高速な読み取り/書き込みアクセス - データの更新に関するメモリ内の記憶域と遅延書き込みが予想されます。私は定期的に非同期書き込みを自分自身、ストレージがそれを行う場合ボーナスポイントをスポーンすることができます。
- アトミックI/O - 書き込みの途中でプロセスが終了した場合、データベースは中断しません。そうでなければ、データはクリティカルではない、すなわち追加の冗長性は必要ない。
現在、私はここでSQLiteが動作すると思います。しかし、それはわずかな過度のようです - 私はキーの値のストレージ、完全なSQLのサポートが必要です。私はbdbとlibdb-dotnetのバインディングも聞いたことがあります。これはもっと軽量だと思われますが、パフォーマンス/一貫性の特性はわかりません。
誰でもここで何かお勧めできますか? SQLiteやlibdb-dotnet(または一般的にはbdb)や自宅で解決されたソリューションの経験があれば、痛みのない方は歓迎します。(つまり、.NET Frameworkで作業できるものがあれば素晴らしいでしょう) 。
データベースの種類を問わず私に聞こえるのは、このために残念なことですが、10MBの容量でディスク全体に一度にすべてを読み書きするのはなぜですか? (それはそれほど多くの記憶を取っているようではない) – Doggett
@Doggett、提案されたアプリケーションが自明でない場合、データベースを再発明するように聞こえる。 – driis
@Doggett、問題は、すべての更新プログラムにDB全体を書き込むのが遅くなり、単一のフラッシュポイントがないことです(つまり、アプリが途中で終了する可能性があるため、完全なDBを書き出すことができません)。私は部分的なフラッシュをサポートし、それらを原子化しなければならないでしょう - これはこれについての些細なことではありません。 – zeuxcg