2026-02-27 22:04:04 +03:00
2026-02-27 22:04:04 +03:00
2026-02-27 22:04:04 +03:00
2026-02-27 22:04:04 +03:00
2026-02-27 19:05:48 +00:00
2026-02-27 19:05:48 +00:00
2026-02-27 22:04:04 +03:00
2026-02-27 22:04:04 +03:00


Logo.png

Futriis-это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД, реализованная на Go с поддержкой плагинов на языке lua для операционных систем на базе Solaris (ядра Illumos)



Краткая документация проекта FutriiS


Содержание
  1. О проекте
  2. Лицензия
  3. Глоссарий
  4. Системные требования
  5. Подготовка
  6. Компиляция
  7. Тестирование
  8. Примеры команд субд
  9. Репликация
  10. Резервное копирование
  11. Индексы
  12. Транзакции
  13. Шардинг
  14. Кластеризация
  15. Lua-скрипты
  16. Сферы применения
  17. Дорожная карта
  18. Контакты

futriis - Распределённая in-memory СУБД

futriis - это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД, реализованная на Go с поддержкой плагинов на языке lua.

Архитектура

СУБД реализует три основных типа данных:

  • Таппл (Tapple) - аналог базы данных в РСУБД
  • Слайс (Slice) - аналог таблицы
  • Кортеж (Tuple) - аналог записи в таблице

Системные требования

Warning

  • Процессор: Intel или AMD
  • Оперативная память: 4ГБ (Для Linux) 8ГБ (Для Illumos sytems)
  • Только Unix-подобная ОС (Solaris, OpenIndiana, Linux)
  • Go 1.25.6 или выше

Caution

Важно: Windows и MacOS X не поддерживаются!

Установка и сборка

  1. Клонируйте репозиторий:
git clone https://github.com/futriis/db.git
cd futriis
  1. Скомпилируйте и запустите:
./build.sh
./futriis

Файл futriisd

futriisd - это демон (сервис) СУБД Futriis, расположенный в /futriis/build/futriisd. Этот файл является:

- Основным исполняемым файлом сервера - запускает ядро СУБД в фоновом режиме как демон (daemon)
- Точкой входа для кластерного узла - каждый узел кластера запускается через этот бинарный файл
- Фоновым процессом - работает независимо от терминала, обрабатывая сетевые запросы
- Управляющим процессом - отвечает за инициализацию всех компонентов: хранилища, кластера, репликации, AOF
- Сетевым сервером - слушает порты для координации кластера и обработки клиентских подключений

Пример использования демона "futriisd"

```bash
# Запуск узла кластера

./futriisd --config /path/to/config.toml --node-id node-1

Запуск координатора

./futriisd --config /path/to/config.toml --coordinator

Запуск в фоновом режиме

./futriisd --daemon


## Базовые команды (Tapple/Slice/Tuple)

### Создание объектов

```bash
# Создать таппл (базу данных)
create tapple users

# Создать слайс (таблицу) в таппле
create slice users user_profiles

# Создать кортеж (запись) с полями
create tuple users user_profiles user1 name=John age=30 email=john@example.com
create tuple users user_profiles user2 name=Jane age=25 city=NYC

Просмотр списков

# Показать все тапплы
list tapples

# Показать все слайсы в таппле
list slices users

# Показать все кортежи в слайсе
show tuples users user_profiles

Индексы

# Создать первичный индекс для таппла
add.prime.index users

# Удалить первичный индекс
delete.prime.index users

# Создать вторичный индекс по полю
add.secondary.index users email
add.secondary.index users age

# Удалить вторичный индекс
delete.secondary.index users email

Обновление и удаление

# Обновить поля кортежа
update tuple users user_profiles user1 age=31 city=Boston

# Удалить кортеж
delete tuple users user_profiles user2

# Удалить слайс
delete slice users user_profiles

# Удалить таппл
delete tapple users

Транзакции

# Начать транзакцию
begin

# Выполнить операции внутри транзакции
create tuple users user_profiles user3 name=Bob age=28
update tuple users user_profiles user1 city=Chicago

# Зафиксировать транзакцию
commit

# Или откатить транзакцию
rollback

Кластеринг и шардинг

# Показать статус кластера
cluster.status

# Добавить узел в кластер
add.node 192.168.1.101:8080
add.node 192.168.1.102:8080

# Удалить узел из кластера
evict.node node-123

# Ребалансировка кластера
cluster.rebalance

# Показать статус шардинга
sharding.status

Сжатие данных

# Показать статистику сжатия по колонкам
compression.stats

AOF (Append-Only File)

# Показать информацию о AOF файле
aof.info

# Восстановить данные из AOF файла
aof.recover
aof.recover /path/to/custom/file.aof

Lua-плагины

# Выполнить Lua плагин
lua my_plugin
lua analytics_script

Служебные команды

# Показать справку
help

# Выйти из СУБД
exit
# или
quit

Комплексный пример рабочей сессии

# Создаём структуру данных
create tapple ecommerce
create slice ecommerce products
create slice ecommerce customers
create slice ecommerce orders

# Создаём индексы
add.secondary.index ecommerce price
add.secondary.index ecommerce email

# Добавляем данные (в транзакции)
begin
create tuple ecommerce products prod1 name=Laptop price=999.99 stock=10
create tuple ecommerce products prod2 name=Mouse price=29.99 stock=50
create tuple ecommerce customers cust1 name=Alice email=alice@mail.com
create tuple ecommerce orders order1 customer=cust1 product=prod1 quantity=1
commit

# Просматриваем данные
show tuples ecommerce products
show tuples ecommerce customers

# Обновляем данные
update tuple ecommerce products prod1 stock=9

# Проверяем статус кластера
cluster.status

# Смотрим статистику сжатия
compression.stats

# Выходим
exit
Description
Futriix release for Solaris based operating systems
Readme 265 KiB
Languages
Go 96.3%
Shell 3.7%