mrkeyoor.com_
Wed 16 Sept 09:13 UTC
Dataevaluationupdated 26 Aug 2026

surrealdb review

SurrealDB is a Rust database that stores relational, document, graph, time-series, geospatial, full-text, and vector data behind its own SQL-like language. It aims to replace several specialized stores and some API-layer code with one server or embedded engine, including live queries and row-level permissions.

+37stars / 7d
Verdict

Our SurrealDB checkout spent 900 seconds on the build and another 900 seconds on tests without finishing compilation, so source validation is expensive on a 3-CPU box. The published binary is still worth a prototype when graph links, live queries, permissions, and search must share one data model. Do not make it the system of record until your team has tested its exact storage engine, failure recovery, memory behavior, query semantics, and BSL 1.1 terms.

We ran it

Lab card: what happened when we ran surrealdbScreenshot of surrealdb (surrealdb.com)
Install✓ · 49s743 packages
Build✗ timed out · 900s
Tests✗ timed out · 900sran, no count parsed
Repo4292 files~506,619 lines of source · 28.5 MB · 19 CI workflows · tests dir

Answers from our run

Does surrealdb build from source?

Dependencies installed in 49 seconds (743 packages), and the build failed. We cloned commit 9d9a5b0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do surrealdb's tests pass?

We could not finish them: the suite was still running after 15 minutes in our container.

Who should not use surrealdb?

Teams that need a permissive database license: the repository uses Business Source License 1.1, so commercial deployment terms deserve legal review.

What are the alternatives to surrealdb?

PostgreSQL, ArangoDB, Neo4j. Our SurrealDB checkout spent 900 seconds on the build and another 900 seconds on tests without finishing compilation, so source validation is expensive on a 3-CPU box.

Setup3/5Easy binary trial; source build exceeded two 15-minute caps
Docs5/5Large manuals, tutorials, SDK guides, and SurrealQL examples
Community4/5Recent release and current issue and pull-request work
Maturity3/5Broad database scope with current storage-memory reports

Discussed on

  1. hnSurrealDB – Document-graph database, for the realtime web190 points
  2. hnSurrealDB: Distributed document-graph database for the realtime web136 points
  3. hnBenchmarking SurrealDB 3.x vs. Postgres, Mongo, Neo4j and Redis (With Fsync)75 points
  4. hnAnnouncing SurrealDB 1.063 points
  5. hnSurrealDB 3.0: Improved stability, performance, and tooling26 points

Who it’s for

Product teams whose records, graph links, search, and live updates genuinely belong in one data model.
Developers building knowledge graphs or agent data layers that mix vector, full-text, and relationship queries.
Small teams willing to learn SurrealQL in exchange for database-managed permissions and client access.
Rust applications that need an embedded option as well as a path to a networked server.

Who it’s NOT for

Teams that need a permissive database license: the repository uses Business Source License 1.1, so commercial deployment terms deserve legal review.
Organizations whose hiring, tooling, and operations are standardized on PostgreSQL SQL: SurrealQL looks familiar but introduces different record IDs, graph traversal, permissions, and operational behavior.
Buyers who need independently proven large-cluster behavior before adoption: our 15-minute caps expired during compilation and did not reach a completed build or test result.
Memory-constrained operators choosing a storage engine without workload trials: current reports describe SurrealKV reclaim memory reaching a cgroup ceiling and RocksDB memory growing under sustained ingestion.
Teams that need record expiration as an established primitive: an open feature request for record TTL was still active on 2026-08-20.

Setup reality

Our Rust sandbox fetched 743 packages in 49 seconds. Both build and test commands hit their separate 900-second limits, so neither completed. The test log was still compiling crates such as predicates, env_logger, rcgen, and test-log; it showed no test result. The checkout contained 4,292 files and about 506,619 source lines.

Trying the published server is much easier through its single binary, Homebrew, install scripts, or container image. Production still requires a storage-engine choice, authentication, permissions, backups, observability, and migration tests. Embedded, browser, single-node, and distributed modes are distinct operating models. SurrealQL and direct client access also move data-policy work into the database, which teams must design rather than inherit from a conventional API.

One engine covers several data models

SurrealDB combines tables, documents, directed graph edges, time-series values, geospatial types, key-value access, full-text search, and vector search. SurrealQL is the common query language. Records can be schema-full or schema-less, transactions can span rows and tables, and live queries can push changes to clients. The server also supports permissions intended to let selected applications connect without a separate CRUD API for every operation.

That consolidation is attractive when the same entities need several views. A product catalog may use structured fields, graph relationships, location filters, text retrieval, and recommendation vectors. Keeping those in one transaction and query system can reduce synchronization code. It also concentrates risk. One database upgrade, query regression, or storage problem can affect every access pattern that would otherwise have been split across specialized services.

SurrealQL is familiar until the graph starts

Basic definitions and updates resemble SQL, while record IDs, nested values, computed fields, events, permissions, and arrow graph traversal give the language its own shape. A relationship can carry fields and direction, and a query can walk several edges without reconstructing a graph through join tables. Teams with relationship-heavy domains may find that clearer than forcing every connection into a conventional relational schema.

