RavenDB (база данных хранения данных .Net JSON с запросами) обеспечивает агрессивное управление кэшированием / памятью под своим собственным контролем (через собственный механизм хранения Munin) с параметрами конфигурации для настройки различных размеров кэша и т. Д. Группы Google предполагают, что до (может не быть в случае с последними выпусками) случайные исключения нехватки памяти как результат не настроенных параметров (с достаточным размером дБ / индекс).
CouchDB, похоже, использует другой подход и оставляет кеширование операционной системе. То есть, когда я получаю GET / db1 / doc-id-1, важно с точки зрения программирования операции чтения файлов против файловой системы, которую ОС может оптимизировать из-за своих собственных кешей. Точно так же я полагаю, что это то же самое для представлений и результатов сокращения (несколько частей дерева b требуют загрузки / вычисления с диска в зависимости от диапазона).
Последнее мне кажется лучше, ОС пережила годы эволюции в области кэширования / подкачки страниц и т. Д., А давление со стороны других служб может уравновесить память.
Во-первых.
Правильно ли я понимаю?
Является ли подход CouchDB уникальным для ОС на базе Unix (хотя я вижу, что у них есть порт Windows)?
Существует ли причина, по которой БД .Net не может полагаться на ОС для оптимизации чтения файлов и т. Д.?
Каковы недостатки и преимущества каждого подхода, которые могут повлиять на выбор при создании хранилища данных?
Примечание: я полагаю, что Redis - это то же самое, просто сохраняя индекс в памяти, каждый GET KEY - это удар по диску (который либо поражает головки диска, либо не зависит от кэширования файла ОС)