SurrealDB is a flexible, developer-friendly, fully ACID transactional, realtime document-graph web database for serverless applications. Never again worry about database provisioning, scaling, sharding, replication, or correctness.
SurrealDB can be run in on a single-node (both in-memory or using durable on-disk storage), or in a highly-available distributed cluster. It consumes very few resources making it perfect for embedding within other stacks or applications.
Using an advanced query language, SurrealDB lets you store and access data using relational, document, graph, and embedded methodologies. The innovative data model enables you to model and access links between data records in an efficient way without complicated JOINs.
Have peace-of-mind when working with your data, by using strictly serialisable multi-table and multi-record transactions, with no limit on the number of keys or documents, or the transaction duration.
SurrealDB is designed from the ground up to be stable and scalable, with a focus on performance and functionality. When running, SurrealDB uses minimal machine resources, with highly-efficient memory access and caching.
SurrealDB doesn't force you into using pre-specified columns or fields. You can specify that a table is schemaless allowing any data keys to be stored, or instead, schemafull mode ensures that only certain fields and data types can be stored.
The primary method of querying SurrealDB is using SurrealQL, a similar but modified version of traditional SQL. SurrealQL enables linked documents to be traversed and queried efficiently, while still using an imperative language which remains understandable by data scientists.
When connecting directly from an end-user device, you can choose to query the data using SurrealQL, GraphQL, or using a traditional REST API. In addition, WebSockets enable high-performance bi-directional realtime syncing of any updated data.
Indexes can be easily added and removed as your application evolves. Indexes allow for strongly consistent reads and writes, enabling highly-performant reads, whilst multi-column unique indexes ensure custom data guarantees.
In SurrealDB, records can be indexed automatically using distributed full-text-indexes, allowing for performant Lucene-based querying over all record data fields, including boolean searches, fuzzy searches, wildcard searches, range searches, and weighted results.
In addition to traditional indexes, SurrealDB allows data to be selected, grouped, and ordered into pre-computed views. These views enable efficient data access for specific incrementally aggregated analytics queries.
When connecting with SurrealDB, all connections are made using WebSockets, allowing for bi-directional data syncing. Dependent on data access permissions, client-based document subscriptions are triggered in real-time whenever changes are made to the data.
SurrealDB is designed as a web database, with clients connecting directly to it from browsers, mobile devices, and desktop apps. Configure your access rules easily using SQL statements, ensuring only the correct users have access to their respective data.
With support for SSL/TLS, Single-Sign-On, external 3rd party authentication, JWT token based authentication, and custom business authentication logic - SurrealDB offers strong security, with the flexibility of custom authentication methods that suit your app or business.
Temporal queries enable easy auditing of whole datasets. See how your data, and the graph, evolved over time, and what changes were made by whom - by specifying a certain timestamp when running a query.
With support for namespaces and databases, SurrealDB enables you to separate your data out however you wish, simplifying the development of SaaS applications.
Choose where you want your data to reside, and serve customers anywhere - with consistent data, replicated in real-time across multiple regions, allowing you to keep application loading speeds super-fast.
When using SurrealDB in the cloud, transparent behind-the-scenes scaling ensures that your apps never run out of capacity or storage, while you pay only for the data storage that you use.
SurrealDB is built from the ground-up to run as a cloud-first database. Configurable with just a single command, either as a binary, or from within a Docker instance, SurrealDB is easy to start, easy to scale, and easy to maintain. All the hard work is done for you.
SurrealDB is being built in the open. We would love for you to be involved.