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