From 1439b62ec45f2fec7696c8f41041c4683cc10305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=B8=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20=D0=A1?= =?UTF-8?q?=D0=B0=D1=84=D1=80=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Wed, 20 May 2026 21:01:54 +0000 Subject: [PATCH] Update README.md --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 93fdac3..dd550fc 100644 --- a/README.md +++ b/README.md @@ -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