(lightweight) distributed storage
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
INSTALL
LICENSE
README
pom.xml

README

Распределённое хранилище данных (учебный проект в http://compscicenter.ru)

Описание
--------
Реализация хранения данных в одной ноде списана с BigTable. Есть таблица в памяти, есть таблицы на диске. Записываемые данные пишутся в CommitLog, а потом в память (поэтому хранение персистентно). Если память заполняется, то таблица списывается на диск. Если таблиц становится слишком много, они несколько из них уплотняются в одну.


Feature Request 1
-----------------
Нода поддерживает размещение больших данных. Данные, которые не помещаются в память, хранятся на диске.
Для проверки есть синтетический тест. Он заполняет базу данных случайными парами ключ-значение (500000 строк, мат. ожидание длины ~5000 => объём данных > 5Gb). Если смотреть на файлы базы данных (*.sst в директории, где запущена база), можно видеть как таблицы из памяти записываются на диск и работает компановщик.


Установка и использование
-------------------------
1. Выкачиваем репозиторий
2. Собираем jar (mvn package)
3. Копируем скрипты из src/main/resources и полученный jar-ник (lidis-1.0-SNAPSHOT.jar) в одну папку
4. Запускаем node.sh <port>, в качестве единственного параметра передаём номер порта
5. Запускаем stress_client.sh для нагрузочного теста, client.sh для работы с нодой из консоли. Скрипты принимают два параметра: имя хоста и порт. Номер порта должен совпадать с номером порта ноды. Хост должен соответствовать сетевому адресу компьютера, на котором запущена нода (при работе на одной машине можно указать localhost).
6. Консоль поддерживает команды (принимаются как заглавные, так и строчные буквы, но они должны быть в одном регистре):
     GET <Key>
     PUT <Key> <Value>
     DELETE <Key>
     STOP                  (остановка ноды)
     EXIT                  (выход из консоли)