2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +03:00
2026-04-08 21:43:35 +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. Import-Export
  14. Lua-плагины
  15. ACL
  16. HTTP API
  17. Сферы применения
  18. Дорожная карта
  19. Контакты

О проекте

futriis - это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД, реализованная на Go с поддержкой плагинов на языке lua использующая алгоритм консенсуса Raft. Данная субд была разработана, в первую очередь для эксплуатации на операционных системах на базе Solaris: OpenIndiana, Oracle Solaris.

(К началу)

Лицензия

Проект распространяется под лицензией CDDL 1.0. Подробнсти в файлах LICENSE и NOTICE. Эта лицензия позволяет вам производить копирование, модификацию, распространение, включение в другие проекты, получение патентных прав, распространение бинарных файлов с доступом к их исходному коду. Она запрещает вам добавление новых ограничений, скрытие изменений, удаление оригинальных уведомлений, несоблюдение условий CDDL 1.0 при перераспределении, неправильное связывание с другими лицензиями.

Все дополнительное программное обеспечение (включая скрипт компиляции проекта build.sh) предоставляются "как есть", без гарантий и обязательств со стороны разработчиков. Разработчики не несут ответственности за прямой или косвенный ущерб, вызванный использованием открытого кода Futriix и futriix или технических решений, использующих этот код.

(К началу)

Глоссарий

  • База Данных(БД) - это структурированное, организованное хранилище данных, которое позволяет удобно собирать, хранить, управлять и извлекать информацию.
  • Система Управления Базами Данных(СУБД) - это программное обеспечение, которое позволяет создавать, управлять и взаимодействовать с базами данных
  • Таппл (Tapple) - аналог базы данных в РСУБД
  • Слайс (Slice) - аналог таблицы
  • Кортеж (Tuple) - аналог записи в таблице
  • Мультимодельная СУБД - это СУБД, которая объединяет в себе поддержку нескольких моделей данных (реляционной, документной, графовой, ключ-значение и др.) в рамках единого интегрированного ядра.
  • Резидентная СУБД - это СУБД, которая работает непрерывно в оперативной памяти (RAM).
  • Инстанс - это запущенный экземляр базы данных.
  • Узел (хост,нода,шард) - это отдельный сервер (физический или виртуальный), который является частью кластера или распределенной системы и выполняет часть общей работы.
  • Слайс (от англ. "slice"-слой) - это логический и физически изолированный фрагмент коллекции документов, полученный в результате горизонтального партиционирования (шардирования) и размещенный на определенном узле кластера с целью масштабирования производительности и объема данных.
  • Репликасет - это группа серверов СУБД, объединенных в отказоустойчивую конфигурацию, где один узел выполняет роль первичного (принимающего операции записи), а один или несколько других - роль вторичных (синхронизирующих свои данные с первичным и обслуживающих чтение), с автоматическим переизбранием первичного узла в случае его сбоя.
  • Временные ряды (time series) - это это упорядоченная во времени последовательность данных, собранная в регулярные промежутки времени из какого-либо источниика (цены на акции, данные температуры, объёмы продаж и.т.д.).
  • OLTP (Online Transactional Processing-Онлайн обработка транзакций)- это технология обработки транзакций в режиме реального времени. Её основная задача заключается в обеспечении быстрого и надёжного выполнения операций, которые происходят ежесекундно в бизнесе. Они обеспечивают быстрое выполнение операций вставки, обновления и удаления данных, поддерживая целостность и надежность транзакций.
  • OLAP (Online Analytical Processing - Оперативная аналитическая обработка) — это технология, которая работает с историческими массивами информации, извлекая из них закономерности и производя анализ больших объемов данных, поддерживает многоразмерные запросы и сложные аналитические операции. Данная технология оптимизирована для выполнения сложных запросов и предоставления сводной информации для принятия управленческих решений.
  • HTAP (Hybrid Transactional and Analytical Processing - Гибридная транзакционно-аналитическая обработка)- это технология, которая заключаются в эффективном совмещении операционных и аналитических запросов, т.е. классов OLTP и OLAP.
  • Кластер - это группа компьютеров, объединённых высокоскоростными каналами связи для решения сложных вычислительных задач и представляющая с точки зрения пользователя группу серверов, объединенных для работы как единая система.
  • WUI (от англ. Web-User-Interface "веб интерфейс пользователя") - это термин проекта futriix, означающий веб-интерфейс (интерфейс работающий в веб-браузере)
  • Сервер-приложений (англ. application-server) - это программное обеспечение, которое обеспечивает выполнение бизнес-логики и обработку запросов от клиентов (например, веб-браузеров или мобильных приложений). Он служит платформой для развертывания и управления приложениями, имея встроенные интепретаторы и/или компиляторы популярных языков программирования (php,go,python), что обеспечивает взаимодействие между пользователями, базами данных и другими системами.
  • workflow (англ. workflow — «поток работы») — это принцип организации рабочих процессов, в соответствии с которым повторяющиеся задачи представлены как последовательность стандартных шагов.
  • wait-free (дословно с англ. wait-free — «свободный от ожидания»)-класс неблокирующих алгоритмов, в которых каждая операция должна завершаться за конечное число шагов независимо от активности других потоков.
  • CA (англ. Certificate Authority - Центры Сертификации) - это организации, которые выдают доверенные криптографические сертификаты.
  • Команды, выполняемые с привилегиями суперпользователя (root), отмечены символом приглашения «#»
  • Команды, выполняемые с правами обычного пользователя(user), отмечены символом приглашения «$»

(К началу)

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

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. Скомпилируйте и запустите:
# Стандартная сборка для ОС на базе Linux
$ ./build.sh

# Сборка для операционных систем на базе Illumos
$ cd scripts/
$ ./build_illumos.sh

# Показать справку
$./build.sh --help

$ ./futriis

(К началу)

Тестирование

На данный момент для субд реализовано пять тестов (регрессионный, smoke-тест, функциональный, интеграционный, нагрузочный) на языке lua, покрывающий функционал acl, индексов, constraint'ов, RestFull HTTP API, ACL

Important

  1. Перед запуском тестов убедитесь, что СУБД запущена и HTTP API доступен на порту 8080
  2. Load test может занять несколько минут при больших объёмах данных
  3. Для параллельного тестирования в нагрузочном тесте рекомендуется использовать lua-lanes или запускать несколько процессов
  4. Все тесты используют аутентификацию и проверяют как позитивные, так и негативные сценарии
# Установка LuaSocket и JSON библиотек
luarocks install luasocket
luarocks install lua-cjson

# Запуск отдельных тестов
lua regression_test.lua
lua smoke_test.lua
lua functional_test.lua
lua integration_test.lua
lua load_test.lua

# Или все тесты последовательно
for test in regression smoke functional integration load; do
    echo "Running ${test}_test.lua..."
    lua ${test}_test.lua
    echo "---"
done

(К началу)

Примеры команд субд

(К началу)

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

(К началу)

Индексы

(К началу)

Транзакции

(К началу)

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

(К началу)

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

(К началу)

Import-Export

(К началу)

Lua-плагины

(К началу)

ACL

HTTP API

(К началу)

Пример рабочей сессии со всем реализованным функционалом

Дорожная карта

  • Реализовать
  • Реализовать

(К началу)

Контакты

Григорий Сафронов - E-mail

(К началу)

Description
NoSQL decentralized distributed document-store database futriis with wait-free architecture, wriitten in golang with lua plugins
https://futriix.ru Readme 164 KiB
Languages
Go 99.1%
Shell 0.6%
Lua 0.3%