A scalable, distributed, collaborative, document-graph database, for the realtime web

Overview

SurrealDB Icon


SurrealDB Logo SurrealDB Logo

SurrealDB SurrealDB is the ultimate cloud
database for tomorrow's applications

Develop easier.   Build faster.   Scale quicker.


         

     

LinkedIn   Twitter   Youtube   Dev   Discord   StackOverflow


  What is SurrealDB?

SurrealDB is an end-to-end cloud native database for web, mobile, serverless, jamstack, backend, and traditional applications. SurrealDB reduces the development time of modern applications by simplifying your database and API stack, removing the need for most server-side components, allowing you to build secure, performant apps quicker and cheaper. SurrealDB acts as both a database and a modern, realtime, collaborative API backend layer. SurrealDB can run as a single server or in a highly-available, highly-scalable distributed mode - with support for SQL querying from client devices, GraphQL, ACID transactions, WebSocket connections, structured and unstructured data, graph querying, full-text indexing, geospatial querying, and row-by-row permissions-based access.

For more details see the features, documentation, or roadmap.

  SurrealDB Cloud

SurrealDB can run as a single-instance, or as a highly-available, highly-scalable cluster. If you don't want to manage your own database, we can run SurrealDB for you, in the Cloud, with just a couple of clicks. To get started with SurrealDB Cloud see our website.

  Getting started

Getting started with SurrealDB is as easy as starting up the SurrealDB database server, choosing your platform, and integrating its SDK into your code. You can easily get started with your platform of choice by reading one of our tutorials.

Client side apps
Server side code

  Documentation

For guidance on installation, development, deployment, and administration, see our documentation.

  Installation

SurrealDB is designed to be simple to install and simple to run - using just one command from your terminal. In addition to traditional installation, SurrealDB can be installed and run with HomeBrew, Docker, or using any other container orchestration tool such as Docker Compose, Docker Swarm, Rancher, or in Kubernetes.

  Install on macOS

The quickest way to get going with SurrealDB on macOS is to use Homebrew. This will install both the command-line tools, and the SurrealDB server as a single executable. If you don't use Homebrew, follow the instructions for Linux below to install SurrealDB.

brew install surrealdb/tap/surreal

  Install on Linux

The easiest and preferred way to get going with SurrealDB on Unix operating systems is to install and use the SurrealDB command-line tool. Run the following command in your terminal and follow the on-screen instructions.

curl -L https://install.surrealdb.com | sh

  Install on Windows

The easiest and preferred way to get going with SurrealDB on Windows is to install and use the SurrealDB command-line tool. Run the following command in your terminal and follow the on-screen instructions.

iwr https://ps1.surrealdb.com -useb | iex

  Run using Docker

Docker can be used to manage and run SurrealDB database instances without the need to install any command-line tools. The SurrealDB docker container contains the full command-line tools for importing and exporting data from a running server, or for running a server itself.

docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start

  Community

Join our growing community around the world, for help, ideas, and discussions regarding SurrealDB.

  Contributing

We would    for you to get involved with SurrealDB development! If you wish to help, you can learn more about how you can contribute to this project in the contribution guide.

  Security

For security issues, kindly email us at [email protected] instead of posting a public issue on GitHub.

  License

Source code for SurrealDB is variously licensed under a number of different licenses. A copy of each license can be found in each repository.

For more information, see the licensing information.

