Stand: 6. April 2026
Version: v1.3.0
Kategorie: 🧩 Architecture
- Übersicht
- Source-Code Referenz
- Implementierte Klassen
- Beispiel
- ACID-Garantien
- Write-Write Conflict Detection
- Verwandte Dokumentation
Das Transaction-Modul implementiert vollständige ACID-Transaktionen mit MVCC (Multi-Version Concurrency Control) für ThemisDB.
| Komponente | Header | Source | Beschreibung |
|---|---|---|---|
| TransactionManager | transaction_manager.h |
transaction_manager.cpp |
MVCC Manager |
| Transaction | transaction_manager.h |
transaction_manager.cpp |
Transaktions-Handle |
| Saga | saga.h |
saga.cpp |
Distributed Transactions |
Gesamt: 2 Header, 2 Source-Dateien, ~900 LOC
class TransactionManager {
using TransactionId = uint64_t;
struct Status {
bool ok;
std::string message;
static Status OK();
static Status Error(std::string msg);
};
// Begin Transaction
Transaction begin(IsolationLevel level = IsolationLevel::ReadCommitted);
// Statistics
size_t activeTransactionCount() const;
};class Transaction {
// Metadata
TransactionId getId() const;
IsolationLevel getIsolationLevel() const;
std::chrono::system_clock::time_point getStartTime() const;
uint64_t getDurationMs() const;
bool isFinished() const;
// Relational Operations
Status putEntity(std::string_view table, const BaseEntity& entity);
Status eraseEntity(std::string_view table, std::string_view pk);
// Graph Operations
Status addEdge(const BaseEntity& edgeEntity);
Status deleteEdge(std::string_view edgeId);
// Vector Operations
Status addVector(const BaseEntity& entity, vectorField = "embedding");
Status updateVector(const BaseEntity& entity, vectorField = "embedding");
Status removeVector(std::string_view pk);
// Commit/Rollback
Status commit();
Status rollback();
};enum class IsolationLevel {
ReadCommitted, // Default: nur committed data sichtbar
Snapshot // Snapshot Isolation (point-in-time consistency)
};TransactionManager tm(db, secIdx, graphIdx, vecIdx);
// Begin Transaction
auto txn = tm.begin(IsolationLevel::Snapshot);
// Multi-Model Operations
txn.putEntity("users", userEntity);
txn.addEdge(followsEdge);
txn.addVector(embeddingEntity);
// Commit
auto status = txn.commit();
if (!status.ok) {
// Automatic rollback on error
std::cerr << status.message << std::endl;
}| Property | Implementation |
|---|---|
| Atomicity | RocksDB WriteBatch (alle oder keine) |
| Consistency | Index-Updates in gleicher Batch |
| Isolation | MVCC mit Snapshot Isolation |
| Durability | WAL (Write-Ahead Log) |
// Bei Konflikt:
// - Transaction A: UPDATE users SET name='Alice' WHERE id=1
// - Transaction B: UPDATE users SET name='Bob' WHERE id=1
// → Transaction B wird mit CONFLICT abgebrochen wenn A zuerst committed- Features: Transactions - Feature-Details
- Architecture: MVCC - MVCC-Architektur
- Research: Git/GitHub/GitOps Vergleich - Vergleich zur Versionskontrolle