Add a bit more precision to docs, plus philosophy
This commit is contained in:
11
design.md
11
design.md
@@ -22,10 +22,20 @@ WeaselDB is a high-performance write-side database component designed for system
|
||||
- **Ultra-fast arena allocation** (~1ns vs ~20-270ns for malloc)
|
||||
- **High-performance JSON parsing** with streaming support and SIMD optimization
|
||||
- **Multi-threaded networking** using multiple epoll instances with unified I/O thread pool
|
||||
- **Multi-stage commit pipeline** with serial processing for consistency and parallel I/O for performance
|
||||
- **Non-blocking metrics system** with try-lock optimization preventing pipeline stalls
|
||||
- **Configurable epoll instances** to eliminate kernel-level contention
|
||||
- **Optimized memory management** with arena allocation and efficient copying
|
||||
- **Factory pattern safety** ensuring correct object lifecycle management
|
||||
|
||||
### Design Philosophy
|
||||
|
||||
**"Two machines once you've mastered one"** - Optimize aggressively for single-machine performance before distributing. Most systems prematurely scale horizontally and never fully utilize their hardware. How are you supposed to horizontally scale strict serializability anyway?
|
||||
|
||||
**Boring formats, fast implementations** - Use standard data formats (JSON, HTTP, base64) with heavily optimized parsing. Universal compatibility without sacrificing performance.
|
||||
|
||||
**Read/write separation** - Fan out reads from the single write stream (persist stage to many subscribers), with true horizontal scaling via S3 for historical data. Keep writes simple and fast.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
## Quick Start
|
||||
@@ -359,6 +369,7 @@ See [style.md](style.md) for comprehensive C++ coding standards and conventions.
|
||||
- **CPU**: Perfect hashing and SIMD operations are critical paths - avoid alternatives
|
||||
- **I/O**: Streaming parser design supports incremental network data processing
|
||||
- **Cache**: String views avoid copying, keeping data cache-friendly
|
||||
- **Pipeline**: Serial stages must never block - only parallel release stage can take locks
|
||||
|
||||
### Configuration & Testing
|
||||
|
||||
|
||||
Reference in New Issue
Block a user