Update README.md
This commit is contained in:
196
README.md
196
README.md
@@ -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>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user