-
Notifications
You must be signed in to change notification settings - Fork 1
README.docker
ThemisDB is a high-performance multi-model database combining Graph, Relational, Vector, Document, Geospatial, and Time-Series capabilities in a unified system. Built with C++20 on a LSM-tree foundation (RocksDB) with enterprise-grade security and AI/ML integration.
# Pull and run ThemisDB
docker pull themisdb/themisdb:latest
docker run -d \
--name themisdb \
-p 8765:8765 \
-v themisdb-data:/var/lib/themisdb/data \
themisdb/themisdb:latest
# Access the API
curl http://localhost:8765/health| Tag | Description | Architectures | Use Case |
|---|---|---|---|
latest |
Latest stable release | amd64, arm64 | Production deployments |
1.0.0 |
Specific version v1.0.0 | amd64, arm64 | Version pinning |
1.0 |
Latest patch in 1.0.x | amd64, arm64 | Minor version tracking |
| Tag | Description | Architecture | Use Case |
|---|---|---|---|
qnap |
QNAP NAS optimized (Ubuntu 20.04) | amd64 | QNAP Container Station |
1.0.0-qnap |
QNAP-specific v1.0.0 | amd64 | QNAP version pinning |
rpi |
Raspberry Pi optimized | arm64 | Raspberry Pi 4/5 |
1.0.0-rpi |
Raspberry Pi v1.0.0 | arm64 | Raspberry Pi version pinning |
- Graph Model - Vertices, edges, property graphs with Cypher-like queries
- Relational Model - Tables, schemas, SQL-style queries, JOINs
- Vector Model - HNSW index for semantic search with SIMD optimization
- Document Model - JSON documents with flexible schemas (RocksDB)
- Geospatial - GeoJSON, R-tree indexing, spatial queries
- Time-Series - Temporal data with retention policies
- Property Graphs - Vertices and edges with rich attributes
- Pattern Matching - Cypher-like graph traversal queries
- Relationship Navigation - Multi-hop queries and path finding
- Graph Analytics - PageRank, community detection, centrality
- HNSW Index - Fast approximate nearest neighbor search
- Multiple Metrics - Euclidean, Cosine, Inner Product
- SIMD Optimized - Hardware-accelerated distance computations
- Hybrid Queries - Combine vector search with filters and geo
- Schema Support - Typed columns with constraints
- SQL-like Queries - AQL (Advanced Query Language)
- Transactions - ACID compliance with MVCC
- Indexes - B-tree and hash indexes for fast lookups
- Encryption at Rest - AES-256-GCM
- Encryption in Transit - TLS 1.3
- PII Detection - Automatic sensitive data masking
- Audit Logging - Comprehensive activity tracking
- Content Policies - DLP and governance
- OpenAI API - Direct embedding generation
- Cohere Support - Multi-model compatibility
- Hot Reload - Zero-downtime ML model updates
- Semantic Cache - Reduce API costs
version: '3.8'
services:
themisdb:
image: themisdb/themisdb:latest
container_name: themisdb
ports:
- "8765:8765"
volumes:
- themisdb-data:/var/lib/themisdb/data
- ./config:/etc/themisdb/config:ro
environment:
- THEMIS_LOG_LEVEL=info
- THEMIS_ENABLE_METRICS=true
- THEMIS_UPDATE_CHECK_ENABLED=true
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8765/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
themisdb-data:| Variable | Default | Description |
|---|---|---|
THEMIS_LOG_LEVEL |
info |
Logging level (debug, info, warn, error) |
THEMIS_DATA_DIR |
/var/lib/themisdb/data |
Data directory path |
THEMIS_PORT |
8765 |
HTTP server port |
THEMIS_ENABLE_METRICS |
false |
Enable Prometheus metrics |
THEMIS_UPDATE_CHECK_ENABLED |
true |
Enable version update checks |
THEMIS_GITHUB_API_TOKEN |
- | GitHub token for update checks |
# Data directory (persistent storage)
-v themisdb-data:/var/lib/themisdb/data
# Configuration files
-v ./config:/etc/themisdb/config:ro
# Logs (optional)
-v ./logs:/var/log/themisdb# Create vertex
curl -X POST http://localhost:8765/api/graph/vertices \
-H "Content-Type: application/json" \
-d '{"id": "person:alice", "properties": {"name": "Alice", "age": 30}}'
# Create edge
curl -X POST http://localhost:8765/api/graph/edges \
-H "Content-Type: application/json" \
-d '{"from": "person:alice", "to": "person:bob", "type": "knows"}'
# Graph traversal
curl -X POST http://localhost:8765/api/graph/query \
-H "Content-Type: application/json" \
-d '{"start": "person:alice", "pattern": "()-[:knows*1..3]->()"}'# Query with AQL
curl -X POST http://localhost:8765/api/query \
-H "Content-Type: application/json" \
-d '{
"query": "SELECT name, age FROM users WHERE age > 25 ORDER BY age"
}'curl -X POST http://localhost:8765/api/search/vector \
-H "Content-Type: application/json" \
-d '{
"query_vector": [0.1, 0.2, 0.3, ...],
"top_k": 10,
"filter": {"category": "AI"}
}'curl -X POST http://localhost:8765/api/search/geo \
-H "Content-Type: application/json" \
-d '{
"center": {"lat": 52.52, "lon": 13.405},
"radius_km": 5.0,
"limit": 20
}'# Graph + Vector + Geo combined
curl -X POST http://localhost:8765/api/search/hybrid \
-H "Content-Type: application/json" \
-d '{
"graph_pattern": "()-[:located_in]->(city)",
"query_vector": [0.1, 0.2, ...],
"geo_filter": {"center": {"lat": 52.52, "lon": 13.405}, "radius_km": 10},
"top_k": 5
}'curl http://localhost:8765/healthcurl http://localhost:8765/metricscurl http://localhost:8765/api/updates┌─────────────────────────────────────────────────────────┐
│ HTTP Server (Port 8765) │
├─────────────────────────────────────────────────────────┤
│ REST API │ GraphQL │ WebSocket │ gRPC │ Cypher Query │
├─────────────────────────────────────────────────────────┤
│ Multi-Model Query Engine │
│ ┌──────────┬──────────┬─────────┬──────────┬─────────┐ │
│ │ Graph │Relational│ Vector │ Geo │TimeSeries│ │
│ │ Engine │ Engine │ Engine │ Engine │ Engine │ │
│ │(Property)│ (AQL) │ (HNSW) │ (R-tree) │(Retention)│ │
│ └──────────┴──────────┴─────────┴──────────┴─────────┘ │
├─────────────────────────────────────────────────────────┤
│ Unified Storage Layer (RocksDB + MVCC) │
│ LSM-Tree with Column Families │
├─────────────────────────────────────────────────────────┤
│ Security & Compliance Layer │
│ Encryption │ PII Detection │ Audit Log │ Compression │
│ (AES-256) │ (Regex + ML) │ (Append) │ (Zstd/LZ4) │
└─────────────────────────────────────────────────────────┘
- Knowledge Graphs - Organizational data with relationships and context
- Master Data Management - Unified view across relational and graph data
- Fraud Detection - Graph pattern matching + vector anomaly detection
- Customer 360 - Multi-model customer profiles (graph + relational + time-series)
- RAG Systems - Retrieval-Augmented Generation with vector + graph context
- Semantic Search - Document retrieval with embeddings and knowledge graphs
- Recommendation Engines - Graph-based recommendations with vector similarity
- Content Discovery - Multi-modal search (text, images, relationships)
- Location Intelligence - Geo + graph + time-series analysis
- Smart Cities - Infrastructure monitoring with spatial and temporal data
- Fleet Management - Real-time tracking with route optimization
- IoT Analytics - Sensor networks with geospatial context
For QNAP NAS users, use the optimized image:
# Pull QNAP-optimized image
docker pull themisdb/themisdb:qnap
# Run on QNAP Container Station
docker run -d \
--name themisdb \
-p 8765:8765 \
-v /share/Container/themisdb:/var/lib/themisdb/data \
themisdb/themisdb:qnapFor Raspberry Pi 4/5 users (64-bit OS required):
# Pull Raspberry Pi-optimized image
docker pull themisdb/themisdb:rpi
# Run on Raspberry Pi
docker run -d \
--name themisdb \
-p 8765:8765 \
-v themisdb-data:/var/lib/themisdb/data \
themisdb/themisdb:rpiSystem Requirements:
- Raspberry Pi 4 or 5 (4GB+ RAM recommended)
- Raspberry Pi OS 64-bit (Bullseye or Bookworm)
- Docker installed (
curl -sSL https://get.docker.com | sh)
ThemisDB Docker images support multiple architectures:
| Architecture | Supported Images | Typical Hardware |
|---|---|---|
amd64 |
latest, qnap
|
x86_64 servers, desktops, QNAP NAS |
arm64 |
latest, rpi
|
Raspberry Pi 4/5, ARM servers, Apple Silicon |
The latest tag automatically selects the correct architecture for your system.
Build Docker images locally using the hybrid pre-built binary approach:
# Build Docker image with existing binary
.\docker-build.ps1
# Build specific variant
.\docker-build.ps1 -Variant qnap # QNAP only
.\docker-build.ps1 -Variant standard # Standard
# Build with specific version
.\docker-build.ps1 -Version 1.0.1
# Build and push to registry
.\docker-build.ps1 -Push# Build Docker image with existing binary
./docker-build.sh
# Build specific variant
./docker-build.sh -b qnap # QNAP only
./docker-build.sh -b standard # Standard
# Build with specific version
./docker-build.sh -v 1.0.1
# Build and push to registry
./docker-build.sh --push| Variant | Dockerfile | Base | Use Case |
|---|---|---|---|
standard |
Dockerfile.simple |
Ubuntu 24.04 | General use, Servers, Desktop |
qnap |
Dockerfile.simple |
Ubuntu 24.04 | QNAP NAS (monolithic binary) |
- GitHub Repository: https://github.com/makr-code/ThemisDB
- API Documentation: https://github.com/makr-code/ThemisDB/tree/main/docs/apis
- Configuration Guide: https://github.com/makr-code/ThemisDB/blob/main/docs/guides/configuration.md
- Deployment Guide: https://github.com/makr-code/ThemisDB/blob/main/docs/deployment/deployment_strategy.md
- Release Notes: https://github.com/makr-code/ThemisDB/releases
- Report Bugs: https://github.com/makr-code/ThemisDB/issues
- Feature Requests: https://github.com/makr-code/ThemisDB/discussions
- Security Issues: service@themisdb.org
ThemisDB is licensed under the MIT License. See LICENSE for details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Need help? Check the documentation or open an issue.
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap