Smartbotic Database
Build
cmake -B build -G Ninja
cmake --build build -j$(nproc)
Test
cmake --build build -j$(nproc) && ./build/tests/test_vector_storage
Architecture
proto/database.proto — gRPC service and message definitions
service/src/ — Database server implementation
memory_store.hpp/.cpp — In-memory document + vector storage
document.hpp — Document and CollectionOptions types
database_grpc_impl.cpp — gRPC request handlers
persistence/ — WAL, snapshots, persistence manager
migrations/ — Migration runner
client/ — C++ client library (smartbotic-db-client)
tests/ — Integration tests
Key Features
- JSON document store with collections, version history, field-level encryption
- gRPC API with replication, events, file storage, migrations
- Vector Storage — Embedding vectors stored alongside documents with SIMD-accelerated (AVX2/SSE4.1) cosine similarity search via
SimilaritySearch RPC. Vectors use _vector document field, stored in parallel float arrays, persisted through WAL (VEC_PUT/VEC_DELETE) and snapshots (v3 format). Collection vector_dimension option is immutable after creation.
Conventions
- C++20
- nlohmann/json for JSON handling
- spdlog for logging
- LZ4 for compression
- gRPC/Protobuf for API