c95bc4cd44
- Add mcp.md to: bg, fa, ru, tr, zh, ar - Add index.md to Bulgarian (bg) - Add 24 missing German (de) documentation files Translations for all supported languages now complete.
175 lines
4.7 KiB
Markdown
175 lines
4.7 KiB
Markdown
# BaraDB Performance-Leitfaden
|
||
|
||
## Benchmark-Methodik
|
||
|
||
Alle Benchmarks wurden ausgeführt mit:
|
||
- **Compiler**: Nim 2.2.0 mit `-d:release --opt:speed`
|
||
- **CPU**: AMD Ryzen 9 5900X (12 Kerne / 24 Threads)
|
||
- **Memory**: 64 GB DDR4-3600
|
||
- **Storage**: Samsung 980 Pro NVMe SSD
|
||
- **OS**: Ubuntu 24.04 LTS
|
||
|
||
Die vollständige Benchmark-Suite ausführen:
|
||
|
||
```bash
|
||
nim c -d:ssl -d:release -r benchmarks/bench_all.nim
|
||
```
|
||
|
||
## Storage Engine Benchmarks
|
||
|
||
### LSM-Tree Key-Value
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Write Throughput | ~580,000 ops/s |
|
||
| Read Throughput | ~720,000 ops/s |
|
||
| Durchschnittliche Write-Latenz | 1.7 µs |
|
||
| Durchschnittliche Read-Latenz | 1.4 µs |
|
||
| Testdatensatz | 100,000 Keys (16-Byte Keys, 64-Byte Values) |
|
||
|
||
Der LSM-Tree verwendet eine 64MB MemTable, WAL fsync bei jedem Write und size-tiered
|
||
Compaction mit 6 Levels.
|
||
|
||
### B-Tree Index
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Insert Throughput | ~1,200,000 ops/s |
|
||
| Point Lookup Throughput | ~1,500,000 ops/s |
|
||
| Range Scan (1000 Keys) | ~0.3 ms |
|
||
| Baumhöhe (100K Keys) | 4 |
|
||
|
||
B-Tree Knoten sind 4KB mit Copy-on-Write für MVCC-Kompatibilität.
|
||
|
||
## Vector Engine Benchmarks
|
||
|
||
### HNSW Index
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Insert (dim=128) | ~45,000 vectors/s |
|
||
| Search top-10 (dim=128, n=10K) | ~2 ms |
|
||
| Search top-10 (dim=128, n=100K) | ~8 ms |
|
||
| Speicher pro Vektor (dim=128) | ~580 bytes |
|
||
|
||
Parameter: `M=16`, `efConstruction=200`, `efSearch=64`.
|
||
|
||
### SIMD Distanzfunktionen
|
||
|
||
| Operation | dim=128 | dim=768 | dim=1536 |
|
||
|-----------|---------|---------|----------|
|
||
| Cosine Distance | 4.2M/s | 850K/s | 420K/s |
|
||
| L2 (Euclidean) | 4.5M/s | 920K/s | 450K/s |
|
||
| Dot Product | 4.8M/s | 980K/s | 480K/s |
|
||
|
||
SIMD verwendet AVX2 256-Bit Vektoren mit Loop Unrolling.
|
||
|
||
### Quantization
|
||
|
||
| Methode | Genauigkeitsverlust | Speicherreduzierung |
|
||
|---------|--------------------|--------------------|
|
||
| Scalar 8-bit | <1% | 4× |
|
||
| Scalar 4-bit | ~3% | 8× |
|
||
| Product Quantization (PQ16) | ~5% | 16× |
|
||
| Binary | ~15% | 32× |
|
||
|
||
## Full-Text Search Benchmarks
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Index Throughput | ~320,000 docs/s |
|
||
| BM25 Search | ~28,000 queries/s |
|
||
| Fuzzy Search (distance=2) | ~850 queries/s |
|
||
| Wildcard Regex Search | ~4,200 queries/s |
|
||
|
||
Testkorpus: 5 einzigartige Dokumente × 2,000 Wiederholungen (~50 Wörter/Dok).
|
||
|
||
## Graph Engine Benchmarks
|
||
|
||
| Operation | Throughput | Latenz |
|
||
|-----------|------------|--------|
|
||
| Knoten hinzufügen | ~2.5M ops/s | 0.4 µs |
|
||
| Kante hinzufügen | ~1.8M ops/s | 0.55 µs |
|
||
| BFS (1K Knoten, 5K Kanten) | ~12K Traversierungen/s | 83 µs |
|
||
| DFS (1K Knoten, 5K Kanten) | ~15K Traversierungen/s | 67 µs |
|
||
| Dijkstra kürzester Pfad | — | ~120 µs |
|
||
| PageRank (10 Iterationen) | ~450 Graphen/s | 2.2 ms |
|
||
| Louvain Community Detection | — | ~45 ms |
|
||
|
||
## Protokoll-Benchmarks
|
||
|
||
| Protokoll | Verbindungen | Queries/sec | Latenz p99 |
|
||
|-----------|--------------|-------------|------------|
|
||
| Binary (localhost) | 1 | 45,000 | 0.4 ms |
|
||
| Binary (localhost) | 100 | 380,000 | 1.2 ms |
|
||
| HTTP/REST | 1 | 12,000 | 2.1 ms |
|
||
| HTTP/REST | 100 | 95,000 | 5.8 ms |
|
||
| WebSocket | 1 | 18,000 | 1.8 ms |
|
||
|
||
## Query Engine Benchmarks
|
||
|
||
| Abfragetyp | Zeilen | Zeit |
|
||
|------------|--------|------|
|
||
| Simple SELECT | 100K | 12 ms |
|
||
| SELECT + WHERE | 100K | 18 ms |
|
||
| SELECT + ORDER BY | 100K | 35 ms |
|
||
| GROUP BY + Aggregates | 100K | 42 ms |
|
||
| INNER JOIN (1K × 1K) | 1M Ergebnis | 85 ms |
|
||
| CTE (2 Ebenen) | 100K | 28 ms |
|
||
| Subquery (EXISTS) | 100K | 22 ms |
|
||
|
||
## Skalierungsverhalten
|
||
|
||
### Vertikale Skalierung
|
||
|
||
| Kerne | LSM Write | LSM Read | Vector Search |
|
||
|-------|-----------|----------|---------------|
|
||
| 1 | 580K | 720K | 2.0 ms |
|
||
| 4 | 1.9M | 2.6M | 1.1 ms |
|
||
| 8 | 3.4M | 4.8M | 0.7 ms |
|
||
| 16 | 5.8M | 7.2M | 0.5 ms |
|
||
|
||
### Speicherverbrauch
|
||
|
||
| Komponente | Basis-Speicher | Pro-Entity Overhead |
|
||
|------------|----------------|---------------------|
|
||
| LSM MemTable | 64 MB (fest) | ~1.2× Rohdaten |
|
||
| B-Tree | 8 MB (fest) | ~8 bytes/Key |
|
||
| HNSW Index | — | ~580 bytes/Vektor (dim=128) |
|
||
| Graph | — | ~32 bytes/Knoten, ~24 bytes/Kante |
|
||
| FTS Index | — | ~40% von Rohtext |
|
||
| Page Cache | 256 MB (konfigurierbar) | — |
|
||
|
||
## Tuning-Leitfaden
|
||
|
||
### Für Write-intensive Workloads
|
||
|
||
```bash
|
||
export BARADB_MEMTABLE_SIZE_MB=256
|
||
export BARADB_WAL_SYNC_INTERVAL_MS=10
|
||
export BARADB_COMPACTION_INTERVAL_MS=30000
|
||
```
|
||
|
||
### Für Read-intensive Workloads
|
||
|
||
```bash
|
||
export BARADB_CACHE_SIZE_MB=1024
|
||
export BARADB_BLOOM_BITS_PER_KEY=10
|
||
export BARADB_COMPACTION_INTERVAL_MS=120000
|
||
```
|
||
|
||
### Für Vector Search
|
||
|
||
```bash
|
||
export BARADB_VECTOR_EF_CONSTRUCTION=200
|
||
export BARADB_VECTOR_EF_SEARCH=128
|
||
export BARADB_VECTOR_M=32
|
||
```
|
||
|
||
### Für Graph Analytics
|
||
|
||
```bash
|
||
export BARADB_GRAPH_PAGE_RANK_ITERATIONS=20
|
||
export BARADB_GRAPH_LOUVAIN_RESOLUTION=1.0
|
||
```
|