Update README.md

This commit is contained in:
2026-05-20 18:47:19 +00:00
parent db6ace3d3a
commit 95d67d9197

196
README.md
View File

@@ -16,7 +16,7 @@
</a> </a>
<p align="center"> <p align="center">
<h3> <b>Futriis-это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД, <h3> <b>futriix-это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД,
реализованная на Go с поддержкой плагинов на языке lua для операционных систем на базе Solaris (ядра Illumos)</b> <br></h3> реализованная на Go с поддержкой плагинов на языке lua для операционных систем на базе Solaris (ядра Illumos)</b> <br></h3>
<br /> <br />
<br /> <br />
@@ -26,7 +26,7 @@
</p> </p>
</div> </div>
## Краткая документация проекта FutriiS ## Краткая документация проекта futriix
<!-- TABLE OF CONTENTS --> <!-- TABLE OF CONTENTS -->
<br> <br>
@@ -63,7 +63,7 @@
> [!CAUTION] > [!CAUTION]
> **ALPHA VERSION**<br><br>**Категорически не использовать в продакшене, так как это экспериментальная версия!!!** > **ALPHA VERSION**<br><br>**Категорически не использовать в продакшене, так как это экспериментальная версия!!!**
futriis - это легковесная, распределённая, использующая алгоритмы неблокирующей синхронизации - `wait-free` и `lock-free` in-memory СУБД, реализованная на языке Go с поддержкой плагинов на языке lua использующая алгоритм консенсуса Raft. futriix - это легковесная, распределённая, использующая алгоритмы неблокирующей синхронизации - `wait-free` и `lock-free` in-memory СУБД, реализованная на языке Go с поддержкой плагинов на языке lua использующая алгоритм консенсуса Raft.
Данная субд была разработана, в первую очередь для эксплуатации в операционных системах на базе ядра Illumos и операционной системы Solaris: OpenIndiana Hipster, Oracle Solaris в замкнутых программных средах. Данная субд была разработана, в первую очередь для эксплуатации в операционных системах на базе ядра Illumos и операционной системы Solaris: OpenIndiana Hipster, Oracle Solaris в замкнутых программных средах.
Но также она совместима с популярными Linux-дистрибутивами (Debian,Ubuntu,Fedora), т.е. операционными системами построенными на базе ядра Linux. Но также она совместима с популярными Linux-дистрибутивами (Debian,Ubuntu,Fedora), т.е. операционными системами построенными на базе ядра Linux.
@@ -127,8 +127,8 @@ futriis - это легковесная, распределённая, испо
1. Клонируйте репозиторий: 1. Клонируйте репозиторий:
```bash ```bash
$ git clone https://github.com/futriis/db.git $ git clone https://github.com/futriix/db.git
$ cd futriis $ cd futriix
``` ```
> [!IMPORTANT] > [!IMPORTANT]
@@ -166,7 +166,7 @@ $ ./build_illumos.sh
# Показать справку # Показать справку
$./build.sh --help $./build.sh --help
$ ./futriis $ ./futriix
``` ```
<p align="right">(<a href="#readme-top">К началу</a>)</p> <p align="right">(<a href="#readme-top">К началу</a>)</p>
@@ -214,28 +214,28 @@ done
```sh ```sh
# Создание новой базы данных # Создание новой базы данных
futriiS:~> create database company futriix:~> create database company
✓ Database 'company' created ✓ Database 'company' created
futriiS:~> create database shop futriix:~> create database shop
✓ Database 'shop' created ✓ Database 'shop' created
# Переключение на базу данных # Переключение на базу данных
futriiS:~> use company futriix:~> use company
✓ Switched to database 'company' ✓ Switched to database 'company'
futriiS:~> use shop futriix:~> use shop
✓ Switched to database 'shop' ✓ Switched to database 'shop'
# Просмотр всех баз данных # Просмотр всех баз данных
futriiS:~> show databases futriix:~> show databases
Databases: Databases:
company company
* shop * shop
test test
# Удаление базы данных # Удаление базы данных
futriiS:~> drop database test futriix:~> drop database test
✓ Database 'test' dropped ✓ Database 'test' dropped
``` ```
@@ -245,70 +245,70 @@ futriiS:~> drop database test
```sh ```sh
# Создание новой базы данных # Создание новой базы данных
futriiS:~> create database company futriix:~> create database company
✓ Database 'company' created ✓ Database 'company' created
futriiS:~> create database shop futriix:~> create database shop
✓ Database 'shop' created ✓ Database 'shop' created
# Переключение на базу данных # Переключение на базу данных
futriiS:~> use company futriix:~> use company
✓ Switched to database 'company' ✓ Switched to database 'company'
futriiS:~> use shop futriix:~> use shop
✓ Switched to database 'shop' ✓ Switched to database 'shop'
# Просмотр всех баз данных # Просмотр всех баз данных
futriiS:~> show databases futriix:~> show databases
Databases: Databases:
company company
* shop * shop
test test
# Удаление базы данных # Удаление базы данных
futriiS:~> drop database test futriix:~> drop database test
✓ Database 'test' dropped ✓ Database 'test' dropped
``` ```
```sh ```sh
# Создание коллекции # Создание коллекции
futriiS:~> use company futriix:~> use company
✓ Switched to database 'company' ✓ Switched to database 'company'
futriiS:~> create collection employees futriix:~> create collection employees
✓ Collection 'employees' created in database 'company' ✓ Collection 'employees' created in database 'company'
futriiS:~> create collection departments futriix:~> create collection departments
✓ Collection 'departments' created in database 'company' ✓ Collection 'departments' created in database 'company'
futriiS:~> create collection projects futriix:~> create collection projects
✓ Collection 'projects' created in database 'company' ✓ Collection 'projects' created in database 'company'
# Просмотр всех коллекций # Просмотр всех коллекций
futriiS:~> show collections futriix:~> show collections
Collections in database 'company': Collections in database 'company':
- employees - employees
- departments - departments
- projects - projects
# Удаление коллекции # Удаление коллекции
futriiS:~> drop collection projects futriix:~> drop collection projects
✓ Collection 'projects' dropped from database 'company' ✓ Collection 'projects' dropped from database 'company'
``` ```
```sh ```sh
# Вставка документа (простой формат key=value) # Вставка документа (простой формат key=value)
futriiS:~> insert employees name=John Doe,position=Developer,age=30,department=IT futriix:~> insert employees name=John Doe,position=Developer,age=30,department=IT
✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440000 ✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440000
futriiS:~> insert employees name=Jane Smith,position=Manager,age=35,department=HR futriix:~> insert employees name=Jane Smith,position=Manager,age=35,department=HR
✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440001 ✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440001
futriiS:~> insert employees name=Bob Johnson,position=Designer,age=28,department=Design futriix:~> insert employees name=Bob Johnson,position=Designer,age=28,department=Design
✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440002 ✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440002
# Поиск документа по ID # Поиск документа по ID
futriiS:~> find employees 550e8400-e29b-41d4-a716-446655440000 futriix:~> find employees 550e8400-e29b-41d4-a716-446655440000
Document found: Document found:
{ {
"name": "John Doe", "name": "John Doe",
@@ -318,7 +318,7 @@ Document found:
} }
# Поиск по индексу # Поиск по индексу
futriiS:~> findbyindex employees name_idx "John Doe" futriix:~> findbyindex employees name_idx "John Doe"
Found 1 document(s): Found 1 document(s):
[1] ID: 550e8400-e29b-41d4-a716-446655440000 [1] ID: 550e8400-e29b-41d4-a716-446655440000
{ {
@@ -329,18 +329,18 @@ Found 1 document(s):
} }
# Обновление документа # Обновление документа
futriiS:~> update employees 550e8400-e29b-41d4-a716-446655440000 age=31,position=Senior Developer futriix:~> update employees 550e8400-e29b-41d4-a716-446655440000 age=31,position=Senior Developer
✓ Document '550e8400-e29b-41d4-a716-446655440000' updated ✓ Document '550e8400-e29b-41d4-a716-446655440000' updated
# Подсчёт количества документов # Подсчёт количества документов
futriiS:~> count employees futriix:~> count employees
Collection 'employees' has 3 document(s) Collection 'employees' has 3 document(s)
# Удаление документа # Удаление документа
futriiS:~> delete employees 550e8400-e29b-41d4-a716-446655440002 futriix:~> delete employees 550e8400-e29b-41d4-a716-446655440002
✓ Document '550e8400-e29b-41d4-a716-446655440002' deleted ✓ Document '550e8400-e29b-41d4-a716-446655440002' deleted
futriiS:~> count employees futriix:~> count employees
Collection 'employees' has 2 document(s) Collection 'employees' has 2 document(s)
``` ```
@@ -351,19 +351,19 @@ Collection 'employees' has 2 document(s)
```sh ```sh
# Создание обычного индекса # Создание обычного индекса
futriiS:~> create index employees name_idx name futriix:~> create index employees name_idx name
✓ Index 'name_idx' created on collection 'employees' ✓ Index 'name_idx' created on collection 'employees'
# Создание уникального индекса # Создание уникального индекса
futriiS:~> create index employees email_idx email unique futriix:~> create index employees email_idx email unique
✓ Index 'email_idx' created on collection 'employees' ✓ Index 'email_idx' created on collection 'employees'
# Создание составного индекса # Создание составного индекса
futriiS:~> create index employees dept_age_idx department,age futriix:~> create index employees dept_age_idx department,age
✓ Index 'dept_age_idx' created on collection 'employees' ✓ Index 'dept_age_idx' created on collection 'employees'
# Просмотр всех индексов # Просмотр всех индексов
futriiS:~> show indexes employees futriix:~> show indexes employees
Indexes on collection 'employees': Indexes on collection 'employees':
- _id_ - _id_
- name_idx - name_idx
@@ -371,7 +371,7 @@ Indexes on collection 'employees':
- dept_age_idx - dept_age_idx
# Удаление индекса # Удаление индекса
futriiS:~> drop index employees dept_age_idx futriix:~> drop index employees dept_age_idx
✓ Index 'dept_age_idx' dropped from collection 'employees' ✓ Index 'dept_age_idx' dropped from collection 'employees'
``` ```
@@ -381,32 +381,32 @@ futriiS:~> drop index employees dept_age_idx
```sh ```sh
# Начало сессии # Начало сессии
futriiS:~> db.startSession() futriix:~> db.startSession()
✓ Session started: session_12345 ✓ Session started: session_12345
# Начало транзакции в рамках сессии # Начало транзакции в рамках сессии
futriiS:~> session.startTransaction() futriix:~> session.startTransaction()
✓ Transaction started: TX_67890 ✓ Transaction started: TX_67890
# Выполнение операций в транзакции # Выполнение операций в транзакции
futriiS:~> insert employees name=New User,position=Trainee,age=22 futriix:~> insert employees name=New User,position=Trainee,age=22
✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440005 ✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440005
futriiS:~> update employees 550e8400-e29b-41d4-a716-446655440005 status=active futriix:~> update employees 550e8400-e29b-41d4-a716-446655440005 status=active
✓ Document '550e8400-e29b-41d4-a716-446655440005' updated ✓ Document '550e8400-e29b-41d4-a716-446655440005' updated
# Подтверждение транзакции # Подтверждение транзакции
futriiS:~> session.commitTransaction() futriix:~> session.commitTransaction()
✓ Transaction committed successfully ✓ Transaction committed successfully
# Откат транзакции (при ошибке) # Откат транзакции (при ошибке)
futriiS:~> session.startTransaction() futriix:~> session.startTransaction()
✓ Transaction started: TX_67891 ✓ Transaction started: TX_67891
futriiS:~> insert employees name=Test User,position=Test,age=25 futriix:~> insert employees name=Test User,position=Test,age=25
✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440006 ✓ Document inserted with ID: 550e8400-e29b-41d4-a716-446655440006
futriiS:~> session.abortTransaction() futriix:~> session.abortTransaction()
✓ Transaction aborted, changes rolled back ✓ Transaction aborted, changes rolled back
``` ```
@@ -417,7 +417,7 @@ futriiS:~> session.abortTransaction()
```sh ```sh
# Просмотр статуса кластера # Просмотр статуса кластера
futriiS:~> status futriix:~> status
=== Cluster Status === === Cluster Status ===
✓ Role: LEADER ✓ Role: LEADER
Cluster Name: production Cluster Name: production
@@ -425,7 +425,7 @@ futriiS:~> status
Raft Port: 7000 Raft Port: 7000
# В режиме follower # В режиме follower
futriiS:~> status futriix:~> status
=== Cluster Status === === Cluster Status ===
⚠ Role: FOLLOWER ⚠ Role: FOLLOWER
Cluster Name: production Cluster Name: production
@@ -433,7 +433,7 @@ futriiS:~> status
Raft Port: 7000 Raft Port: 7000
# Просмотр всех узлов кластера # Просмотр всех узлов кластера
futriiS:~> nodes futriix:~> nodes
=== Cluster Nodes === === Cluster Nodes ===
* 192.168.1.100:8080 * 192.168.1.100:8080
192.168.1.101:8080 192.168.1.101:8080
@@ -446,23 +446,23 @@ futriiS:~> nodes
```sh ```sh
# Добавление обязательного поля # Добавление обязательного поля
futriiS:~> add required employees email futriix:~> add required employees email
✓ Required field 'email' added to collection 'employees' ✓ Required field 'email' added to collection 'employees'
# Добавление ограничения уникальности # Добавление ограничения уникальности
futriiS:~> add unique employees phone futriix:~> add unique employees phone
✓ Unique constraint added for field 'phone' on collection 'employees' ✓ Unique constraint added for field 'phone' on collection 'employees'
# Добавление минимального значения # Добавление минимального значения
futriiS:~> add min employees age 18 futriix:~> add min employees age 18
✓ Min constraint added for field 'age' on collection 'employees' (min: 18.00) ✓ Min constraint added for field 'age' on collection 'employees' (min: 18.00)
# Добавление максимального значения # Добавление максимального значения
futriiS:~> add max employees age 65 futriix:~> add max employees age 65
✓ Max constraint added for field 'age' on collection 'employees' (max: 65.00) ✓ Max constraint added for field 'age' on collection 'employees' (max: 65.00)
# Добавление enum-ограничения (допустимые значения) # Добавление enum-ограничения (допустимые значения)
futriiS:~> add enum employees status active,inactive,on_leave futriix:~> add enum employees status active,inactive,on_leave
✓ Enum constraint added for field 'status' on collection 'employees' (allowed: [active inactive on_leave]) ✓ Enum constraint added for field 'status' on collection 'employees' (allowed: [active inactive on_leave])
``` ```
<p align="right">(<a href="#readme-top">К началу</a>)</p> <p align="right">(<a href="#readme-top">К началу</a>)</p>
@@ -472,15 +472,15 @@ futriiS:~> add enum employees status active,inactive,on_leave
```sh ```sh
# Экспорт базы данных в файл MessagePack # Экспорт базы данных в файл MessagePack
futriiS:~> export "company" "company_backup.msgpack" futriix:~> export "company" "company_backup.msgpack"
✓ Database 'company' exported to company_backup.msgpack ✓ Database 'company' exported to company_backup.msgpack
# Экспорт с автоматическим добавлением расширения # Экспорт с автоматическим добавлением расширения
futriiS:~> export "shop" "shop_backup" futriix:~> export "shop" "shop_backup"
✓ Database 'shop' exported to shop_backup.msgpack ✓ Database 'shop' exported to shop_backup.msgpack
# Импорт базы данных из файла # Импорт базы данных из файла
futriiS:~> import "company" "company_backup.msgpack" futriix:~> import "company" "company_backup.msgpack"
Importing data from company_backup.msgpack to database 'company'... Importing data from company_backup.msgpack to database 'company'...
✓ Database 'company' imported successfully from company_backup.msgpack ✓ Database 'company' imported successfully from company_backup.msgpack
Collections imported: 2 Collections imported: 2
@@ -489,7 +489,7 @@ Importing data from company_backup.msgpack to database 'company'...
Documents failed: 0 Documents failed: 0
# Импорт в новую базу данных # Импорт в новую базу данных
futriiS:~> import "company_restore" "company_backup.msgpack" futriix:~> import "company_restore" "company_backup.msgpack"
Created database 'company_restore' Created database 'company_restore'
✓ Database 'company_restore' imported successfully from company_backup.msgpack ✓ Database 'company_restore' imported successfully from company_backup.msgpack
Collections imported: 2 Collections imported: 2
@@ -502,7 +502,7 @@ Created database 'company_restore'
```sh ```sh
# Просмотр информации о системе плагинов # Просмотр информации о системе плагинов
futriiS:~> plugin status futriix:~> plugin status
=== Plugin System Status === === Plugin System Status ===
Enabled: true Enabled: true
Plugins Directory: ./plugins Plugins Directory: ./plugins
@@ -510,7 +510,7 @@ futriiS:~> plugin status
Total Executions: 125 Total Executions: 125
# Список загруженных плагинов # Список загруженных плагинов
futriiS:~> plugin list futriix:~> plugin list
=== Loaded Plugins === === Loaded Plugins ===
validation (v1.0.0) by admin - Document validation rules validation (v1.0.0) by admin - Document validation rules
Status: RUNNING Status: RUNNING
@@ -520,21 +520,21 @@ futriiS:~> plugin list
Status: RUNNING Status: RUNNING
# Загрузка плагина из файла # Загрузка плагина из файла
futriiS:~> plugin load email_notifier ./plugins/email_notifier.lua futriix:~> plugin load email_notifier ./plugins/email_notifier.lua
✓ Plugin 'email_notifier' loaded successfully ✓ Plugin 'email_notifier' loaded successfully
Version: 1.0.0 Version: 1.0.0
Author: admin Author: admin
Description: Send email notifications on database events Description: Send email notifications on database events
# Запуск/остановка плагина # Запуск/остановка плагина
futriiS:~> plugin start email_notifier futriix:~> plugin start email_notifier
✓ Plugin 'email_notifier' started ✓ Plugin 'email_notifier' started
futriiS:~> plugin stop email_notifier futriix:~> plugin stop email_notifier
✓ Plugin 'email_notifier' stopped ✓ Plugin 'email_notifier' stopped
# Выгрузка плагина # Выгрузка плагина
futriiS:~> plugin unload email_notifier futriix:~> plugin unload email_notifier
✓ Plugin 'email_notifier' unloaded ✓ Plugin 'email_notifier' unloaded
``` ```
@@ -641,39 +641,39 @@ end
```sh ```sh
# Создание базы данных и коллекции # Создание базы данных и коллекции
futriiS:~> create database company futriix:~> create database company
✓ Database 'company' created ✓ Database 'company' created
futriiS:~> use company futriix:~> use company
✓ Switched to database 'company' ✓ Switched to database 'company'
futriiS:~> create collection employees futriix:~> create collection employees
✓ Collection 'employees' created in database 'company' ✓ Collection 'employees' created in database 'company'
# Загрузка и запуск плагина валидации # Загрузка и запуск плагина валидации
futriiS:~> plugin load validation ./plugins/validation.lua futriix:~> plugin load validation ./plugins/validation.lua
✓ Plugin 'validation' loaded successfully ✓ Plugin 'validation' loaded successfully
Version: 1.0.0 Version: 1.0.0
Author: admin Author: admin
Description: Document validation rules for employees collection Description: Document validation rules for employees collection
futriiS:~> plugin start validation futriix:~> plugin start validation
✓ Plugin 'validation' started ✓ Plugin 'validation' started
# Вставка валидного документа # Вставка валидного документа
futriiS:~> insert employees name=John Doe,age=25,email=john@company.com,salary=45000 futriix:~> insert employees name=John Doe,age=25,email=john@company.com,salary=45000
✓ Document inserted with ID: emp_001 ✓ Document inserted with ID: emp_001
# Вставка невалидного документа (возраст < 18) # Вставка невалидного документа (возраст < 18)
futriiS:~> insert employees name=Jane Smith,age=16,email=jane@company.com,salary=20000 futriix:~> insert employees name=Jane Smith,age=16,email=jane@company.com,salary=20000
Error: Employee must be at least 18 years old Error: Employee must be at least 18 years old
# Вставка невалидного документа (некорректный email) # Вставка невалидного документа (некорректный email)
futriiS:~> insert employees name=Bob Johnson,age=30,email=invalid-email,salary=50000 futriix:~> insert employees name=Bob Johnson,age=30,email=invalid-email,salary=50000
Error: Invalid email format Error: Invalid email format
# Выполнение пользовательской функции плагина # Выполнение пользовательской функции плагина
futriiS:~> plugin call validation validate_collection employees futriix:~> plugin call validation validate_collection employees
✓ Function returned: 0 ✓ Function returned: 0
``` ```
@@ -707,30 +707,30 @@ curl -X POST http://localhost:8080/api/plugin/call \
```sh ```sh
# Вход в систему # Вход в систему
futriiS:~> acl login admin admin futriix:~> acl login admin admin
✓ Logged in as 'admin' with role 'admin' ✓ Logged in as 'admin' with role 'admin'
# Выход из системы # Выход из системы
futriiS:~> acl logout futriix:~> acl logout
✓ Logged out ✓ Logged out
# Назначение прав доступа (после входа как admin) # Назначение прав доступа (после входа как admin)
futriiS:~> acl login admin admin futriix:~> acl login admin admin
✓ Logged in as 'admin' with role 'admin' ✓ Logged in as 'admin' with role 'admin'
futriiS:~> use company futriix:~> use company
✓ Switched to database 'company' ✓ Switched to database 'company'
# Назначение прав на чтение # Назначение прав на чтение
futriiS:~> acl grant employees reader r futriix:~> acl grant employees reader r
✓ Permissions 'r' granted to role 'reader' on collection 'employees' ✓ Permissions 'r' granted to role 'reader' on collection 'employees'
# Назначение прав на чтение и запись # Назначение прав на чтение и запись
futriiS:~> acl grant employees editor rw futriix:~> acl grant employees editor rw
✓ Permissions 'rw' granted to role 'editor' on collection 'employees' ✓ Permissions 'rw' granted to role 'editor' on collection 'employees'
# Назначение полных прав (администратор коллекции) # Назначение полных прав (администратор коллекции)
futriiS:~> acl grant employees admin rwda futriix:~> acl grant employees admin rwda
✓ Permissions 'rwda' granted to role 'admin' on collection 'employees' ✓ Permissions 'rwda' granted to role 'admin' on collection 'employees'
# Пример использования разных прав: # Пример использования разных прав:
@@ -821,23 +821,23 @@ curl -X POST http://localhost:8080/api/trigger/company/employees/create \
```sh ```sh
# Создание триггера для логирования вставок # Создание триггера для логирования вставок
futriiS:~> create trigger employees audit_log AFTER_INSERT log futriix:~> create trigger employees audit_log AFTER_INSERT log
✓ Trigger 'audit_log' created on collection 'employees' for event AFTER_INSERT ✓ Trigger 'audit_log' created on collection 'employees' for event AFTER_INSERT
# Создание триггера с автоматической установкой timestamp # Создание триггера с автоматической установкой timestamp
futriiS:~> create trigger employees set_timestamp BEFORE_INSERT modify --set updated_at $$NOW futriix:~> create trigger employees set_timestamp BEFORE_INSERT modify --set updated_at $$NOW
✓ Trigger 'set_timestamp' created on collection 'employees' for event BEFORE_INSERT ✓ Trigger 'set_timestamp' created on collection 'employees' for event BEFORE_INSERT
# Создание триггера с условием (запрет удаления активных пользователей) # Создание триггера с условием (запрет удаления активных пользователей)
futriiS:~> create trigger employees protect_active BEFORE_DELETE abort --condition status eq active futriix:~> create trigger employees protect_active BEFORE_DELETE abort --condition status eq active
✓ Trigger 'protect_active' created on collection 'employees' for event BEFORE_DELETE ✓ Trigger 'protect_active' created on collection 'employees' for event BEFORE_DELETE
# Создание триггера с обновлением аудита # Создание триггера с обновлением аудита
futriiS:~> create trigger employees audit BEFORE_UPDATE modify --set modified_by $$USER --set modified_at $$NOW futriix:~> create trigger employees audit BEFORE_UPDATE modify --set modified_by $$USER --set modified_at $$NOW
✓ Trigger 'audit' created on collection 'employees' for event BEFORE_UPDATE ✓ Trigger 'audit' created on collection 'employees' for event BEFORE_UPDATE
# Просмотр всех триггеров коллекции # Просмотр всех триггеров коллекции
futriiS:~> show triggers employees futriix:~> show triggers employees
=== Triggers on collection 'employees': === === Triggers on collection 'employees': ===
audit_log (AFTER_INSERT) - enabled [log] audit_log (AFTER_INSERT) - enabled [log]
Operations: Operations:
@@ -853,20 +853,20 @@ futriiS:~> show triggers employees
- set: modified_at = $$NOW - set: modified_at = $$NOW
# Включение/отключение триггера # Включение/отключение триггера
futriiS:~> disable trigger employees BEFORE_INSERT set_timestamp futriix:~> disable trigger employees BEFORE_INSERT set_timestamp
✓ Trigger 'set_timestamp' disabled ✓ Trigger 'set_timestamp' disabled
futriiS:~> enable trigger employees BEFORE_INSERT set_timestamp futriix:~> enable trigger employees BEFORE_INSERT set_timestamp
✓ Trigger 'set_timestamp' enabled ✓ Trigger 'set_timestamp' enabled
# Просмотр лога выполнения триггеров # Просмотр лога выполнения триггеров
futriiS:~> trigger log futriix:~> trigger log
=== Trigger Execution Log === === Trigger Execution Log ===
[1] 2026-04-12 10:30:45 - Trigger: audit_log, Event: AFTER_INSERT, Collection: employees, Document: 550e8400-... [1] 2026-04-12 10:30:45 - Trigger: audit_log, Event: AFTER_INSERT, Collection: employees, Document: 550e8400-...
[2] 2026-04-12 10:31:20 - Trigger: protect_active, Event: BEFORE_DELETE, Collection: employees, Document: 550e8400-... [2] 2026-04-12 10:31:20 - Trigger: protect_active, Event: BEFORE_DELETE, Collection: employees, Document: 550e8400-...
# Удаление триггера # Удаление триггера
futriiS:~> drop trigger employees BEFORE_INSERT set_timestamp futriix:~> drop trigger employees BEFORE_INSERT set_timestamp
✓ Trigger 'set_timestamp' dropped from collection 'employees' ✓ Trigger 'set_timestamp' dropped from collection 'employees'
``` ```
<p align="right">(<a href="#readme-top">К началу</a>)</p> <p align="right">(<a href="#readme-top">К началу</a>)</p>
@@ -882,7 +882,7 @@ futriiS:~> drop trigger employees BEFORE_INSERT set_timestamp
```sh ```sh
# Просмотр конфигурации сжатия # Просмотр конфигурации сжатия
futriiS:~> compression config futriix:~> compression config
=== Compression Configuration === === Compression Configuration ===
Enabled: true Enabled: true
Algorithm: snappy Algorithm: snappy
@@ -895,7 +895,7 @@ Available Algorithms:
zstd - High compression ratio, slower zstd - High compression ratio, slower
# Просмотр статистики сжатия # Просмотр статистики сжатия
futriiS:~> compression stats futriix:~> compression stats
=== Compression Statistics === === Compression Statistics ===
Total Documents: 1250 Total Documents: 1250
Compressed Documents: 890 Compressed Documents: 890
@@ -908,12 +908,12 @@ futriiS:~> compression stats
Min Size Threshold: 1 KB Min Size Threshold: 1 KB
# Ручное сжатие коллекции # Ручное сжатие коллекции
futriiS:~> compress collection employees futriix:~> compress collection employees
Compressing collection 'employees'... Compressing collection 'employees'...
✓ Compressed 45 documents in collection 'employees' ✓ Compressed 45 documents in collection 'employees'
# Просмотр информации о сжатии документа # Просмотр информации о сжатии документа
futriiS:~> doc compression employees 550e8400-e29b-41d4-a716-446655440000 futriix:~> doc compression employees 550e8400-e29b-41d4-a716-446655440000
=== Compression Info for Document: 550e8400-e29b-41d4-a716-446655440000 === === Compression Info for Document: 550e8400-e29b-41d4-a716-446655440000 ===
Compressed: true Compressed: true
Ratio: 35.20% Ratio: 35.20%
@@ -926,7 +926,7 @@ futriiS:~> doc compression employees 550e8400-e29b-41d4-a716-446655440000
## Графический интерфейс ## Графический интерфейс
В субд futriis для упрощения администрирования реализован **WUI (Web User Inerface) Веб-интерфейс**, с помощью которого через веб-браузер можно управлять субд, быстро просто и удобно. На фото ниже, приведён пример загруженного веб-интерфейса субд по умолчанию. В субд futriix для упрощения администрирования реализован **WUI (Web User Inerface) Веб-интерфейс**, с помощью которого через веб-браузер можно управлять субд, быстро просто и удобно. На фото ниже, приведён пример загруженного веб-интерфейса субд по умолчанию.
<img src="wui.png" height=400 weight=400 alt="wui.png"></img> <img src="wui.png" height=400 weight=400 alt="wui.png"></img>
@@ -957,10 +957,10 @@ futriiS:~> doc compression employees 550e8400-e29b-41d4-a716-446655440000
- [x] Исправить ошибки записи журнала логов (в журнал лога кроме текущего времени добавить текущий год) - [x] Исправить ошибки записи журнала логов (в журнал лога кроме текущего времени добавить текущий год)
- [x] В веб-интерфейсе, слева от надписи "admin" в левой нижней части экрана, реализована возможность добавлять фото (маленького размера) - [x] В веб-интерфейсе, слева от надписи "admin" в левой нижней части экрана, реализована возможность добавлять фото (маленького размера)
- [x] В веб-интерфейсе "вшитые в исходный код" логин и пароль (admin; admin)-удалены - [x] В веб-интерфейсе "вшитые в исходный код" логин и пароль (admin; admin)-удалены
- [x] В веб-интерфейсе, реализована возможность смены логина и пароля для авторизации в нём, при этом логин и пароль (по умолчанию admin; admin) храни в скрытом файле ".credentials", расположенном в каталоге "futriis" - [x] В веб-интерфейсе, реализована возможность смены логина и пароля для авторизации в нём, при этом логин и пароль (по умолчанию admin; admin) храни в скрытом файле ".credentials", расположенном в каталоге "futriix"
- [x] В файле "/internal/compression/compression.go" заменена библиотека "lz4" на альтернативную, которая имеет стандартное версионирование на "GitHub" - [x] В файле "/internal/compression/compression.go" заменена библиотека "lz4" на альтернативную, которая имеет стандартное версионирование на "GitHub"
- [x] В веб-интерфейс добавлена возможность читать файл логов "futriis.log", в котором отображаются все операции, выполненные в веб-интерфейсе за сеанс (например, создана база данных, или удалена коллекция), включая те операции, которые не были выполнены в виду какой-либо ошибки - [x] В веб-интерфейс добавлена возможность читать файл логов "futriix.log", в котором отображаются все операции, выполненные в веб-интерфейсе за сеанс (например, создана база данных, или удалена коллекция), включая те операции, которые не были выполнены в виду какой-либо ошибки
- [x] В веб-интерфейсе, добавлена возможность добавления нового пользователя администратора, данные которого (логин и пароль) будут хранится в скрытом файле ".credentionals", расположенном в каталоге "futriis". - [x] В веб-интерфейсе, добавлена возможность добавления нового пользователя администратора, данные которого (логин и пароль) будут хранится в скрытом файле ".credentionals", расположенном в каталоге "futriix".
- [x] В веб-интерфейсе, добавлена возможность управлять плагинами (включать, отключать) - [x] В веб-интерфейсе, добавлена возможность управлять плагинами (включать, отключать)
- [x] Скрипты сборки "build.sh" и "vendor_build.sh" переписаны таким образом, чтобы проект не зависел от компилятора "gcc", т.е. напиши реализацию так чтобы его не нужно было устанавливать отдельно в операционной системе "OpenIndiana Hipster" - [x] Скрипты сборки "build.sh" и "vendor_build.sh" переписаны таким образом, чтобы проект не зависел от компилятора "gcc", т.е. напиши реализацию так чтобы его не нужно было устанавливать отдельно в операционной системе "OpenIndiana Hipster"
- [x] Библиотека "raft-boltdb" заменена на встроенное файловое хранилище - [x] Библиотека "raft-boltdb" заменена на встроенное файловое хранилище
@@ -988,5 +988,3 @@ futriiS:~> doc compression employees 550e8400-e29b-41d4-a716-446655440000
Григорий Сафронов - [E-mail](gvsafronov@yandex.ru) Григорий Сафронов - [E-mail](gvsafronov@yandex.ru)
<p align="right">(<a href="#readme-top">К началу</a>)</p> <p align="right">(<a href="#readme-top">К началу</a>)</p>