Comments
  • Bug: Unable to install windows-amd64 binary version of SurrealDB

    Bug: Unable to install windows-amd64 binary version of SurrealDB

    Describe the bug

    OS: Windows 10 x64

    
    PS C:\WINDOWS\system32> iwr https://windows.surrealdb.com -useb | iex
    
     .d8888b.                                             888 8888888b.  888888b.
    d88P  Y88b                                            888 888  'Y88b 888  '88b
    Y88b.                                                 888 888    888 888  .88P
     'Y888b.   888  888 888d888 888d888  .d88b.   8888b.  888 888    888 8888888K.
        'Y88b. 888  888 888P'   888P'   d8P  Y8b     '88b 888 888    888 888  'Y88b
          '888 888  888 888     888     88888888 .d888888 888 888    888 888    888
    Y88b  d88P Y88b 888 888     888     Y8b.     888  888 888 888  .d88P 888   d88P
     'Y8888P'   'Y88888 888     888      'Y8888  'Y888888 888 8888888P'  8888888P'
    
    Fetching the latest database version...
    Fetching the host system architecture...
    Installing surreal-v1.0.0-beta.5
     for windows-amd64...
    Invoke-WebRequest : The remote server returned an error: (403) Forbidden.
    At line:54 char:5
    +     Invoke-WebRequest $DownloadUrl -OutFile $Executable -UseBasicPars ...
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
       eption
        + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
    
    PS C:\WINDOWS\system32>
    

    Steps to reproduce

    Run the installation script

    iwr https://windows.surrealdb.com -useb | iex
    

    Expected behaviour

    It's supposed to install SurrealDB.

    SurrealDB version

    1.0.0-beta.5

    Contact Details

    [email protected]

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    bug 
    opened by jareer12 30
  • Bug: Database crash due to looping future record

    Bug: Database crash due to looping future record

    Describe the bug

    I get the following error while using future records in a certain way:

    thread 'tokio-runtime-worker' has overflowed its stack
    fatal runtime error: stack overflow
    [1]    12935 abort      surreal start --user root --pass root --bind 0.0.0.0:3001 file:testdb
    

    Steps to reproduce

    Define the fields as such:

    DEFINE FIELD managers ON TABLE organisation TYPE array;
    DEFINE FIELD organisations ON TABLE manager VALUE <future> {(SELECT id FROM organisation WHERE managers CONTAINS $parent.id)};
    

    Insert some data:

    CREATE manager:john SET name="John Doe";
    CREATE organisation:doefoundation SET managers = [manager:john];
    

    Select the data:

    SELECT * FROM manager;
    

    Expected behaviour

    For it not to crash :D

    SurrealDB version

    Compiled from source on M1 macbook

    Contact Details

    [email protected]

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    bug 
    opened by kearfy 24
  • Fix build issues and simplify building from source

    Fix build issues and simplify building from source

    What is the motivation?

    Currently building from source can be frustrating, especially when one wants to enable either TiKV or FoundationDB. This is an attempt to make builds easier and provide a more consistent user experience across different systems. Building from source should be simple and painless regardless of the user's experience with Rust and C/C++.

    Ideally, one shouldn't even need to know what the build dependencies of this project are or what language it's written in in order to be able to compile it. Once they install the build tool, running it or building it from source should just work and be a single command away without even needing to clone the repo first.

    After cloning this repo, Rust developers too should be able to start making changes after running only a single command that prepares their environment for all the dependencies they need to build successfully. This is, of course, assuming they already have our build tool installed and configured. Both of which should, theoretically at least, be simple and straight-forward steps. It's possible to eliminate that single command entirely and have the environment be prepared automatically once one cds into this project.

    I know these are hefty promises :smile: On paper, the build tool I'm proposing comes with all these features and more. However whilst I have been using it since 2014 and I love and swear by it, I have never used it outside Linux distros so your mileage may vary if you use a different system.

    What does this change do?

    This changeset packages this repo using the Nix package manager. More specifically it turns this repo into a Nix flake.

    • [X] Add a basic Nix flake (POC)
    • [x] Add support for cross compiling to different targets
    • [x] Add support for building static binaries
    • [x] Add a test in the CI
    • [x] Add documentation

    Once this PR lands one can run the server without even needing to clone the repo first by running

    nix run github:surrealdb/surrealdb
    

    This will download the latest commit on main, compile and run it. Specific branches, tags or even commits can be specified easily too, for example nix run github:surrealdb/surrealdb/v1.0.0-beta.8. If we add this project to the Flake registry, that command can even be shortened to nix run surrealdb or nix run surreal.

    To just install it in one's PATH

    nix profile install github:surrealdb/surrealdb
    

    Developers will simply need to run nix develop to prepare their environment so that cargo build just works (rustup won't be needed as Nix takes over the functions of installing the Rust toolchain and targets).

    What is your testing strategy?

    Made sure that all tests still pass and added more CI jobs to test building with Nix.

    Is this related to any issues?

    It directly addresses https://github.com/surrealdb/surrealdb/issues/97. It will also help with https://github.com/surrealdb/surrealdb/issues/52 though it requires that nix develop be run first before cargo build.

    Have you read the Contributing Guidelines?

    opened by rushmorem 16
  • Bug: unknown variant `Polygons`

    Bug: unknown variant `Polygons`

    Describe the bug

    Selecting a record that contains a MultiPolygon crashes the database.

    Steps to reproduce

    Run the following documented query:

    UPDATE university:oxford SET locations = {
    	type: "MultiPolygon",
    	coordinates: [
    		[
    			[ [10.0, 11.2], [10.5, 11.9], [10.8, 12.0], [10.0, 11.2] ]
    		],
    		[
    			[ [9.0, 11.2], [10.5, 11.9], [10.3, 13.0], [9.0, 11.2] ]
    		]
    	]
    };
    

    Select the record or export the database:

    SELECT * FROM university:oxford;
    

    The database crashes with the following error message:

    thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Syntax("unknown variant `Polygons`, expected one of `Point`, `Line`, `Polygon`, `MultiPoint`, `MultiLine`, `MultiPolygon`, `Collection`")', lib/src/sql/value/value.rs:97:60
    

    Expected behaviour

    Selects should return the record successfully and exporting should work as expected. I have already identified the source of the bug and will prepare and submit a pull request shortly.

    SurrealDB version

    surreal 1.0.0-beta.7 for linux on x86_64

    Contact Details

    No response

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    bug 
    opened by rushmorem 15
  • nix: fix darwin build

    nix: fix darwin build

    Thank you for submitting this pull request! We appreciate you spending the time to work on these changes.

    What is the motivation?

    The flake is amazing, however it doesn't build on darwin (macos)

    What does this change do?

    This fixes the build for darwin platforms. tested only on x86_64 though.

    What is your testing strategy?

    run nix build .#packages.x86_64-darwin.default on a darwin machine and verify the output of ./result/bin/surreal version

    Is this related to any issues?

    If this pull request is related to any other pull request or issue, or resolves any issues - then link all related pull requests and issues here.

    Have you read the Contributing Guidelines?

    opened by happysalada 14
  • Bugfix: #1309 Hashed implementation of `Uniq<Array>`

    Bugfix: #1309 Hashed implementation of `Uniq`

    Thank you for submitting this pull request! We appreciate you spending the time to work on these changes.

    What is the motivation?

    While I have yet to actually use this method for anything, according to the Contribution Guide "Query execution time" is very important and this will lower it exponentially in the use of this method.

    However, the time taken for hashing, might be slower for small Arrays with large items, but I think the time will be negligible. Or we could add a condition for < 10 Values to use the O(n^2) method.

    What does this change do?

    Added #[derive(Hash)] to almost every struct under lib/src/sql (anything that linked back to Value). And changed the Uniq<Array> implementation to use a HashSet rather than having a nested loop.

    Some things I'm not sure are the best I've had to do, such as the implementation for Hash on Number is as follows

    https://github.com/surrealdb/surrealdb/blob/84be58dda0d44b3670c30a649b4e056cef54ffb4/lib/src/sql/number.rs#L323-L331

    And according to what I've researched, this works, except has unintuitive behavior for NaNs

    Then, for Geometry, the only sensible way I could tell to do this is with

    https://github.com/surrealdb/surrealdb/blob/84be58dda0d44b3670c30a649b4e056cef54ffb4/lib/src/sql/geometry.rs#L511-L515

    And while this might make it a bit slower for Values containing Geometry Values, I think it should still work as the method is idempotent.

    What is your testing strategy?

    1. Ran cargo test and it passed
    2. Built and ran SurrealDB
    3. Created a record with 10k values each a random number between 0 and 2999
    4. Ran SELECT array::distinct(v) FROM test:test;
    5. Did steps 2, 3 and 4 on the main release build of SurrealDB
    6. Compared the output of steps 4 and 5 to verify they are the same and that 4 was faster

    Is this related to any issues?

    Fixes #1309

    Have you read the Contributing Guidelines?

    opened by AL1L 14
  • SurrealDB is not a database

    SurrealDB is not a database

    Is your feature request related to a problem?

    I just came across SurrealDB and was curious about the underlying system in place. However, very soon I realized that calling Surreal a database is extremely misleading, especially from an academic point of view (and since I research database systems this is very incorrect).

    What you're building is essentially a "query engine" or "data API" on top of other actual databases. It is like what Hasura and Timescale are to Postgres. And they clearly don't say that they are "ultimate databases" in their own right. It is like saying a REST API providing access to SQLite is a database.

    Describe the solution

    I like the idea of being able to choose a database engine, but please reconsider your framing of what Surreal actually is to avoid confusion. "End to end" and "ultimate" are very misleading.

    Alternative methods

    NA

    SurrealDB version

    1.0.0-beta.7

    Contact Details

    No response

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    opened by firedupmike 14
  • Integrate `surrealdb-rs` into `surrealdb`

    Integrate `surrealdb-rs` into `surrealdb`

    What is the motivation?

    Since surrealdb can be embedded into surrealdb-rs, it makes sense to combine these two crates so we can expose a single API that works for both embedded and remote databases. This eliminates confusion as to which crate to use.

    Previously the answer to that question would be “use surrealdb if you want an embedded database or use surrealdb-rs if you want to connect to a remote one”. Now the answer to this question is more nuanced.

    What does this change do?

    It merges surrealdb-rs into surrealdb, making the former the public interface of the latter.

    What is your testing strategy?

    Add more automated tests.

    Is this related to any issues?

    It fixes https://github.com/surrealdb/surrealdb.rs/issues/1 though it's not specifically created to address it.

    Have you read the Contributing Guidelines?

    opened by rushmorem 12
  • Feature: DEFINE EVENT should support embedded JS for WHEN (and THEN expressions)

    Feature: DEFINE EVENT should support embedded JS for WHEN (and THEN expressions)

    Is your feature request related to a problem?

    Mainly, just to have concise API, where any expression can be standard SRQL or use embedded JS as an escape hatch for even more awesomeness.

    Currently, trying to define a function for at least WHEN clause, throws a Parse error.

    Describe the solution

    Essentially, allow us to:

    DEFINE EVENT whatever ON TABLE sometable WHEN function () { return this.event == "CREATE" } THEN (
        CREATE whatever;
    )
    

    Of course, with the power of #1320, we might as well:

    DEFINE EVENT whatever ON TABLE sometable WHEN function () {
        if (this.event == "CREATE") {
            const otherCount = await query("SELECT count() FROM other GROUP BY ALL");
            return otherCount > 0;
        } 
        return false;
    }
    

    Should be possible to define a function in THEN clause as well:

    DEFINE EVENT whatever ON TABLE sometable WHEN $event = "CREATE" THEN function () {
        const dependency = await query("SELECT * FROM dependency");
        const result = await query(`CREATE target CONTENT { dependencies: ${JSON.stringify(dependency) }`);
        -- or better yet, introduce `create` etc. methods
    }
    

    Alternative methods

    Not applicable here, as this is a generic feature request, where the API is inconsistent.

    In case there are other places where embedded JS is not usable, this in theory should track that as well.

    SurrealDB version

    surreal 1.0.0-beta.8+20220930.c246533 for macos on aarch64

    Contact Details

    @tomsseisums

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    noissue 
    opened by tomsseisums 10
  • Support additional build metadata

    Support additional build metadata

    What is the motivation?

    The current version reported, for example 1.0.0-beta.7 does not carry enough information to pinpoint the exact commit built when building from source. SemVer allows for adding additional build metadata by adding it after the + sign. This can be very helpful for debugging.

    What does this change do?

    It makes it possible to specify optional build metadata using the SURREAL_BUILD_METADATA environment variable. Build tools like Nix can set this variable to something like 20220926.a72052a. The first part is the date on which the commit being built was made. The second part is the short form of the commit. In this case the version reported by surreal version will be 1.0.0-beta.7+20220926.a72052a.

    What is your testing strategy?

    Made sure tests still pass and tested the functionality in a separate PR.

    Is this related to any issues?

    Extracted from https://github.com/surrealdb/surrealdb/pull/100.

    Have you read the Contributing Guidelines?

    opened by rushmorem 9
  • Bug: Database panics on connection reset

    Bug: Database panics on connection reset

    Describe the bug

    I was in the process of writing some benchmarks with Benchmark.js & nodemon to restart my tests on save when I came across an error I believe should be handled in RUST.

    Basically, in between a running a benchmark for the update query, I updated the source causing nodemon to restart the process. In effect this sudden disconnection of the client caused SurrealDB to completely panic and die.

    thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Io(Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" })', src/net/rpc.rs:64:37
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    Aborted (core dumped)
    

    I think we should handle the Result rather than unwrap to avoid killing the database process.

    Steps to reproduce

    1. Run Surrealdb NodeJs client query on a loop (as would happen in a bechmark)
    2. Then suddenly kill the client to abruptly disconnect from the server.
    3. The Tokio thread dies in a panic.

    Expected behaviour

    The match expression should be used to handle the Result instead of Result::unwrap() which currently causes the database process to panic and terminate.

    SurrealDB version

    1.0.0-beta.7

    Contact Details

    [email protected]

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    bug 
    opened by mugendi 9
  • Bug: Error parsing queries with functions in rust

    Bug: Error parsing queries with functions in rust

    Describe the bug

    It seems that the sql! macro is not correctly parsing queries with functions.

    Steps to reproduce

    Running the following query in rust:

    db.query(sql!(SELECT * FROM time::now())).await?.take(0)?
    

    Throws the following error

    Parse error on line 1 at character 19 when parsing ':: now() ;'
    

    Expected behaviour

    It should work. Tested via a rest client directly to the database and the query works as expected.

    SurrealDB version

    23be3353be0974dfaaf52c4a77a5e38817c0aa62

    Contact Details

    No response

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    bug 
    opened by norman784 0
  • Feature: Incorporate `Turmoil` in the test suite

    Feature: Incorporate `Turmoil` in the test suite

    Is your feature request related to a problem?

    Testing distributed systems is very hard.

    Describe the solution

    Incorporate https://github.com/tokio-rs/turmoil in our test suite.

    Alternative methods

    N/A

    SurrealDB version

    N/A

    Contact Details

    No response

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    feature 
    opened by rushmorem 0
  • Feature: Make defined SQL parameters available from within JavaScript context

    Feature: Make defined SQL parameters available from within JavaScript context

    Is your feature request related to a problem?

    There is no simple way to access parameters defined within SurrealQL from within the context of a JavaScript function.

    This is related to #1322.

    Describe the solution

    There are three potential solutions here:

    1. We make all parameters available on a global params variable...
    DEFINE EVENT js_when_srql_then ON sometable WHEN fn() { return params.event == "CREATE" } THEN (CREATE some_event_result);
    
    1. We make all parameters available as own variable names prefixed with a $ symbol...
    DEFINE EVENT js_when_srql_then ON sometable WHEN fn() { return $event == "CREATE" } THEN (CREATE some_event_result);
    
    1. We make all parameters available with a function. This is the most performant, but the worst in terms of experience...
    DEFINE EVENT js_when_srql_then ON sometable WHEN fn() { return param('event') == "CREATE" } THEN (CREATE some_event_result);
    

    Passing the parameters on the this context isn't really an option, because the this always refers to the current record being processed, and therefore this.event would refer to the event field on the current record.

    Alternative methods

    Currently this can be achieved by passing in the required parameters as function arguments.

    DEFINE EVENT js_when_srql_then ON sometable WHEN function ($event) { return arguments[0] == "CREATE" } THEN (CREATE some_event_result);
    

    SurrealDB version

    surreal 1.0.0-beta.8+20220930.c246533 for macos on aarch64

    Contact Details

    No response

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    feature 
    opened by tobiemh 1
  • Improve CI run time

    Improve CI run time

    What is the motivation?

    The CI is taking longer and longer to run as we add more tests.

    What does this change do?

    It improves CI build times by splitting it into more jobs that can be run in parallel and carefully considering the features enabled.

    What is your testing strategy?

    Ensure the CI still runs correctly.

    Is this related to any issues?

    No.

    Have you read the Contributing Guidelines?

    opened by rushmorem 0
  • Shorten database error messages

    Shorten database error messages

    What is the motivation?

    Currently the database error variant leads to messages like

    There was a problem with the database: Database error: Specify a namespace to use

    What does this change do?

    It shortens the message to something like

    Database error: Specify a namespace to use

    What is your testing strategy?

    Ensure CI passes.

    Is this related to any issues?

    No.

    Have you read the Contributing Guidelines?

    opened by rushmorem 0
  • Fix #1393 - Parse datetime to spec without panic

    Fix #1393 - Parse datetime to spec without panic

    Thank you for submitting this pull request! We appreciate you spending the time to work on these changes.

    What is the motivation?

    See #1393 - Illegal datetimes panic, such as November 31st (2022-11-31T12:00:00.000Z)

    What does this change do?

    Unifies the parsing of datetimes into one function that errors when invalid dates are entered. The errors comply with how nom expects it to and will try a new branch when one does occur; this results in nom parsing the invalid datetime as a string.

    Additionally, I have changed the ranges for seconds and hours to 0..=60 and 0..=23 respectively. The 60 for seconds is for leap seconds, and 24 is an invalid hour in the ISO 8601 spec (and RFC 3339)

    What is your testing strategy?

    Created a new test, date_time_illegal_date, in lib/src/sql/datetime.rs

    Is this related to any issues?

    Fixes #1393

    Have you read the Contributing Guidelines?

    opened by AL1L 0
Releases(v1.0.0-beta.8)
Owner
SurrealDB
A scalable, distributed, collaborative, document-graph database, for the realtime web
SurrealDB
open source training courses about distributed database and distributed systemes

Welcome to learn Talent Plan Courses! Talent Plan is an open source training program initiated by PingCAP. It aims to create or combine some open sour

PingCAP 8.3k Dec 30, 2022
A programmable document database inspired by CouchDB written in Rust

PliantDB PliantDB aims to be a Rust-written, ACID-compliant, document-database inspired by CouchDB. While it is inspired by CouchDB, this project will

Khonsu Labs 718 Dec 31, 2022
RefineDB - A strongly-typed document database that runs on any transactional key-value store.

RefineDB - A strongly-typed document database that runs on any transactional key-value store.

Heyang Zhou 375 Jan 4, 2023
A programmable document database inspired by CouchDB written in Rust

BonsaiDb Formerly known as PliantDb. Not yet released on crates.io as BonsaiDb. BonsaiDb aims to be a Rust-written, ACID-compliant, document-database

Khonsu Labs 721 Jan 2, 2023
Scalable and encrypted embedded database with 3-tier caching

Infinitree is a versioned, embedded database that uses uniform, encrypted blobs to store data.

Symmetree Research Labs 116 Dec 27, 2022
Embedded graph database

CQLite An embedded graph database implemented in Rust. This is currently a pre-release. It has not been extensively tested with 'real-world work-loads

Tilman Roeder 81 Dec 27, 2022
Embedded graph database

CQLite An embedded graph database implemented in Rust. This is currently a pre-release. It has not been extensively tested with 'real-world work-loads

Tilman Roeder 82 Dec 31, 2022
Distributed transactional key-value database, originally created to complement TiDB

Website | Documentation | Community Chat TiKV is an open-source, distributed, and transactional key-value database. Unlike other traditional NoSQL sys

TiKV Project 12.4k Jan 3, 2023
small distributed database protocol

clepsydra Overview This is a work-in-progress implementation of a core protocol for a minimalist distributed database. It strives to be as small and s

Graydon Hoare 19 Dec 2, 2021
Distributed SQL database in Rust, written as a learning project

toyDB Distributed SQL database in Rust, written as a learning project. Most components are built from scratch, including: Raft-based distributed conse

Erik Grinaker 4.6k Jan 8, 2023
Distributed, version controlled, SQL database with cryptographically verifiable storage, queries and results. Think git for postgres.

SDB - SignatureDB Distributed, version controlled, SQL database with cryptographically verifiable storage, queries and results. Think git for postgres

Fremantle Industries 5 Apr 26, 2022
Embedded Distributed Encrypted Database (Research).

EDED Embedded Distributed Encrypted Database. Research projects to support ESSE. WIP Distributed design features Adapt to personal distributed usecase

Sun 2 Jan 6, 2022
A high-performance, distributed, schema-less, cloud native time-series database

CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

null 1.8k Dec 30, 2022
The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

null 12 Nov 18, 2022
Simple document-based NoSQL DBMS from scratch

cudb (a.k.a. cuda++) Simple document-based noSQL DBMS modelled after MongoDB. (Has nothing to do with CUDA, has a lot to do with the Cooper Union and

Jonathan Lam 3 Dec 18, 2021
XLite - query Excel (.xlsx, .xls) and Open Document spreadsheets (.ods) as SQLite virtual tables

XLite - query Excel (.xlsx, .xls) and Open Document spreadsheets (.ods) as SQLite virtual tables XLite is a SQLite extension written in Rust. The main

Sergey Khabibullin 1.1k Dec 28, 2022
Document your SQLite tables and columns with in-line comments

sqlite-docs A SQLite extension, CLI, and library for documentating SQLite tables, columns, and extensions. Warning sqlite-docs is still young and not

Alex Garcia 20 Jul 2, 2023
SubZero - a standalone web server that turns your database directly into a REST/GraphQL api

What is this? This is a demo repository for the new subzero codebase implemented in Rust. subZero is a standalone web server that turns your database

subZero 82 Jan 1, 2023
An explorer for the DeArrow database as a web application. Inspired by Lartza's SBrowser

DeArrow Browser An explorer for the DeArrow database as a web application. Inspired by Lartza's SBbrowser. Public instance available at dearrow.minibo

null 3 Aug 10, 2023