Каковы накладные расходы Riak на каждый ключ при использовании серверной части Bitcask?

Это простой вопрос, на который, по-видимому, есть множество ответов.

Результаты варьировались от:

а. 22 байта согласно документации Basho: http://docs.basho.com/riak/latest/references/appendices/Bitcask-Capacity-Planning/

б. 450~ байт здесь: http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-August/005178.html http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-May/004292.html

в. И отдельные записи, в которых указаны служебные данные в диапазоне от 45 до 200 байт.

Почему на это нет прямого ответа? Я понимаю, что это сложная проблема - одна из записей в списке рассылки выше проясняет ее! - но так ли сложно даже придумать последовательный примерный пример? Почему в документации Басё нет ясности по этому поводу?


У меня есть еще один набор проблем, связанных с тем, как я должен структурировать свою логику на основе ключевых издержек (хранение большого количества небольших значений по сравнению с "собиранием" их в более крупные структуры), но я полагаю, это другой вопрос.


person Dev Kanchen    schedule 05.03.2013    source источник


Ответы (2)


Статические служебные данные указаны в нашем планировщике емкости как 22 байта, потому что это размер структуры C. Как указано на этой странице, планировщик емкости просто предоставляет приблизительную оценку размера.

Старый пост в списке рассылки Нико, на который вы ссылаетесь, вероятно, является лучшим полным отчетом о внутреннем устройстве биткаска, который вы найдете, и он точен. Вычисляя 8 байтов для указателя на запись и 13 байтов служебных данных erlang для пары ведро/ключ, вы получаете 43 байта в 64-битной системе.

Что касается отсутствия прямого ответа... на самом деле, если спросить нас (по электронной почте, через список рассылки, IRC, почтовый голубь и т. д.), то всегда будет получен реальный ответ.

person Brian Roach    schedule 05.03.2013
comment
Спасибо, а как насчет другого расчета, который в сумме дает около 450 байт? Или это произойдет только в определенных случаях использования. - person Dev Kanchen; 05.03.2013
comment
Я понятия не имею, что это будет. Опять же, сообщение Нико является точным отчетом. - person Brian Roach; 05.03.2013
comment
Хорошо, спасибо. Накладные расходы на 43 памяти в ОЗУ имеют смысл для модели, которую я пытаюсь реализовать. P.S. Моя тирада была результатом разочарования из-за того, что мне пришлось в основном изменить то, как я думал о модели, после прочтения, казалось бы, противоречивых сообщений, разделенных несколькими часами автономной работы и поиска в Google. Ценю данные, которые я уже видел в списке рассылки, и помощь, обычно доступную от Basho через Интернет. Спасибо еще раз. - person Dev Kanchen; 05.03.2013

Bitcask требует, чтобы все ключи хранились в памяти. Насколько я вижу, накладные расходы, указанные в пункте а), следует использовать при оценке общего объема ОЗУ, который потребуется для биткаска в кластере из-за этого требования.

При записи данных на диск Riak сохраняет фактическое значение вместе с различными метаданными, например. векторные часы. Пост, в котором упоминается 450 байт, перечисленных в b), по-видимому, является оценкой накладных расходов на хранилище на диске и, следовательно, вероятно, применим и к другим бэкендам.

Сообщение Нико, кажется, содержит хорошее и точное объяснение.

person Christian Dahlqvist    schedule 05.03.2013