In addition, launch was a couple of years ago. Fast forward to today, you have 27,000 GitHub stars, which is one of the key metrics, and one can argue what those mean, but directionally very impressive. You have hundreds of thousands of downloads. Also, last week, and we're going to talk about this, you're about, or in the process, I guess, as this podcast gets published, to launch the cloud version, which is going to be available. So we're going to talk about all of this, but let's get into the product itself.
So SurrealDB is billed as the ultimate multi-model database. And not to be too cute about it, but it's model and it's not modal. So it's M-O-D-E-L, not M-O-D-A-L, which is what you see in a lot of generative AI conversation. Do you want to explain what that is and then maybe walk us through the different parts of the product that are noteworthy?
Tobie Morgan Hitchcock14:19 Yeah, you'll be interested, like, the number of people who interchange those words. And I guess you can, in a way. It is multi-model and it is multimodal, but—
Oh, that's how you pronounce it. All right.
Tobie Morgan Hitchcock14:47 Well, I do. I'm not sure it's all right. So multimodal is about dealing with different modes, so images, audio, video. Model, I guess, is a different way of saying it, but it's looking at different ways of, in the database sense at least, it's looking at different ways of querying and storing different types of data. So in SurrealDB, you can store traditional document data, and it is a document database under the hood. So it's storing records that look a bit like JSON, in a way.
Tobie Morgan Hitchcock15:15 You can then improve and augment that data using graph techniques. So we'll come back to what graph is in a second. And then time-series data, so effectively a stream of events tagged with a timestamp, as it were. I think the interesting thing that people find when they come to SurrealDB, because you have graph databases out there and you have document databases and you have time-series databases. Just to add to that, you can also query things in a key-value-like way.
Tobie Morgan Hitchcock15:41 So if you want to get a single record, it's very efficient in just getting a single record, which is great in certain industries where they want speed and performance. And in addition to that, it's got an SQL-like query language. So it's very similar to traditional SQL that you might find in a relational database, but it doesn't have joins. And so when people come to SurrealDB, they usually come from the perspective of a relational database, which is tabular, or a document database, which is tabular, albeit with nested fields.
Tobie Morgan Hitchcock16:21 And they usually have to relearn how they insert their data and manage their data in those different types of databases. What they find when they come into SurrealDB is you can start with your data in that way, but then you can augment that with relationships. And actually, relationships and graph is really the way that humans think about the world. So we think about the world in terms of types: people, animals, orders, items, products. But then we augment that with relationships.
Tobie Morgan Hitchcock16:51 So I know you, you bought an item. And when you think about it in that way, modelling your data in your application or in your database, when you can deal with traditional tables and collections of data, but then you can bring relationships into it, makes a lot of sense. So bringing these different models together in a single platform, but not forcing you to have to use one model or the other. You can use all of them at the same time. You can start with one, you can build on that.
Tobie Morgan Hitchcock17:11 You can start without any structured schema. You can improve and add structured schema as you go along with your application. It has a lot of flexibility to it, and it makes sense to a lot of engineers, regardless of which database type or which experience they've come from before.
All right, so it can do graph, it can do document, it can do transactional. It can also do a lot of this in real time.
Tobie Morgan Hitchcock17:46 Yeah. It's a transactional database, so it is designed for reads and writes, as opposed to an analytical database, which is traditionally more read-heavy over large amounts of data. But there are two core things in SurrealDB that set it kind of in the middle as a hybrid transactional analytical database. And that is, the first thing is the storage layer of that data is separated from the compute layer. So SurrealDB can run as an embedded database like SQLite, it can run as a single node like Postgres, or it can run as a distributed cluster.
Tobie Morgan Hitchcock18:16 And you can scale this storage layer and you can scale the compute layer. What that means is if you've got large amounts of data, you can scale that independently. And then if you want to have lots of reads or you want to be doing lots of analytical queries, you can scale the compute layer out and then scale it back down as you need to. Or vice versa, depending on the needs of whether you've got lots of reads in your application, lots of writes in your application, and so on.
Tobie Morgan Hitchcock18:48 The second thing is when you combine traditional row-based data or document-based data with graph and you model it in certain ways, you can actually perform very powerful real-time analytics. So the word real-time has many different meanings in different technical environments, but effectively you're able to perform an analytical query in an expected amount of time. So instead of having to run this query and it takes a certain number of hours and you can process something for the next day, you can actually run queries and get back results very, very quickly.
Tobie Morgan Hitchcock19:29 So combining the transactional approach, which is when you insert data in the database, you know it exists there and it exists for everybody else reading that data after that point, but also when you want to run analytical queries using key-value or time series or graph or traditional, just row-based tabular data, it's very powerful. It enables you to mix and match those different types of queries that you might need in an application or in your backend, as it were.