Update README.md

This commit is contained in:
2026-05-20 21:01:54 +00:00
parent fd2dee1150
commit 1439b62ec4

View File

@@ -128,7 +128,7 @@ futriix - это легковесная, распределённая, испо
1. Клонируйте репозиторий:
```bash
$ git clone https://github.com/futriix/db.git
$ git clone https://github.com/futriix/futriix.git
$ cd futriix
```
@@ -262,6 +262,8 @@ futriix:~> drop database test
## CRUD операции
В субд futriix поддерживаются MongoDB-подобный синтаксис для команд работы с документами: db.collection.insert(), find(), update(), delete(). Операции выполняются wait-free с использованием атомарных sync.Map, поддерживают автоматическую генерацию _id и валидацию схемы.
```sh
# Создание новой базы данных
futriix:~> create database company
@@ -368,6 +370,8 @@ Collection 'employees' has 2 document(s)
## Индексы
Futriix поддерживает первичные (по _id) и вторичные индексы, хранящиеся отдельно от документов. Также в нём присутствуют уникальные и составные индексы, поиск по точному значению и префиксу, а кроме того автоматическое обновление индексов при изменениях документов.
```sh
# Создание обычного индекса
futriix:~> create index employees name_idx name
@@ -398,6 +402,8 @@ futriix:~> drop index employees dept_age_idx
## Транзакции
В субд реализована полноценная поддержка ACID-транзакций с MVCC (Multi-Version Concurrency Control) и WAL (Write-Ahead Logging). Доступны команды startSession(), startTransaction(), commitTransaction(), abortTransaction() с восстановлением после сбоев через журнал предзаписи.
```sh
# Начало сессии
futriix:~> db.startSession()
@@ -434,6 +440,8 @@ futriix:~> session.abortTransaction()
## Кластеризация и шардинг
Субд `futriix` является распределённой субд. Распределённый кластер реализован на основе Raft-консенсуса с автоматическими выборами лидера. Поддерживаются одноузловой и многокластерный режимы, репликация данных (синхронная/асинхронная), мастер-мастер репликация и health-мониторинг узлов.
```sh
# Просмотр статуса кластера
futriix:~> status
@@ -463,6 +471,8 @@ futriix:~> nodes
## Ограничения
В субд `futriix` также как и в традиционных субд, есть механизм **Ограничений (Constraints)**. Ограничения на уровне коллекции поддерживаются: обязательные поля (required), уникальность (unique), минимальные/максимальные значения (min/max), regex-паттерны и enum-списки допустимых значений. Все ограничения проверяются автоматически при вставке и обновлении документов.
```sh
# Добавление обязательного поля
futriix:~> add required employees email
@@ -489,6 +499,8 @@ futriix:~> add enum employees status active,inactive,on_leave
## Импорт-Экспорт
Для создания бекапов, в субд существуют команды `export` и `import`, позволяющие выгружать/загружать целые базы данных в формате **MessagePack**. Экспорт сохраняет документы с метаданными (версии, временные метки), импорт поддерживает пропуск существующих документов и детальную статистику.
```sh
# Экспорт базы данных в файл MessagePack
futriix:~> export "company" "company_backup.msgpack"
@@ -519,6 +531,8 @@ Created database 'company_restore'
## Lua-плагины
Для расширения функциональных возможностей субд **без изменения её исхожного кода**, в futriix была реализована система расширения функциональности через Lua-скрипты с изолированным окружением. Плагины имеют доступ к БД, транзакциям, триггерам, могут логировать события и взаимодействовать через событийную шину, а также они доступны в веб-интерфейсе.
```sh
# Просмотр информации о системе плагинов
futriix:~> plugin status
@@ -724,6 +738,8 @@ curl -X POST http://localhost:8080/api/plugin/call \
## ACL
В futriix реализована многоуровневая система контроля доступа с аутентификацией по сессиям. В ней поддерживаются следующие роли (read, write, delete, admin) с гранулярным контролем на уровне базы данных и коллекции.
```sh
# Вход в систему
futriix:~> acl login admin admin
@@ -764,6 +780,8 @@ futriix:~> acl grant employees admin rwda
## HTTP API
RESTful API для всех операций с поддержкой CORS и аутентификации через X-Session-ID. Доступны endpoints: CRUD (/api/db/{db}/{collection}), управление индексами (/api/index/), ACL (/api/acl/), ограничениями (/api/constraint/) и кластером (/api/cluster/).
```sh
# Аутентификация
curl -X POST http://localhost:8080/api/auth/login \
@@ -839,6 +857,8 @@ curl -X POST http://localhost:8080/api/trigger/company/employees/create \
## Триггеры
**Триггер**— это действие в базе данных, автоматически запускаемое при добавлении, изменении или удалении записи. Чаще всего триггеры нужны для математических вычислений. В субд `futriix` реализация триггеров выполнена в стиле MongoDB с событиями BEFORE/AFTER INSERT/UPDATE/DELETE/REPLACE. Поддерживаются условия (eq, gt, regex, in, exists) и действия (abort, modify, skip, log, notify) с возможностью модификации документа.
```sh
# Создание триггера для логирования вставок
futriix:~> create trigger employees audit_log AFTER_INSERT log