The cost is training and portability. PostgreSQL expertise does not directly answer how SurrealDB permissions, live queries, graph edges, or storage engines behave. SurrealQL belongs in application architecture, migration tooling, code review, and incident playbooks. Before adoption, rewrite representative queries from the existing system and check results, indexes, transaction boundaries, and failure behavior. A pleasant demo query is not enough evidence for a system of record.

What happened when we ran it

Our sandbox fetched 743 Rust packages in 49 seconds. The build then reached the 900-second cap without completing. The repository contained 4,292 files and roughly 506,619 lines of source, with 19 CI workflow files and a tests directory. No Dockerfile was detected in the checkout by the lab signals.

The test command also timed out after 900 seconds. Its final lines were compiler output for dependencies including termtree, predicates, env_logger, rcgen, assert_fs, and test-log. No tests had reported a result in that tail. We can say compilation was unfinished at our limit; we cannot call a test failed, name a broken feature, or claim that more CPU would certainly have completed it.

These measurements describe source contribution on a fresh 3-CPU, 12 GB Rust container. They do not measure database query speed, storage use, cluster scaling, or the startup of a published binary. We ran no benchmark, and the numbers should not be repurposed as one. They do show that a clean source validation cycle needs more than 15 minutes per major command on this box.

The binary trial is much lighter than source work

The README offers Homebrew, Unix and Windows install scripts, and a container image. A single command can start an in-memory development server with a root user and password. SDK links cover Rust, JavaScript, Python, Go, .NET, PHP, and Java, while JavaScript also supports browser and WebAssembly cases. This is enough to test data modeling without compiling 743 packages.

Production is not one command. Operators must choose an engine and deployment form, secure credentials, define permissions, arrange backups, rehearse restores, observe memory, and plan upgrades. Embedded use, a standalone server, browser storage, and a distributed cluster have different durability and security properties. Direct browser access makes database permissions part of the public application boundary, so a loose rule can expose more than an internal API mistake would.

Storage reports deserve workload-specific tests

Two current issues are specific enough to affect evaluation. One report for v3.2.4 says a SurrealKV background reclaim task raises resident memory to the cgroup limit and triggers an out-of-memory kill. Another report for v3.2.0 describes RocksDB resident memory growing to about 9 times the on-disk dataset during sustained writes. Reports are not universal findings, but both concern the resource behavior operators care about most.

A proof of concept should therefore resemble production. Load realistic record sizes, indexes, relationships, vectors, and write rates. Run reclaim and compaction behavior long enough to observe it. Put the process under the same memory limit planned for deployment, then test restart and recovery after forced termination. Compare more than query latency: track resident memory, disk growth, write amplification, backup duration, and restore correctness with the selected engine.

Active releases do not remove license review

Release v3.2.4 arrived on 2026-08-17, and the repository was pushed on 2026-08-21. GitHub listed 749 open issues and pull requests combined. Work updated through August 24 covered value accessors, MCP argument schemas, parallel predicate evaluation, CLI formatting, a derive compilation bug, readonly IDs, imports, TTL, and the storage-memory reports. That is current activity across core behavior rather than cosmetic maintenance.

The repository labels its code BSL 1.1. That differs from PostgreSQL's permissive license and should reach counsel before a commercial architecture is fixed. The exact permitted use and change terms belong to the license text, not a README summary. Teams that cannot accept that review should eliminate SurrealDB early instead of discovering a licensing conflict after building around SurrealQL.

Prototype the data model before choosing it

SurrealDB is most persuasive when one domain truly needs graph traversal, document-shaped records, live updates, permissions, and mixed retrieval. Its single binary makes that idea cheap to explore, and its documentation gives developers enough material to build a serious model. The built-in MCP server also gives agent tools a documented database route, which is why the mcp tag belongs here.

The decision threshold should be higher than a successful tutorial. Our source commands consumed 30 minutes of capped execution without reaching a result, and current storage reports call for careful memory trials. Compare the same workload with PostgreSQL, ArangoDB, or Neo4j, including recovery and staffing costs. Choose SurrealDB only when its unified model removes enough application complexity to justify a newer query language, concentrated operational risk, and BSL terms.

Alternatives

ProjectWhat it isPick it when
PostgreSQL gh↗A mature relational database with a vast SQL, extension, and operations ecosystem.pick this instead when predictable SQL behavior, staffing, tooling, and proven operations matter more than a native multi-model query layer.
ArangoDBA multi-model database combining documents, graphs, and search through AQL.pick this instead when you want an older document-graph system and prefer its operational history and query model.
Neo4jA graph database centered on property graphs and Cypher queries.pick this instead when graph traversal is the main job and a focused graph ecosystem is more useful than one engine for many models.

What people are saying

  1. [github-trending] surrealdb/surrealdb

Sources

  1. SurrealDB README
  2. SurrealDB repository
  3. SurrealDB 3.2.4 release
  4. SurrealKV reclaim memory report
  5. RocksDB memory report

More data reviews

GeoLibre · TradingView-API · os-taxonomy · Lean · bokeh · orm · the whole board →