2011-10-27 14 views
1

これは単なるアイデアです。私はまだコードがありません。いくつかの設計アドバイスが必要です。私はC#でMemoryMappedFileを使ってキャッシュを実装します(最初のインスタンスでは分散しません)。私は、Bツリーを頼りにならない構造として持つことが良いと思うが、これも議論の余地がある。 そこで問題は、次のとおりです。MemoryMappedキャッシュアプ​​リケーションのファイルとBツリー

  • undelayingのサポートファイルをメモリマッピングされている時に高速検索項目に使用するのは良い戦略Bツリーですか?
  • メモリマップファイルでのヒントとヒントは何ですか?どのくらいの大きさのビューができますか、それが小さすぎるか大きすぎる場合の欠点は何ですか?
  • マルチスレッドの考慮事項:メモリマップされたファイルと並行処理の方法は?キャッシュはクライアントにヒットするはずですが、パフォーマンス面では何が良いでしょうか?

@内部サーバーエラーとして、私はこの質問を次のように統合します。 キーは最大64文字の文字列です。データは約1024バイトの長さですが、128バイト以上の平均を考えてみましょう:キャッシュしたいものはOR/Mエンティティです。シリアル化されたエンティティのバイト数は、BSOnシリアライザ。

+0

キャッシングするデータタイプは何ですか?キーはどんなタイプですか?どれくらいのデータについて話していますか? –

+0

キーは文字列になります。約64文字と考えてください。データはバイトの配列です:シリアル化されたエンティティ、おそらく4〜1kバイトのものです。 –

+0

なぜあなた自身のロール? couchdb、memcached、mongodb;明らかにmongodbは_fast_ – sehe

答えて

1
  • Bツリーは(メモリマップされたファイルで)良好ですが、ファイルが常に常駐メモリに保持されているとは限りません。ページ整列B +ツリーがはるかに優れています。 See also
  • メモリマップされたファイルのトリックは、ファイル全体をメモリにマップできるように64ビットアーキテクチャを使用することです。そうしないと、パーツだけをマップする必要があります。 。
  • 共有メモリでCAS(比較とスワップ)を試してください。 See also
+0

ありがとう、良い参考にも。 –

+0

おそらく、[nosql-database.org](http://nosql-database.org/)にあなたのためにC#-pishがあります。または[Cプロジェクト](http://highlandsun.com/hyc/mdb/)が参考になるかもしれません。 – ArtemGr

関連する問題