High-performance markdown database with gRPC/HTTP/3 - 29,810 docs/sec, 5.75x faster than MongoDB
10K+
The fastest markdown database with gRPC and HTTP/3 support
MDDB is a specialized, high-performance database server designed for storing and managing markdown documents with rich metadata, full revision history, and dual protocol support (HTTP/JSON + gRPC/Protobuf).
docker run -d \
--name mddb \
-p 11023:11023 \
-p 11024:11024 \
-v mddb-data:/data \
-e MDDB_PATH=/data/mddb.db \
-e MDDB_MODE=wr \
-e MDDB_EXTREME=true \
tradik/mddb:latest
version: '3.8'
services:
mddb:
image: tradik/mddb:latest
container_name: mddb-server
ports:
- "11023:11023" # HTTP
- "11024:11024" # gRPC
- "11443:11443" # HTTP/3 (extreme mode)
volumes:
- mddb-data:/data
environment:
- MDDB_PATH=/data/mddb.db
- MDDB_MODE=wr
- MDDB_EXTREME=true
- MDDB_HTTP_PORT=11023
- MDDB_GRPC_PORT=11024
- MDDB_HTTP3_PORT=11443
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11023/stats"]
interval: 30s
timeout: 10s
retries: 3
volumes:
mddb-data:
| Variable | Default | Description |
|---|---|---|
MDDB_PATH | /data/mddb.db | Database file path |
MDDB_MODE | wr | Mode: ro (read-only) or wr (read-write) |
MDDB_EXTREME | false | Enable extreme performance mode |
MDDB_HTTP_PORT | 11023 | HTTP server port |
MDDB_GRPC_PORT | 11024 | gRPC server port |
MDDB_HTTP3_PORT | 11443 | HTTP/3 server port (extreme mode) |
Enable with MDDB_EXTREME=true to activate:
latest - Latest stable release2.0.1, 2.0, 2 - Specific version tagsAll images support:
linux/amd64 (Intel/AMD x86_64)linux/arm64 (ARM/Apple Silicon aarch64)# Add a document
curl -X POST http://localhost:11023/add \
-H "Content-Type: application/json" \
-d '{
"collection": "docs",
"key": "welcome",
"lang": "en",
"meta": {
"title": {"values": ["Welcome"]},
"author": {"values": ["MDDB Team"]}
},
"content_md": "# Welcome to MDDB\n\nHigh-performance markdown database."
}'
# Get a document
curl http://localhost:11023/get/docs/welcome/en
# Search documents
curl -X POST http://localhost:11023/search \
-H "Content-Type: application/json" \
-d '{
"collection": "docs",
"filter_meta": {
"author": {"values": ["MDDB Team"]}
},
"limit": 10
}'
# Batch insert (high performance)
curl -X POST http://localhost:11023/batch \
-H "Content-Type: application/json" \
-d '{
"collection": "docs",
"documents": [
{
"key": "doc1",
"lang": "en",
"meta": {"title": {"values": ["Document 1"]}},
"content_md": "# Document 1"
},
{
"key": "doc2",
"lang": "en",
"meta": {"title": {"values": ["Document 2"]}},
"content_md": "# Document 2"
}
]
}'
# Get statistics
curl http://localhost:11023/stats
import (
"google.golang.org/grpc"
"mddb/proto"
)
conn, _ := grpc.Dial("localhost:11024", grpc.WithInsecure())
client := proto.NewMDDBClient(conn)
// Add document
doc, _ := client.Add(ctx, &proto.AddRequest{
Collection: "docs",
Key: "welcome",
Lang: "en",
Meta: map[string]*proto.MetaValues{
"title": {Values: []string{"Welcome"}},
},
ContentMd: "# Welcome to MDDB",
})
// Batch insert (high performance)
resp, _ := client.AddBatch(ctx, &proto.AddBatchRequest{
Collection: "docs",
Documents: []*proto.BatchDocument{
{
Key: "doc1",
Lang: "en",
Meta: map[string]*proto.MetaValues{
"title": {Values: []string{"Document 1"}},
},
ContentMd: "# Document 1",
},
// ... more documents
},
})
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Performance Layer โ
โ โข HTTP/3 Server (QUIC) โ
โ โข Lock-Free Cache (Sharded) โ
โ โข Batch Processor (Parallel + Single TX) โ
โ โข String Optimization (Zero-Copy) โ
โ โข Compression (Snappy + Zstd) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Protocol Layer โ
โ โข HTTP/JSON REST API โ
โ โข gRPC/Protobuf API โ
โ โข HTTP/3 (Extreme Mode) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Storage Layer โ
โ โข BoltDB (Embedded) โ
โ โข MVCC (Multi-Version Concurrency Control) โ
โ โข Adaptive Indexing โ
โ โข Revision History โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tested with 3,000 documents on identical hardware:
| Database | Throughput | Avg Latency | vs MDDB |
|---|---|---|---|
| MDDB (Batch) | 25,863 docs/s | 39ยตs | 1.00x |
| MongoDB | 5,452 docs/s | 182ยตs | 4.74x slower |
| PostgreSQL | 3,360 docs/s | 297ยตs | 7.69x slower |
| MySQL | 1,183 docs/s | 845ยตs | 21.86x slower |
| CouchDB | 310 docs/s | 3,201ยตs | 83.39x slower |
MDDB_MODE=ro)# Create named volume
docker volume create mddb-data
# Backup database
docker run --rm \
-v mddb-data:/data \
-v $(pwd)/backups:/backups \
tradik/mddb:latest \
cp /data/mddb.db /backups/mddb-backup-$(date +%Y%m%d).db
# Restore database
docker run --rm \
-v mddb-data:/data \
-v $(pwd)/backups:/backups \
tradik/mddb:latest \
cp /backups/mddb-backup-20250107.db /data/mddb.db
docker logs mddb
curl http://localhost:11023/stats
MDDB_EXTREME=trueMIT License - see LICENSEโ
Made with โค๏ธ by the MDDB Team
Star us on GitHubโ if you find MDDB useful!
Content type
Image
Digest
sha256:8fdc3fbe2โฆ
Size
35.5 MB
Last updated
9 days ago
docker pull tradik/mddb