15 Futuristic Databases You’ve Never Heard Of
I ran across this video on YouTube, going over various database systems that were different from the relational database systems most developers are familiar with. I wanted to pick a few of them to check out in more detail.
** 8base: **
8base describes itself as a Backend-as-a-Service. They make it easy to create data tables and then setup up an endpoint where we can use GraphQL to work with the data.
8base has a free tier where we can setup our own test.
8base uses MySQL on the backend. They provide a simply designer to create our tables. There are four attributes that we can chose to auto-generate for each table: ID (alpha-numeric), Created By, Created At, Updated At.
We can also define custom attributes, using these data types: Text, Number, Date, Switch (Boolean), File (Blob), Table (For relationships), JSON, Geo, Smart (Address or Phone Number types).
We can then import data from CSV files, or enter data manually in the utility page.
Once the tables and data are in place, we just have to click a button to generate an endpoint. We can use the API Explorer in 8base to query our data, using GraphQL. I’m not too familiar with using GraphQL, but it was simple to put together a select to return the ID and Team Name for the ‘Falcons’ record:
{ team(teamName: "Falcons") { teamName id } }
You can also create functions in Javascript, create and maintain API users and roles. Definitely a quick way to get a database and API created quickly.
** Dolt **
Dolt is a MySQL compatible database that supports versioning. The aim is to operate much like Git, where schema and data are both version controlled, and updates are committed to a repository.
Dolt is free to use. There is also DoltHub, a web interface to manage your repository. There’s a basic tier that’s free to use, as well as a paid Pro tier. You can also download a Dolt CLI, if you prefer.
The aim of Dolt is to operate much like Git, with DoltHub their version of GitHub. We can create databases, and create tables. I went through DoltHub, and found it easy to set everything up. I used SQL to create tables and add some test data (There’s also a spreadsheet-like app that can be used to manage data). Once you’re set up, you commit the changes. You can add data and/or make schema changes the same way, then create a pull request. The changes get made to a branch, and they can get merged back to main, once the time is right.
You’ll have a commit log to record all of the changes, and you can create releases as well. If you use the Hosted DoltDB option, you can deploy changes easily as well.
** MindsDB **
MindsDB lets you create models for Machine Learning in your database, using SQL syntax. You create what MindsDB calls an ‘AI table’, which is the ML model built off of your data source.
You can run in the MindsDB cloud, or self-host. On the cloud version, there is a Demo tier where you can run through tutorials with prepared data. There’s also an Open Source and a Prod tier there.
In the MindsDB console, you run CREATE DATABASE to create a connection to your database source. There’s a long list of supported database systems that you can connect to. In the Demo, they connect to a Postgres DB.
The CREATE MODEL commands will create your ML model and train it. In the command, you specify which value that you’re wanting to predict. The system uses a ‘Lightwood’ ML engine by default, but there are several others available to use.
Running a simple SELECT will retrieve the prediction for a specified record.
Predictions can be run in these ML categories: Classification, Natural Language Processing, Regression, Time Series.
The predictions from the model are generated as you issue SELECT statements. You can create view with the prediction query, you can also create tables to store the results of any predictions that are created.
** Xata **
Xata describes themselves as a Serverless Data Platform. It combines Postgres, as the main data store, with Elasticsearch, for search and analytics. Data is written to Postgres, and the data changes are pushed into Elasticsearch (using Kafka), as well as pushing to eventually consistent replicas. The user can interact with a REST API, which will hit the appropriate data store. The API supports a GraphQL-like query language, which includes free-text search and aggregates. The API uses API keys for authentication.
Xata also supports the concept of branching for databases. So you can branch off to create Dev or other environments, and can merge schema changes back into production.
The Serverless Data Platform is similar to Backend-as-a-Service, but concentrates more on the data layer. So there may not be the authentication or hosting capabilities as you would get from a BaaS system, but provides extra functionality with the multiple data stores, covering more scenarios for interacting with data.
Xata as a free tier, so it’s easy to jump in and experiment. There’s a web interface for setup and maintenance, a Xata CLI available, as well as SDKs for Python and Javascript.
Each table includes an auto-generated alphanumeric ID value as a key. You set up a defined schema, but some data types let you work with arrays or other semi-structured types of data. You can also choose from these data types for custom attributes:
String, Long Text, Integer, Decimal, Boolean, Multiple Select (Array of strings), Date, Email, Vector (floats). Can choose column type of Link To Another Table to set up a foreign key. There is an Object data type, but it is not fully implemented.