キャッシュ適用のためのMemoryMappedFileおよびb-tree

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

  • 遅延のないサポートがメモリマップファイルの場合、B-treeはアイテムを高速に検索するのに良い戦略ですか?
  • メモリマップされたファイルのヒントとヒントどのくらいの大きさのビューができますか、大きすぎるか大きすぎる場合の欠点は何ですか?
  • マルチスレッドの考慮事項:メモリマップファイルと並行処理の仕組みキャッシュはクライアントにヒットするはずですが、何かを実行する方が良いでしょうか?

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

1
キーは文字列になりますが、約64文字と考えてください。データはバイトの配列です:シリアル化されたエンティティ、おそらく4〜1kバイトのものです。
追加された 著者 Felice Pollano,
@あなたは正しいです、私はmongodbを知っていますが、私は私のプロジェクトに埋め込み可能なものが欲しいです
追加された 著者 Felice Pollano,
なぜ自分のロール? couchdb、memcached、mongodb;明らかにmongodbは高速です
追加された 著者 sehe,
キャッシングするデータの種類は何ですか?キーはどんなタイプですか?どれくらいのデータについて話していますか?
追加された 著者 500 - Internal Server Error,

1 答え

  • Bツリーは(メモリマップされたファイルの場合)良好ですが、ファイルが常に常駐メモリに保持されているとは限らない場合は、ページアライメントされたB +ツリーがはるかに優れています。 も参照してください
  • メモリマップファイルのトリックは、ファイル全体をメモリにマップできるように64ビットアーキテクチャを使用することです。そうしないと、パーツとキャッシュされた read mmap よりも速いかもしれません。
  • 共有メモリ上でCAS(比較とスワップ)を試してください。 こちらもご覧ください
1
追加された
ありがとう、良いリファレンスもあります。
追加された 著者 Felice Pollano,
たぶん、 nosql-database.org にあなたのために何かC#-pishがあります。または、一部のCプロジェクトが参考になるかもしれません。
追加された 著者 ArtemGr,