The SurrealDB platform

Built with developers in mind. Built to scale.

View all features
Get started with SurrealDB

The query language in SurrealDB looks and works similarly to traditional-SQL, but allows for querying over time-series and connected graph data. SurrealQL is an advanced query language, with programming language functionality, that allows developers or data analysts to work with SurrealDB in the ways they choose.

Live Queries in SurrealDB enable a simple yet seamless way of building modern, responsive applications, whether connecting to SurrealDB as a traditional backend database, or when connecting directly to the database from the frontend.

SurrealDB is designed for building applications of any size - and for that, query performance, and improved data analysis workloads are key. With SurrealDB secondary indexes, you can now index data using traditional indexes, full-text search indexing, and vector-embedding search for artificial intelligence use cases.

Change Feeds enable SurrealDB to play a role within within the wider ecosystem of enterprise, cloud, or micro-service based platforms, giving users the ability to retrieve and sync changes from SurrealDB to external systems and platforms.

SurrealML enables machine learning models to be greatly simplified, ensuring reproducibility and consistency in machine learning pipelines. Running on our Rust engine, models can be built in Python, and imported in to SurrealDB for inference within the database runtime.

Getting started with SurrealDB.
SurrealDB makes building and scaling realtime apps dramatically quicker and easier. Get started by installing the server, and jump into our getting started guide to learn how to insert and query data in SurrealDB in minutes.
Get started with SurrealDB
Our open source projects
SurrealML

Rust / Apache-2.0

SurrealML

A machine learning file format for working with and packaging PyTorch and SKLearn models in Python, using Rust

SurrealKV

Rust / Apache-2.0

SurrealKV

A low-level, versioned, embedded, ACID-compliant, key-value database for Rust, with support for multiple concurrent readers and writers

EchoDB

Rust / Apache-2.0

EchoDB

An embedded, in-memory, immutable, copy-on-write database engine with serialisable, isolated transactions

IndxDB

Rust / Apache-2.0

IndxDB

A key-value database engine abstraction layer for IndexedDB in the browser using WASM

storekey

Rust / Apache-2.0

storekey

A binary encoding serialization format for Serde, which ensures lexicographic sort ordering

Revision

Rust / Apache-2.0

Revision

A Rust library for revision-tolerant serialisation and deserialisation, with support for schema evolution over time

Tart

Rust / Apache-2.0

Tart

An immutable, copy-on-write, snapshot-based, timed-adaptive radix trie data structure library for Rust

RixxDB

Golang / Apache-2.0

RixxDB

A versioned, embedded, strongly-consistent, ACID-compliant key-value database engine

cork

Golang / Apache-2.0

cork

A self-describing, binary data serialisation format for Golang

bump

Golang / Apache-2.0

bump

An efficient and performant data buffering library for Golang

ptree

Golang / Apache-2.0

ptree

An immutable, copy-on-write radix tree library with serialisable, isolated transactions

vtree

Golang / Apache-2.0

vtree

An immutable, versioned, copy-on-write radix tree library with serialisable, isolated transactions

tlist

Golang / Apache-2.0

tlist

An in-memory time series linked list for storing and retrieving values by time

blist

Golang / Apache-2.0

blist

An in-memory time series binary tree list for storing and retrieving values by time

fibre

Golang / Apache-2.0

fibre

A fast HTTP, RPC, and WebSocket server framework for Golang