RavenDb против CouchDb в подходах к управлению памятью

RavenDB (база данных хранилища .Net JSON с запросами) обеспечивает агрессивное управление кэшированием/памятью под своим собственным контролем (через собственный механизм хранения Munin) с параметрами конфигурации для настройки различных размеров кэша и т. д. Группы Google предполагают, что до (может не в случае с последними выпусками) случайные исключения нехватки памяти в результате ненастроенных параметров (с достаточным размером db/index).

CouchDB, похоже, использует другой подход и оставляет кэширование операционной системе. Это означает, что когда я ПОЛУЧАЮ /db1/doc-id-1, это важно с точки зрения программирования операции чтения файла в файловой системе, которую ОС может оптимизировать из-за своих собственных кешей. Точно так же я считаю, что это то же самое для представлений и результатов уменьшения (несколько частей дерева b требуют загрузки/вычисления с диска в зависимости от диапазона).

Последнее кажется мне лучше, ОС прошла годы эволюции в области кэширования / подкачки и т. Д., И давление со стороны других служб может сбалансировать память.

Во-первых. Я прав в своем понимании? Является ли подход CouchDB уникальным для операционных систем на базе Unix (хотя я вижу, что у них есть порт для Windows)? Есть ли причина, по которой .Net DB не может полагаться на ОС для оптимизации чтения файлов и т. д.? Каковы недостатки и преимущества каждого подхода, которые могут повлиять на выбор при создании хранилища данных?

Боковое примечание: я считаю, что Redis такой же, просто хранит индекс в памяти, каждый GET KEY - это попадание на диск (которое либо попадает в головки диска, либо не зависит от кэширования файлов ОС)


person jia93    schedule 01.08.2011    source источник


Ответы (1)


Jia93, Одна из причин того, что мы работаем именно так, это то, что у нас более сильное разделение между слоями. В CouchDB почти такие же оптимизации, как и у нас (сохранение информации в памяти), но она делает это поверх структуры BTree, которая напрямую доступна приложению.

Еще одна причина кэширования результатов — избежать затрат на анализ json при каждом отдельном запросе.

person Ayende Rahien    schedule 01.08.2011
comment
CouchDB интенсивно использует кэш файловой системы ОС для повышения производительности, в то время как RavenDB явно кэширует данные в своем собственном пространстве процессов. Поэтому, когда на систему оказывается давление (со стороны других процессов, mysql, apache, IIS и т. д.), кэш файловой системы ОС уменьшается, но использование памяти для CouchDB остается постоянным. - person jia93; 01.08.2011
comment
Я вижу выгоду от того, чтобы избежать синтаксического анализа json с помощью метода RavenDB. - person jia93; 01.08.2011
comment
Предоставляет ли .Net/RavenDB перехватчики для определения нехватки ресурсов для уменьшения кешей или использует систему мягких/слабых ссылок? - person jia93; 01.08.2011