## О проекте
Rfut - Это модуль, написанный на языке Rust, обеспечивающий создание кластера для субд Futriix.
Futriix является резидентной субд, т.е. хранящей свои данные в оперативной памяти, с их периодическим сохранением на внутренний носитель: HDD (жёсткий диск) или SSD-накопитель.
## Лицензия
Проект распространяется под 3-пунктной лицензией BSD. Подробнсти смотрите в файле `COPYING.txt`.
## Основные термины
* **База Данных(БД)** -массив информация, хранящийся, например, на флешке, в файле, на кластере
* **Система Управления Базами Данных(СУБД)** - Это программа для внесения изменений в базу данных и поиска по ней
* **Резидентная СУБД** - субд, хранящая все свои данные в оперативной памяти, с периодическим сохранением на HDD или SSD
* **Инстанс** - запущенный экземляр базы данных
* **Узел (хост,нода)** - физический сервер
* **Кластер** - группа компьютеров, объединённых высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс
* Команды, выполняемые с привилегиями суперпользователя (root), отмечены символом приглашения **«#»**
* Команды, выполняемые с правами обычного пользователя(user), отмечены символом приглашения **«$»**
* **FutBot** - интеллектуальный помощник в мессенджере Телеграмм, помогающий осущесвлять быстрый поиск по документации проекта
## Подготовка
**Для операционных систем семейства Debian** выполните следующие шаги:
* Устанавливаем язык программирования C/C++, соопутствующие утилиты (autoconf и другие)
```sh
# apt update
# apt upgrade
# apt install build-essential nasm autotools-dev autoconf libjemalloc-dev tcl tcl-dev uuid-dev libcurl4-openssl-dev cmake git hugepages
```
**Для операционных систем семейства Red Hat (Fedora, Aurora)** выполните следующие шаги:
* Устанавливаем язык программирования C/C++, соопутствующие утилиты (autoconf и другие)
```sh
# dnf update
# dnf install -y jemalloc-devel g++ libuuid-devel libatomic openssl-devel curl-devel cmake git hugepages
```
* Устанавливаем язык программирования Golang по инструкции с [официального сайта](https://go.dev/doc/install)
**Для операционной системы Alpine** выполните следующие шаги:
* Устанавливаем язык программирования C/C++, соопутствующие утилиты (autoconf и другие)
```sh
# apk update
# apk add --no-cache coreutils gcc linux-headers make musl-dev util-linux-dev openssl-dev curl-dev g++ bash git perl libunwind-dev
```
* Устанавливаем язык программирования Golang по инструкции с [официального сайта](https://go.dev/doc/install)
## Компиляция
1. Копируем репозиторий
```sh
$ git clone https://source.futriix.ru/gvsafronov/rfut
```
2. Переходим в каталог с исходном кодом src
```sh
$ cd rfut/
```
3. Компилируем Futriix с помощью утилиты Make
```sh
$ cargo build
```
> [!WARNING]
> **Rfut также может быть скомпилирован для следующих операционных систем: `Linux`, `OSX`, `Open Indiana`, `FreeBSD`, но сборка для этих операционных систем не проводилась!!!**
## Вклад
Вклады — это то, что делает сообщество открытого исходного кода таким замечательным местом для обучения, вдохновения и творчества. Любой ваш вклад **очень ценится**.
Если у вас есть предложение, которое могло бы улучшить ситуацию, создайте форк репозитория и создайте запрос на включение. Также можно просто открыть задачу с тегом «улучшение».
1. Форкните проект
2. Создайте свою ветку функций (`git checkout -b Feature/AmazingFeature`)
3. Зафиксируйте свои изменения (git commit -m 'Add some AmazingFeature'`)
4. Отправьте в ветку (`git push main Feature/AmazingFeature`)
5. Откройте запрос на включение
## Контакты
Григорий Сафронов - [E-mail](gvsafronov@yandex.ru)
Ссылка на Интеллектуальный помощник - [FutBot](https://t.me/Futriix_bot)