(К началу)
## Лицензия Проект распространяется под лицензией **`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. Клонируйте репозиторий: ```bash $ git clone https://github.com/futriis/db.git $ cd futriis ``` 2. Скомпилируйте и запустите: ```bash # Стандартная сборка для ОС на базе 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. Все тесты используют аутентификацию и проверяют как позитивные, так и негативные сценарии ```bash # Установка 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(К началу)
## Пример рабочей сессии со всем реализованным функционалом ## Дорожная карта - [x] Реализовать - [ ] Реализовать(К началу)
## Контакты Григорий Сафронов - [E-mail](gvsafronov@yandex.ru)(К началу)