MemoryMappedFile и b-tree для приложения кеша - PullRequest
1 голос
/ 27 октября 2011

Это просто идея, у меня еще нет кода, мне нужны советы по дизайну.Я хотел бы реализовать кэш (не распространяется в первую очередь) с помощью MemoryMappedFile в C #.Я думаю, что было бы хорошо иметь б-дерево как структура undelying, но это спорно, а также.Итак, вопрос таков:

  • Является ли B-tree хорошей стратегией для быстрого поиска элементов, когда поддержка задержки - это отображение файлов в памяти?
  • Какие у нас есть подсказки и приемы?с отображенными в память файлами?Какой размер представления может быть большим, каковы недостатки, когда он слишком мал или слишком велик?
  • Многопоточность: как мы работаем с отображенным в память файлом и параллелизмом?Предполагается, что клиенты сильно страдают от кеша. Какая стратегия лучше иметь что-то производительное?

В ответ на вопрос @Internal Server Error я объединяю вопрос с этим: ключ будет строкой, около 64Чарс Макс Лен.Данные будут иметь длину в байт [] около 1024 байт, но в среднем мы рассмотрим 128 байт или лучше: что я хочу кэшировать, это объекты OR / M, давайте посмотрим, как долго сериализованный объект в байтах имеет нечто вроде сериализатора BSOn.

1 Ответ

1 голос
/ 05 октября 2012
  • B-Tree - это хорошо (с отображенными в память файлами), но если файл не всегда полностью хранится в резидентной памяти, тогда B + Tree с выравниванием по страницам намного лучше. См. Также .
  • Хитрость с отображенными в память файлами заключается в использовании 64-разрядной архитектуры, позволяющей отображать весь файл в память, в противном случае вам придется отображать толькочасти и кэшированные read с могут быть быстрее, чем mmap с.
  • Попробуйте CAS (сравнить и поменять местами) в общей памяти. См. Также .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...