cover

SurrealDB: Version 1.0 Just Released! Next Gen SQL Database?

Introducing the Future of Database Management: Version 1.0 Just Released! 🚀 Is this the Next Gen SQL Database You've Been Waiting For? 🌟

Explaining why SurrealDB through historical context

First, let's delve into why SurrealDB stands out in contrast to widely-used databases.

From physical paper to digital paper

  • Relational (Table): SQL

  • Document: NoSQL

  • Graph

Relational databases 📊

SQL is like a puzzle. You plan, create, and assemble pieces to get your answer, often requiring multiple pieces for each solution.

price_list

idprice
11.7
21.5
322.99

fruit_box

idfruitquantity
1Apple5
2Orange3
3Durian1000
select * from fruit_box select fruit from fruit_box select fruit, price from fruit_box fb inner join price_list pl on [fb.id](http://fb.id)=[pl.id](http://pl.id)
  • The first query retrieves all data from the fruit_box table.

  • The second query retrieves only the fruit column from the fruit_box table.

  • The third query combines data from both the fruit_box _and price_list_ tables, showing the fruit names and their associated prices where there is a matching id in both tables.

SQL is like a puzzle. You plan, create, and assemble pieces to get your answer, often requiring multiple pieces for each solution.

Document 📄

I prefer a straightforward approach. Instead of solving a puzzle each time, I'd rather create a comprehensive document with all the needed information. Then, I can simply read that document to find the answers I seek.

db={ "fruit_box": [ { "_id": 1, "fruit": "Apple", "quantity": 5 }, { "_id": 2, "fruit": "Orange", "quantity": 3 }, { "_id": 3, "fruit": "Durian", "quantity": 1000 }, ] }
"price_list": [ { "_id": 1, "price": 1.7, }, { "_id": 2, "price": 1.5, }, { "_id": 3, "price": 22.99, }, ]
db.fruit_box.find() db.fruit_box.find({}, {fruit: 1, _id: 0}) db.fruit_box.aggregate([{ "$lookup": { "from": "price_list", "localField": "_id", "foreignField": "_id", "as": "Result" } }])

Graph 🕸️

Similar to a social network, you map out who knows what and how they're connected. Then, you navigate through the network, asking until you find what you need.

(1:fruit_box {fruit:"Apple",quantity:5}) (2:fruit_box {fruit:"Orange",quantity:3}) (3:fruit_box {fruit:"Durian",quantity:1000}) (1:price_list {price:1.7}) (2:price_list {price:1.5}) (3:price_list {price:22.99})
match (f:fruit_box) return f match (f:fruit_box) return f.fruit match (f:fruit_box)-[:lookup]->(p:price_list) return f.fruit, p.price

NewSQL - SurrealQL

select fruit, ->lookup->price_list.price as price from fruit_box

SurrealQL simplifies the complexity, particularly regarding table relationships. Additionally, if you insert data into a non-existent table, SurrealDB will generate the table automatically.

Nice Features and small size

SurrealDB offers a wealth of features, and its version 1.0.0 Docker image is exceptionally compact at just 17.5 MB, thanks to its Rust-based architecture. In comparison, Postgresql's image size exceeds 80 MB.

When using SurrealDB within a web browser, the WebAssembly library provides support for connecting to a remote database via HTTP or WebSockets. It also allows for data persistence using IndexedDB in the browser. You have the flexibility to choose between a schemafull or schemaless approach. You can store unstructured nested data with any columns or selectively limit data storage to specific columns or fields. This means you can start quickly without the need to define every column and transition to a schema-full approach once your data model is established.

Oh and did I mention in SurrealQL, comments can be written in a number of different ways.

/* In SurrealQL, comments can be written as single-line or multi-line comments, and comments can be used and interspersed within statements. */ SELECT FROM / get all users */ user; There are a number of ways to use single-line comments SELECT * FROM user; // Alternatively using two forward-slash characters SELECT * FROM user; -- Another way is to use two dash characters SELECT * FROM user;

TechChase begegnet dem Mangel an Fachkräften auf dem Markt, indem wir maßgeschneiderte und kosteneffiziente Cloud-Lösungen anbieten, die Unternehmen dabei unterstützen, innovative Geschäftsmodelle zu entwickeln.

techchase-footer
inno-award
ui-award
ux-award
rlp-gold