Futriis-это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД,
реализованная на Go с поддержкой плагинов на языке lua для операционных систем на базе Solaris (ядра Illumos)
Краткая документация проекта FutriiS
- О проекте
- Лицензия
- Глоссарий
- Типы данных субд
- Системные требования
- Подготовка и компиляция
- Тестирование
- Примеры команд субд
- Индексы
- Транзакции
- Кластеризация и шардинг
- Сжатие данных
- Import-Export
- Lua-плагины
- ACL
- HTTP API
- Сферы применения
- Дорожная карта
- Контакты
О проекте
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 не поддерживаются!
(К началу)
Подготовка и компиляция
- Клонируйте репозиторий:
$ git clone https://github.com/futriis/db.git
$ cd futriis
- Скомпилируйте и запустите:
# Стандартная сборка для ОС на базе Linux
$ ./build.sh
# Сборка для операционных систем на базе Illumos
$ cd scripts/
$ ./build_illumos.sh
# Показать справку
$./build.sh --help
$ ./futriis
(К началу)
Тестирование
На данный момент для субд реализовано пять тестов (регрессионный, smoke-тест, функциональный, интеграционный, нагрузочный) на языке lua, покрывающий функционал acl, индексов, constraint'ов, RestFull HTTP API, ACL
Important
- Перед запуском тестов убедитесь, что СУБД запущена и HTTP API доступен на порту 8080
- Load test может занять несколько минут при больших объёмах данных
- Для параллельного тестирования в нагрузочном тесте рекомендуется использовать lua-lanes или запускать несколько процессов
- Все тесты используют аутентификацию и проверяют как позитивные, так и негативные сценарии
# Установка 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
(К началу)