Update README.md
This commit is contained in:
22
README.md
22
README.md
@@ -128,7 +128,7 @@ futriix - это легковесная, распределённая, испо
|
|||||||
1. Клонируйте репозиторий:
|
1. Клонируйте репозиторий:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ git clone https://github.com/futriix/db.git
|
$ git clone https://github.com/futriix/futriix.git
|
||||||
$ cd futriix
|
$ cd futriix
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -262,6 +262,8 @@ futriix:~> drop database test
|
|||||||
|
|
||||||
## CRUD операции
|
## CRUD операции
|
||||||
|
|
||||||
|
В субд futriix поддерживаются MongoDB-подобный синтаксис для команд работы с документами: db.collection.insert(), find(), update(), delete(). Операции выполняются wait-free с использованием атомарных sync.Map, поддерживают автоматическую генерацию _id и валидацию схемы.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Создание новой базы данных
|
# Создание новой базы данных
|
||||||
futriix:~> create database company
|
futriix:~> create database company
|
||||||
@@ -368,6 +370,8 @@ Collection 'employees' has 2 document(s)
|
|||||||
|
|
||||||
## Индексы
|
## Индексы
|
||||||
|
|
||||||
|
Futriix поддерживает первичные (по _id) и вторичные индексы, хранящиеся отдельно от документов. Также в нём присутствуют уникальные и составные индексы, поиск по точному значению и префиксу, а кроме того автоматическое обновление индексов при изменениях документов.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Создание обычного индекса
|
# Создание обычного индекса
|
||||||
futriix:~> create index employees name_idx name
|
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
|
```sh
|
||||||
# Начало сессии
|
# Начало сессии
|
||||||
futriix:~> db.startSession()
|
futriix:~> db.startSession()
|
||||||
@@ -434,6 +440,8 @@ futriix:~> session.abortTransaction()
|
|||||||
|
|
||||||
## Кластеризация и шардинг
|
## Кластеризация и шардинг
|
||||||
|
|
||||||
|
Субд `futriix` является распределённой субд. Распределённый кластер реализован на основе Raft-консенсуса с автоматическими выборами лидера. Поддерживаются одноузловой и многокластерный режимы, репликация данных (синхронная/асинхронная), мастер-мастер репликация и health-мониторинг узлов.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Просмотр статуса кластера
|
# Просмотр статуса кластера
|
||||||
futriix:~> status
|
futriix:~> status
|
||||||
@@ -463,6 +471,8 @@ futriix:~> nodes
|
|||||||
|
|
||||||
## Ограничения
|
## Ограничения
|
||||||
|
|
||||||
|
В субд `futriix` также как и в традиционных субд, есть механизм **Ограничений (Constraints)**. Ограничения на уровне коллекции поддерживаются: обязательные поля (required), уникальность (unique), минимальные/максимальные значения (min/max), regex-паттерны и enum-списки допустимых значений. Все ограничения проверяются автоматически при вставке и обновлении документов.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Добавление обязательного поля
|
# Добавление обязательного поля
|
||||||
futriix:~> add required employees email
|
futriix:~> add required employees email
|
||||||
@@ -489,6 +499,8 @@ futriix:~> add enum employees status active,inactive,on_leave
|
|||||||
|
|
||||||
## Импорт-Экспорт
|
## Импорт-Экспорт
|
||||||
|
|
||||||
|
Для создания бекапов, в субд существуют команды `export` и `import`, позволяющие выгружать/загружать целые базы данных в формате **MessagePack**. Экспорт сохраняет документы с метаданными (версии, временные метки), импорт поддерживает пропуск существующих документов и детальную статистику.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Экспорт базы данных в файл MessagePack
|
# Экспорт базы данных в файл MessagePack
|
||||||
futriix:~> export "company" "company_backup.msgpack"
|
futriix:~> export "company" "company_backup.msgpack"
|
||||||
@@ -519,6 +531,8 @@ Created database 'company_restore'
|
|||||||
|
|
||||||
## Lua-плагины
|
## Lua-плагины
|
||||||
|
|
||||||
|
Для расширения функциональных возможностей субд **без изменения её исхожного кода**, в futriix была реализована система расширения функциональности через Lua-скрипты с изолированным окружением. Плагины имеют доступ к БД, транзакциям, триггерам, могут логировать события и взаимодействовать через событийную шину, а также они доступны в веб-интерфейсе.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Просмотр информации о системе плагинов
|
# Просмотр информации о системе плагинов
|
||||||
futriix:~> plugin status
|
futriix:~> plugin status
|
||||||
@@ -724,6 +738,8 @@ curl -X POST http://localhost:8080/api/plugin/call \
|
|||||||
|
|
||||||
## ACL
|
## ACL
|
||||||
|
|
||||||
|
В futriix реализована многоуровневая система контроля доступа с аутентификацией по сессиям. В ней поддерживаются следующие роли (read, write, delete, admin) с гранулярным контролем на уровне базы данных и коллекции.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Вход в систему
|
# Вход в систему
|
||||||
futriix:~> acl login admin admin
|
futriix:~> acl login admin admin
|
||||||
@@ -764,6 +780,8 @@ futriix:~> acl grant employees admin rwda
|
|||||||
|
|
||||||
## HTTP API
|
## HTTP API
|
||||||
|
|
||||||
|
RESTful API для всех операций с поддержкой CORS и аутентификации через X-Session-ID. Доступны endpoints: CRUD (/api/db/{db}/{collection}), управление индексами (/api/index/), ACL (/api/acl/), ограничениями (/api/constraint/) и кластером (/api/cluster/).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Аутентификация
|
# Аутентификация
|
||||||
curl -X POST http://localhost:8080/api/auth/login \
|
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
|
```sh
|
||||||
# Создание триггера для логирования вставок
|
# Создание триггера для логирования вставок
|
||||||
futriix:~> create trigger employees audit_log AFTER_INSERT log
|
futriix:~> create trigger employees audit_log AFTER_INSERT log
|
||||||
|
|||||||
Reference in New Issue
Block a user