пятница, 5 октября 2012 г.

AeroSpike (Citrusleaf)

AeroSpike, он же Citrusleaf http://www.aerospike.com/
Распределенное хранилище данных, в виде ключ - значение.
Основной фичей является крайне быстрый поиск и передача записей.

Термины AeroSpike
Node - хост, на котором функционирует AeroSpike
Cluster - объединение нод в одном информационном пространстве
Name space - База данных (Data base) - в терминах SQL
Record - запись (row)
Bin - колонка

Есть бесплатная Community Edition версия, с ограничением размера кластера, не больше 2-х нод. Но и этого вполне хватает.

К AeroSpike прилагается умный клиент. Его легко встроить в своё приложение. Реализации SDK есть на Java, C#, Python, PHP.
Он отслеживает динамическое изменения кластера, управляет балансировкой нагрузки. Т.е делает всё сам.

Работать с данным SDK очень просто

//Создаем подключение
CitrusleafClient cc = new CitrusleafClient();
cc.addHost("10.1.1.60",3000);

//Добавляем запись
String namespace = "test";
ClResultCode rc = cc.set(namespace, "myset", "mykey",
                       "mybin", "myvalue", null, null);

//Считываем запись
ClResult cr = cc.get(namespace, "myset", "mykey", "name", null);
if (cr.result != null) {
    System.out.println("got name:" + cr.result);
}

Схема name space может динамически меняться. Для каждой записи, можно добавлять или удалять бины (колонки). Т.е по сути, никакой схемы нет...

Ноды сами занимаются репликацией данных, информация полностью дублируется на каждой ноде. Ноды могут динамически удаляться и добавляться в кластер. Потери данных происходить не должно.

Проблемы:
Пока не удалось запустить кластер из 2-х нод, на двух локальных виртуальных машинах (похоже проблемы с сетевыми мостами). Зато получилось это сделать в связке 1 нода - на виртуальной машине, 2-я на хосте. Всё работает. Кластер самоидентифицируется.

Производительность:
База, 100 000 записей, один запрос на чтение приходит за 0.6 ms
Шустро.

Комментариев нет:

Отправить комментарий