В последние дни немного поигрался с риаком. Первоначальная настройка была проще, чем я думал. Теперь у меня есть кластер с 3 узлами, все узлы работают на одной виртуальной машине для тестирования.
Я признаю, что аппаратные настройки моей виртуальной машины сильно занижены (1 ЦП, 512 МБ ОЗУ), но все же я весьма удивлен низкой производительностью riak.
Уменьшение карты
Немного поиграв с уменьшением карты У меня было около 2000 объектов в одной корзине, каждый размером около 1–2 КБ в формате json. Я использовал эту функцию карты:
function(value, keyData, arg) {
var data = Riak.mapValuesJson(value)[0];
if (data.displayname.indexOf("max") !== -1) return [data];
return [];
}
И потребовалось более 2 секунд только для выполнения HTTP-запроса, возвращающего его результат, не считая времени, которое потребовалось в моем клиентском коде для десериализации результатов из json. Удаление 2 из 3 узлов, казалось, немного улучшило производительность до чуть менее 2 секунд, но это все еще кажется мне очень медленным.
Можно ли этого ожидать? Объекты не были такими большими по размеру в байтах, и 2000 объектов в одном ведре тоже не так много.
Insert
Пакетная вставка около 60 000 объектов того же размера, что и выше, заняла довольно много времени и фактически не работала.
Мой скрипт, который вставлял объекты в riak, умер около 40 000 или около того и сказал, что он больше не может подключиться к узлу riak. В журналах riak я обнаружил сообщение об ошибке, которое указывало на то, что узлу не хватило памяти и он умер.
Вопрос
Это действительно мой первый выстрел в риак, так что определенно есть шанс, что я что-то напортачил.
Это действительно очень помогло бы мне, если бы кто-нибудь с большим опытом в риаке мог помочь мне с некоторыми из этих вопросов.