Update README.md
This commit is contained in:
22
README.md
22
README.md
@@ -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 (Multi‑Version Concurrency Control) — для локальной атомарности и изоляции на уровне отдельных узлов кластера. Для распределённых операций используется паттерн SAGA с оркестратором: глобальная согласованность достигается через последовательность компенсируемых локальных транзакций, управляемых централизованным оркестратором, который отслеживает состояние шагов, инициирует компенсацию при сбоях и гарантирует завершение сценария в согласованном состоянии.
|
||||
|
||||
Парадигма eventual consistency обеспечивает согласованность данных в распределённой среде: изменения распространяются асинхронно между узлами, а финальное согласованное состояние достигается со временем с учётом гарантий доставки событий и правил разрешения конфликтов. Такой подход позволяет сохранить высокую доступность и производительность даже при временных сетевых сбоях.
|
||||
|
||||
Доступны команды, с восстановлением после сбоев через журнал предзаписи:
|
||||
|
||||
* `startSession()`- Начать сессию (устойчивый контекст взаимодействия клиента с СУБД, в рамках которого поддерживается состояние) в субд в рамках которой будет открыта транзакция
|
||||
* `startTransaction()`- Начать транзакцию
|
||||
* `commitTransaction()`- Сделать коммит транзакцию
|
||||
* `abortTransaction()` - Прервать транзакцию
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Матрица гарантий согласованности** <br>
|
||||
@@ -787,11 +799,11 @@ futriix:~> db.startSession()
|
||||
> [!TIP]
|
||||
> **Кроме того существуют так называемые **Периодические снимки состояния** журнала предзаписи, которые выполняют следующие функции:**
|
||||
> 1. Фиксируют состояние всех активных транзакций на момент создания
|
||||
> 2. Создаются автоматически каждые 5 минут (300 секунд)
|
||||
> 3. Именуются по маске: futriis.wal.checkpoint.{timestamp}
|
||||
> 2. Создаются автоматически каждые **5 минут (300 секунд)**
|
||||
> 3. Именуются по маске: `futriis.wal.checkpoint.{timestamp}`
|
||||
> 4. Хранят сжатое состояние: последний LSN + активные транзакции
|
||||
> 5. Автоматически очищаются: остаётся только 5 последних чекпоинтов
|
||||
> 6. Расположение: /futriix/wal.checkpoint.wal (несколько файлов файл)
|
||||
> 6. Расположение: `/futriix/wal.checkpoint.wal` (несколько файлов файл)
|
||||
> **Подводя итог, хочется отметить следующее: журнал предзаписи транзакций и периодические снимки состояния работают следующим образом:**
|
||||
> 1. Штатная работа: WAL пишет каждую транзакцию
|
||||
> 2. Периодически: создаётся checkpoint (снимок активных транзакций)
|
||||
|
||||
Reference in New Issue
Block a user