Update README.md

This commit is contained in:
2026-07-17 18:59:39 +00:00
parent 2ddff94e0f
commit 28f7220c30

View File

@@ -731,8 +731,20 @@ futriix:~> db.startSession()
## Транзакции ## Транзакции
В субд **futriix** для обеспечения надёжности (durability) и быстрого восстановления бд из резевной копии, реализована полноценная поддержка WAL (Write-Ahead Logging). Журнал WAL по умолчанию хранится в файле **futriix.wal**, находящимся в каталоге **futriix**, а также поддержка ACID-транзакций с MVCC (Multi-Version Concurrency Control). Алиса
Доступны команды startSession(), startTransaction(), commitTransaction(), abortTransaction() с восстановлением после сбоев через журнал предзаписи.
В СУБД **futriix** для обеспечения надёжности (durability) и быстрого восстановления БД из резервной копии реализована полноценная поддержка WAL (Write-Ahead Logging). Журнал WAL по умолчанию хранится в файле futriix.wal, находящемся в каталоге futriix.
СУБД поддерживает ACIDтранзакции с MVCC (MultiVersion Concurrency Control) — для локальной атомарности и изоляции на уровне отдельных узлов кластера. Для распределённых операций используется паттерн SAGA с оркестратором: глобальная согласованность достигается через последовательность компенсируемых локальных транзакций, управляемых централизованным оркестратором, который отслеживает состояние шагов, инициирует компенсацию при сбоях и гарантирует завершение сценария в согласованном состоянии.
Парадигма eventual consistency обеспечивает согласованность данных в распределённой среде: изменения распространяются асинхронно между узлами, а финальное согласованное состояние достигается со временем с учётом гарантий доставки событий и правил разрешения конфликтов. Такой подход позволяет сохранить высокую доступность и производительность даже при временных сетевых сбоях.
Доступны команды, с восстановлением после сбоев через журнал предзаписи:
* `startSession()`- Начать сессию (устойчивый контекст взаимодействия клиента с СУБД, в рамках которого поддерживается состояние) в субд в рамках которой будет открыта транзакция
* `startTransaction()`- Начать транзакцию
* `commitTransaction()`- Сделать коммит транзакцию
* `abortTransaction()` - Прервать транзакцию
> [!IMPORTANT] > [!IMPORTANT]
> **Матрица гарантий согласованности** <br> > **Матрица гарантий согласованности** <br>
@@ -787,11 +799,11 @@ futriix:~> db.startSession()
> [!TIP] > [!TIP]
> **Кроме того существуют так называемые **Периодические снимки состояния** журнала предзаписи, которые выполняют следующие функции:** > **Кроме того существуют так называемые **Периодические снимки состояния** журнала предзаписи, которые выполняют следующие функции:**
> 1. Фиксируют состояние всех активных транзакций на момент создания > 1. Фиксируют состояние всех активных транзакций на момент создания
> 2. Создаются автоматически каждые 5 минут (300 секунд) > 2. Создаются автоматически каждые **5 минут (300 секунд)**
> 3. Именуются по маске: futriis.wal.checkpoint.{timestamp} > 3. Именуются по маске: `futriis.wal.checkpoint.{timestamp}`
> 4. Хранят сжатое состояние: последний LSN + активные транзакции > 4. Хранят сжатое состояние: последний LSN + активные транзакции
> 5. Автоматически очищаются: остаётся только 5 последних чекпоинтов > 5. Автоматически очищаются: остаётся только 5 последних чекпоинтов
> 6. Расположение: /futriix/wal.checkpoint.wal (несколько файлов файл) > 6. Расположение: `/futriix/wal.checkpoint.wal` (несколько файлов файл)
> **Подводя итог, хочется отметить следующее: журнал предзаписи транзакций и периодические снимки состояния работают следующим образом:** > **Подводя итог, хочется отметить следующее: журнал предзаписи транзакций и периодические снимки состояния работают следующим образом:**
> 1. Штатная работа: WAL пишет каждую транзакцию > 1. Штатная работа: WAL пишет каждую транзакцию
> 2. Периодически: создаётся checkpoint (снимок активных транзакций) > 2. Периодически: создаётся checkpoint (снимок активных транзакций)