Databases & DBA  

SurrealDB Tutorial: Combining Relational, Document, and Graph Databases

Introduction

Choosing the right database has always been one of the most important architectural decisions in software development. Traditionally, developers had to select between relational databases for structured data, document databases for flexibility, and graph databases for managing relationships.

Each approach has its strengths:

  • Relational databases excel at structured transactions.

  • Document databases provide schema flexibility.

  • Graph databases handle complex relationships efficiently.

The challenge is that modern applications often need all three capabilities at the same time.

For example, a social media platform may require:

  • Structured user profiles

  • Flexible content storage

  • Relationship-based friend networks

Managing multiple database systems increases operational complexity and introduces additional infrastructure costs.

This is where SurrealDB comes in.

SurrealDB is a modern multi-model database that combines relational, document, graph, and key-value database capabilities into a single platform. It allows developers to store and query different types of data without maintaining separate database technologies.

In this article, we'll explore what SurrealDB is, how it works, and why it is attracting attention among developers building modern applications.

What Is SurrealDB?

SurrealDB is an open-source, multi-model database designed for modern applications.

It provides support for:

  • Relational data

  • Document storage

  • Graph relationships

  • Key-value operations

  • Real-time synchronization

  • Distributed deployments

Instead of forcing developers to choose a single data model, SurrealDB enables multiple models within the same database.

This flexibility makes it suitable for:

  • SaaS applications

  • Social networks

  • E-commerce platforms

  • Knowledge graphs

  • Content management systems

  • Real-time applications

The goal is to simplify data architecture while maintaining strong performance and scalability.

Why Traditional Database Choices Can Be Limiting

Modern applications often need multiple data models.

Consider an online learning platform.

Requirements might include:

Users
Courses
Lessons
Reviews
Enrollments
Recommendations

A relational database works well for enrollments and transactions.

A document database works well for flexible course content.

A graph database works well for recommendations and learning relationships.

Using separate databases introduces:

  • Additional infrastructure

  • Data synchronization challenges

  • Increased maintenance

  • Complex integrations

SurrealDB attempts to solve these problems by supporting multiple data models in one system.

Understanding SurrealDB Architecture

A simplified architecture looks like this:

Application
      |
      v
    SurrealDB
      |
      +---- Relational Data
      +---- Document Data
      +---- Graph Data
      +---- Key-Value Data

Developers interact with a single database while leveraging multiple storage patterns.

This reduces architectural complexity and simplifies development workflows.

Key Features of SurrealDB

Multi-Model Database

SurrealDB supports multiple data models natively.

Developers can store structured, semi-structured, and relationship-based data within the same platform.

SQL-Like Query Language

SurrealDB uses a query language that feels familiar to SQL developers.

This lowers the learning curve compared to some NoSQL systems.

Graph Relationships

Relationships can be modeled directly without complex join tables.

Real-Time Updates

Applications can subscribe to data changes and receive updates automatically.

Distributed Architecture

SurrealDB supports modern cloud-native deployment patterns.

Getting Started with SurrealDB

A local SurrealDB server can be started with:

surreal start memory

This launches an in-memory database instance for development and testing.

For production environments, SurrealDB can be configured with persistent storage backends.

Creating Records

Creating data is straightforward.

Example:

CREATE user SET
    name = "Alice",
    email = "[email protected]";

This creates a new user record.

Unlike traditional relational databases, SurrealDB allows flexible schemas when needed.

Querying Data

Retrieving records uses a SQL-like syntax.

Example:

SELECT * FROM user;

Filtering records:

SELECT * FROM user
WHERE name = "Alice";

Developers familiar with SQL can quickly become productive.

Working with Document Data

SurrealDB stores records in a document-oriented format.

Example:

CREATE course SET
    title = "Introduction to Databases",
    instructor = "John",
    metadata = {
        duration: "10 hours",
        level: "Beginner"
    };

The nested structure provides flexibility similar to document databases.

This is particularly useful when data structures evolve frequently.

Creating Relationships

One of SurrealDB's most powerful features is graph support.

Consider a scenario where a student enrolls in a course.

Create the relationship:

RELATE user:alice->enrolled_in->course:database101;

The relationship becomes part of the database graph.

Visualization:

Alice
   |
enrolled_in
   |
Database Course

Unlike traditional relational databases, complex relationships become easier to model and query.

Querying Graph Relationships

Retrieve all courses for a user:

SELECT ->enrolled_in->course
FROM user:alice;

This approach eliminates the need for complex joins and bridge tables.

Graph traversal becomes significantly simpler.

Real-Time Capabilities

Modern applications often require real-time functionality.

Examples include:

  • Chat applications

  • Collaboration platforms

  • Dashboards

  • Monitoring systems

SurrealDB supports subscriptions.

Example:

LIVE SELECT * FROM orders;

Applications automatically receive updates whenever matching data changes.

This reduces the need for polling and improves responsiveness.

Common Use Cases

SurrealDB is suitable for many application types.

SaaS Platforms

Manage customers, subscriptions, permissions, and relationships within a single database.

Social Networks

Model friendships, followers, and content relationships efficiently.

E-Commerce Systems

Combine transactional data with recommendation relationships.

Knowledge Graphs

Store and query interconnected information.

Real-Time Applications

Support live updates without additional infrastructure.

Benefits of SurrealDB

Reduced Complexity

One database can replace multiple specialized systems.

Flexible Data Modeling

Developers can use the most appropriate model for each use case.

Faster Development

Less time is spent integrating different database technologies.

Improved Relationship Management

Graph capabilities simplify complex data structures.

Real-Time Support

Applications can react to data changes immediately.

Best Practices

Design Data Models Carefully

Although SurrealDB supports multiple models, thoughtful schema design remains important.

Use Relationships Where Appropriate

Leverage graph features for interconnected data rather than forcing everything into documents.

Monitor Query Performance

As datasets grow, query optimization becomes increasingly important.

Secure Access Control

Implement authentication and authorization policies for production deployments.

Test Real-Time Workloads

Validate subscription performance under realistic traffic conditions.

SurrealDB vs Traditional Databases

FeatureRelational DBDocument DBGraph DBSurrealDB
Structured DataYesLimitedLimitedYes
Flexible DocumentsNoYesNoYes
Graph RelationshipsLimitedLimitedYesYes
Real-Time UpdatesLimitedLimitedLimitedYes
Single PlatformNoNoNoYes

SurrealDB's primary advantage is its ability to unify multiple database models under a single platform.

Conclusion

SurrealDB represents a modern approach to database design by combining relational, document, graph, and real-time capabilities into a single system. Instead of forcing developers to choose one data model, it provides the flexibility to use the most appropriate approach for different application requirements.

Whether you're building a SaaS platform, social network, e-commerce application, knowledge graph, or real-time service, SurrealDB offers a powerful alternative to managing multiple specialized databases. Its SQL-like syntax, graph relationships, flexible document storage, and real-time features make it an attractive option for modern application development.

As software systems continue to become more interconnected and data requirements grow increasingly complex, multi-model databases like SurrealDB are becoming an important part of the modern data architecture landscape.