Update README.md
Some checks are pending
CI / test-ubuntu-latest (push) Waiting to run
CI / build-ubuntu-old (push) Waiting to run
CI / build-macos-latest (push) Waiting to run
CI / build-libc-malloc (push) Waiting to run

This commit is contained in:
Александр Кузнецов 2025-04-18 08:14:34 +00:00
parent 2f002e8169
commit 0bb5d6ffb0

View File

@ -38,17 +38,16 @@
<ol> <ol>
<li> <li>
<a href="#о-проекте">О проекте</a> <a href="#о-проекте">О проекте</a>
<li><a href="#лицензия">Лицензия</a></li>
<li><a href="#основные-термины">Основные термины</a></li> <li><a href="#основные-термины">Основные термины</a></li>
</li>
<li><a href="#подготовка">Подготовка</a></li> <li><a href="#подготовка">Подготовка</a></li>
<li><a href="#компиляция">Компиляция</a></li> <li><a href="#компиляция">Компиляция</a></li>
<li><a href="#типовые-проблемы">Типовые проблемы</a></li>
<li><a href="#тестирование-сборки">Тестирование сборки</a></li> <li><a href="#тестирование-сборки">Тестирование сборки</a></li>
<li><a href="#пример-основных-команд">Пример основных команд</a></li> <li><a href="#пример-основных-команд">Пример основных команд</a></li>
<li><a href="#кластер">Кластер</a></li> <li><a href="#кластер">Кластер</a></li>
<li><a href="#типовые-проблемы">Типовые проблемы</a></li>
<li><a href="#дорожная-карта">Дорожная карта</a></li> <li><a href="#дорожная-карта">Дорожная карта</a></li>
<li><a href="#вклад">Вклад</a></li> <li><a href="#вклад">Вклад</a></li>
<li><a href="#лицензия">Лицензия</a></li>
<li><a href="#контакты">Контакты</a></li> <li><a href="#контакты">Контакты</a></li>
</ol> </ol>
</details> </details>
@ -62,6 +61,12 @@ Futriix-Мультимодельная СУБД на языке С поддер
Ниже приведён пример того, инструкции по настройке вашего проекта локально. Ниже приведён пример того, инструкции по настройке вашего проекта локально.
Чтобы запустить локальную копию проекта, выполните следующие простые шаги. Чтобы запустить локальную копию проекта, выполните следующие простые шаги.
<!-- LICENSE -->
## Лицензия
Проект распространяется под 3-пунктной лицензией BSD. Подробнсти смотрите в файле `COPYING.txt`.
<p align="right">(<a href="#readme-top">К началу</a>)</p>
## Основные термины ## Основные термины
@ -103,8 +108,6 @@ Futriix-Мультимодельная СУБД на языке С поддер
Futriix может быть скомпилирован для следующих операционных систем: Linux, OSX, OpenBSD, NetBSD, FreeBSD. Futriix может быть скомпилирован для следующих операционных систем: Linux, OSX, OpenBSD, NetBSD, FreeBSD.
Мы поддерживаем архитектуры endian и little endian, и 32-битные и 64-битные системы. Мы поддерживаем архитектуры endian и little endian, и 32-битные и 64-битные системы.
<p align="right">(<a href="#readme-top">К началу</a>)</p>
### Дополнительные параметры компиляции ### Дополнительные параметры компиляции
Для сборки проекта с поддержкой TLS выпоните команду: Для сборки проекта с поддержкой TLS выпоните команду:
@ -118,14 +121,14 @@ Futriix может быть скомпилирован для следующих
Для выполнения данной операции вам необходимо библиотека OpenSSL (например, Для выполнения данной операции вам необходимо библиотека OpenSSL (например,
libssl-dev для Debian/Ubuntu). libssl-dev для Debian/Ubuntu).
<p align="right">(<a href="#readme-top">К началу</a>)</p>
## Тестирование сборки ## Тестирование сборки
После компиляции Futriix, рекомендуем запустить утилиту для проверки корректности сборки: После компиляции Futriix, рекомендуем запустить утилиту для проверки корректности сборки:
```sh ```sh
unix:$ make test unix:$ make test
``` ```
## Исправление проблем сборки с зависимостями или кэшированными параметрами сборки. ## Исправление проблем сборки с зависимостями или кэшированными параметрами сборки.
Futriix содержит некоторые зависимости, которые хранятся в директории `deps`. Futriix содержит некоторые зависимости, которые хранятся в директории `deps`.
@ -134,11 +137,9 @@ Futriix содержит некоторые зависимости, которы
Когда вы обновляете код проекта командой `git pull` или когда код внутри Когда вы обновляете код проекта командой `git pull` или когда код внутри
дерева зависимостей изменен каким-либо другим способом, обязательно используйте следующее дерева зависимостей изменен каким-либо другим способом, обязательно используйте следующее
команду для того, чтобы действительно все почистить и пересобрать с нуля: команду для того, чтобы действительно все почистить и пересобрать с нуля:
```sh ```sh
unix:$ make distclean unix:$ make distclean
``` ```
В результате работы команды выше будут очищены: аллокатор памяти jemalloc, язык lua, библиотеку hiredis, библиотеку linenoise а также другие зависимости. В результате работы команды выше будут очищены: аллокатор памяти jemalloc, язык lua, библиотеку hiredis, библиотеку linenoise а также другие зависимости.
Кроме того, если вы принудительно используете определенные параметры сборки, такие как 32-битная версия для 32-битной системы, оптимизации компилятора C в данном случае не будут выполнены. Оптимизации (для целей отладки) и другие подобные параметры времени сборки, Кроме того, если вы принудительно используете определенные параметры сборки, такие как 32-битная версия для 32-битной системы, оптимизации компилятора C в данном случае не будут выполнены. Оптимизации (для целей отладки) и другие подобные параметры времени сборки,
@ -155,45 +156,36 @@ malloc по умолчанию, за исключением jemalloc, котор
проблем c фрагментацией, чем libc malloc. проблем c фрагментацией, чем libc malloc.
Чтобы принудительно скомпилировать libc malloc, выполните следующую команду: Чтобы принудительно скомпилировать libc malloc, выполните следующую команду:
```sh ```sh
unix:$ make MALLOC=libc unix:$ make MALLOC=libc
``` ```
Для компиляции аллокатора jemalloc на операционной системе Mac OS X, выполните команду: Для компиляции аллокатора jemalloc на операционной системе Mac OS X, выполните команду:
```sh ```sh
unix:$ make MALLOC=jemalloc unix:$ make MALLOC=jemalloc
``` ```
<!-- USAGE EXAMPLES --> <!-- USAGE EXAMPLES -->
## Пример основных команд ## Пример основных команд
В данном разделе приведён пример основных команд субд Futriix В данном разделе приведён пример основных команд субд Futriix
Запускаем клиент Futriix, перейдя в каталог с исходным кодом: Запускаем клиент Futriix, перейдя в каталог с исходным кодом:
```sh ```sh
unix:$ cd src && ./futriix-cli unix:$ cd src && ./futriix-cli
``` ```
Проверяем доступность сервера, выполняяя команду `ping`, если будет получен ответ `pong`-значит сервер доступен и работает корректно Проверяем доступность сервера, выполняяя команду `ping`, если будет получен ответ `pong`-значит сервер доступен и работает корректно
```sh ```sh
127.0.0.1:futriix:~> ping 127.0.0.1:futriix:~> ping
PONG PONG
``` ```
Присваеваем значение переменной `foo` равное `bar`, командой ниже: Присваеваем значение переменной `foo` равное `bar`, командой ниже:
```sh ```sh
127.0.0.1:futriix:~> set foo bar 127.0.0.1:futriix:~> set foo bar
OK OK
``` ```
Получаем значение переменной `foo`, командой ниже: Получаем значение переменной `foo`, командой ниже:
```sh ```sh
unix:$ get foo unix:$ get foo
"bar" "bar"
@ -201,53 +193,35 @@ PONG
<p align="right">(<a href="#readme-top">К началу</a>)</p> <p align="right">(<a href="#readme-top">К началу</a>)</p>
## Кластер ## Кластер
1. Откройте директорию с Futriix: 1. Откройте директорию с Futriix:
```sh ```sh
unix:$ cd futriix unix:$ cd futriix
``` ```
2. Откройте файл конфигурации futriix.conf в любом текстовом редакторе, например nano, как в примере приведённом ниже: 2. Откройте файл конфигурации futriix.conf в любом текстовом редакторе, например nano, как в примере приведённом ниже:
```sh ```sh
unix:$ nano futriix/futriix.conf unix:$ nano futriix/futriix.conf
``` ```
3. Найдите и установите значения "yes" для параметров "active-replica" и "multi-master". После чего добавьте в файл конфигурации ip-адреса, узлов вашего кластера. Если вы всё сделали правильно у вас должны отобразится строки в файле конфигурации `futriix.conf` как показано ниже: 3. Найдите и установите значения "yes" для параметров "active-replica" и "multi-master". После чего добавьте в файл конфигурации ip-адреса, узлов вашего кластера. Если вы всё сделали правильно у вас должны отобразится строки в файле конфигурации `futriix.conf` как показано ниже:
```sh ```sh
active-replica yes active-replica yes
multi-master yes multi-master yes
replicaof 192.168.11.5 9880 replicaof 192.168.11.5 9880
replicaof 192.168.11.6 9880 replicaof 192.168.11.6 9880
replicaof 192.168.11.7 9880 replicaof 192.168.11.7 9880
``` ```
4. Сохраните внесённые вами изменения, выйдите из редактора, воспользовавшись командами ниже: 4. Сохраните внесённые вами изменения, выйдите из редактора, воспользовавшись командами ниже:
```sh ```sh
unix:$ ctrl+O unix:$ ctrl+O
unix:$ ctrl+x unix:$ ctrl+x
``` ```
5. Перейдите в директорию Futriix и запустите скрипт `cluster.sh` с параметрами `pick` (скрипт запущенный с данным параметром "соберёт кластер"), и `run`,(скрипт запущенный с данным параметром "запустит кластер") как указано ниже: 5. Перейдите в директорию Futriix и запустите скрипт `cluster.sh` с параметрами `pick` (скрипт запущенный с данным параметром "соберёт кластер"), и `run`,(скрипт запущенный с данным параметром "запустит кластер") как указано ниже:
```sh ```sh
unix:$ ./cluster pick unix:$ ./cluster pick
unix:$ ./cluster run unix:$ ./cluster run
``` ```
6. Для остановки кластера запустите скрипт `cluster.sh` с параметром `stop` 6. Для остановки кластера запустите скрипт `cluster.sh` с параметром `stop`
```sh ```sh
unix:$ ./cluster stop unix:$ ./cluster stop
``` ```
@ -257,9 +231,7 @@ PONG
В данном разделе описаны типовые проблемы, возникающие при эксплуатации субд Futrix. В данном разделе описаны типовые проблемы, возникающие при эксплуатации субд Futrix.
1. **Описание проблемы:** При запуске инстанса Futriix, появляется следующее сообщение: 1. **Описание проблемы:** При запуске инстанса Futriix, появляется следующее сообщение:
```sh ```sh
Warning: no config file specified, using the default config. In order to specify a config file use ./futriix-server /path/to/futriix.conf Warning: no config file specified, using the default config. In order to specify a config file use ./futriix-server /path/to/futriix.conf
``` ```
@ -267,13 +239,11 @@ Warning: no config file specified, using the default config. In order to specify
**Решение:** **Решение:**
При запуске инстанса сервера futriix, указать корректный путь до файла конфигурации, командой ниже: При запуске инстанса сервера futriix, указать корректный путь до файла конфигурации, командой ниже:
```sh ```sh
unix:$ ./futriix-server /path/to/futriix.conf unix:$ ./futriix-server /path/to/futriix.conf
``` ```
2. **Описание проблемы:** При запуске инстанса Futriix, появляется следующее сообщение: 2. **Описание проблемы:** При запуске инстанса Futriix, появляется следующее сообщение:
```sh ```sh
1:12:S 18 Apr 2025 04:47:25.643 # NOTICE: Detuning locks due to high load per core: 97.49% 1:12:S 18 Apr 2025 04:47:25.643 # NOTICE: Detuning locks due to high load per core: 97.49%
1:12:S 18 Apr 2025 04:47:55.491 # NOTICE: CPU pressure reduced 1:12:S 18 Apr 2025 04:47:55.491 # NOTICE: CPU pressure reduced
@ -322,15 +292,6 @@ Futriix использует спинлоки для быстрой синхро
4. Отправьте в ветку (`git push origin Feature/AmazingFeature`) 4. Отправьте в ветку (`git push origin Feature/AmazingFeature`)
5. Откройте запрос на включение 5. Откройте запрос на включение
<!-- LICENSE -->
## Лицензия
Проект распространяется под 3-пунктной лицензией BSD. Подробнсти смотрите в файле `COPYING.txt`.
<p align="right">(<a href="#readme-top">К началу</a>)</p>
<!-- CONTACT --> <!-- CONTACT -->
## Контакты ## Контакты