SDBQL query language
An ArangoDB-inspired language with FOR / FILTER / SORT, joins, upserts, common table expressions and prepared-statement caching.
SoliDB stores every shape your data takes and answers all of them with a single query language. Add live subscriptions, hybrid vector search, replication and sharding — from one self-contained binary.
sdb❯ FOR u IN usersFILTER u.plan == "pro" AND u.activeSORT u.created DESCLIMIT 3RETURN { name: u.name, seats: u.seats }
[
{ "name": "Aria Chen", "seats": 24 },
{ "name": "Devon Okoro", "seats": 12 },
{ "name": "Mira Solano", "seats": 8 }
]
One engine answers documents, graphs, vectors and time-series.
A document store, a graph engine, a vector index and a time-series layer usually mean four systems to run and keep in sync. SoliDB puts them behind one storage engine and one query language.
Schemaless JSON with secondary indexes.
Traversals & shortest-path over edges.
Nearest-neighbor similarity for embeddings.
TIME_BUCKET rollups & live windows.
LZ4-compressed columns for analytics.
Spatial indexes & distance queries.
Native binary storage with transforms.
Everything you'd otherwise assemble from a cache, a search cluster, a job runner and a message bus — built in and consistent.
An ArangoDB-inspired language with FOR / FILTER / SORT, joins, upserts, common table expressions and prepared-statement caching.
Subscribe to a query over a WebSocket and receive changes the moment they land. Build dashboards and collaborative UIs without a polling loop.
Store embeddings in a vector index and blend semantic similarity with fulltext relevance in a single HYBRID_SEARCH call.
Peer-to-peer replication, horizontal sharding with auto-rebalancing, and two-phase commit for ACID guarantees across nodes.
Embed Lua 5.4 for custom API endpoints, and run cron schedules and priority job queues with retries — right beside your data.
OpenTelemetry tracing, Prometheus metrics and replication-lag monitoring, with JWT auth, API keys and a built-in web dashboard.
The same FOR … RETURN shape walks a graph, ranks vectors, or rolls up a time series. Pick a tab.
# People Alice follows, up to two hops out FOR v, e IN 1..2 OUTBOUND 'people/alice' follows FILTER e.since > 2020 RETURN { person: v.name, since: e.since }
Edges are first-class: bind the vertex v and the edge e, filter on either, and let the traversal fan out breadth-first.
# Closest articles to a query embedding FOR doc IN articles LET sim = VECTOR_SIMILARITY(doc.embedding, @vec) FILTER sim > 0.8 SORT sim DESC LIMIT 10 RETURN { title: doc.title, score: sim }
Bind your query vector as @vec. A dedicated vector index keeps nearest-neighbor lookups fast as the collection grows.
# Semantic + keyword, fused into one ranking LET results = HYBRID_SEARCH( "articles", "embedding_idx", "content", @vec, "machine learning", { vector_weight: 0.8, text_weight: 0.2, limit: 5 } ) FOR result IN results RETURN result
One call over a vector index and a fulltext field. Tune the blend with weights, or switch to fusion: "rrf" for reciprocal-rank fusion.
# Requests per hour, newest last FOR e IN events COLLECT bucket = TIME_BUCKET(e.ts, '1h') AGGREGATE hits = COUNT(1) SORT bucket ASC RETURN { bucket, hits }
Group timestamps into fixed intervals — '1s', '1m', '1h', '1d' — and aggregate inline. Promote it to a CREATE STREAM for continuous rollups.
A MessagePack binary protocol for high-throughput clients, plus a plain
HTTP + JSON API when you just want curl.
Build from source and start the server — it comes up with the HTTP API and the web dashboard on port 6745. A random admin password is printed to the logs on first boot.
# clone & install $ git clone https://github.com/solisoft/solidb $ cd solidb && cargo install --path . # start the server $ solidb ✓ listening on http://localhost:6745 ✓ dashboard ready — admin password in logs
Documents to graphs, embeddings to events — model it once, query it one way, and skip the glue between four systems.