Write unifyDB dev diary #0

This commit is contained in:
Jeremy Dormitzer 2020-08-16 15:13:12 -04:00
parent 0335545a73
commit a71e0a81ae

View File

@ -0,0 +1,25 @@
#lang pollen
(define-meta title "UnifyDB Dev Diary 0: Im building a database!")
(define-meta published "2020-08-09")
Phew, its been a while! Over a year, in fact. And what a wild year! Lots of good things happened: I got married, got a new job that I love, moved to a nice new apartment. Also some not-so-nice things, but since you are all living through 2020 just like me I dont think I need to go into those. But I have still found some side-project time, and Id like to start talking about what Im building.
So Im excited to announce that Im building a database! Im calling it unifyDB. Its going to be a general-purpose database with some pretty interesting properties:
ul{
li{It maintains a complete history of changes to all entities stored in the database}
li{You can make queries for historical data, e.g. what did this user record look like last Tuesday?}
li{Arbitrary metadata can be attached to transactions for example, you can add an application user ID to every transaction your app makes}
li{Fine-grained access control is built into the database, allowing developers to limit access to particular attributes across all entities}
}
This is the database that Ive always wanted basically, Im tired of being in meetings where the boss says who changed this users email address? and everyone just looks at each other and shrugs.
Im designing unifyDB to be as modular as possible I want it to be as easy to run it as a single node on your local machine as it is to run in an autoscaling cluster on your cloud of choice.
Ive actually been working on this on and off for over a year. The code lives in link[#:href "https://github.com/unifydb/unifydb" #:target "_blank"]{a GitHub repository}. Fair warning: its mostly undocumented and nowhere close to being finished. So far, Ive written the query engine, the transaction handler, the web server (yes, it has an HTTP interface), and a bunch of underlying infrastructure. So as it currently stands, unifyDB is able to store data (in-memory since I havent built the storage layer yet) and issue history-aware queries. Im in the middle of writing the authentication mechanism. After that, its on to the storage layer, then most likely the access control layer.
Im going to start publishing monthly development diaries detailing the more interesting aspects of database. Ill start with a post about the query system implementation sometime in the next couple of weeks. Sound interesting? Follow along link[#:href "https://feedly.com/i/subscription/feed%2Fhttps%3A%2F%2Fjeremydormitzer.com%2Fblog%2Ffeed.xml" #:target "_blank"]{on Feedly} or ◊link[#:href "https://jeremydormitzer.com/blog/feed.xml" #:target "_blank"]{your RSS reader of choice}!.
In the meantime, if you want to know more about unifyDB or just want to geek out, hit me up link[#:href "https://twitter.com/jeremydormitzer" #:target "_blank"]{on Twitter}.