I was reading Python’s documentation in order to start working on an app for a friend of mine, Python fits well in that project because the list data type it supports. While reading about lists and sets in specific I thought these Python features could serve as the basis for a DBMS development exercise, and it is how it all began.

I started thinking about the specific implementation and wrote some code to kick start the project, it is hosted in Bitbucket and is released under the Apache 2.0. license terms so anyone can join the learning experience by contributing to XE which is the DBMS’s name. https://bitbucket.org/ecelis/xea

As I said above, the plan is to leverage Python strengths, besides the sets and lists the language provides modules and methods for handling the filesystem. So to avoid unnecessary complexity the storage engine uses the underlying operating system’s filesystem hierarchy; this is not an original idea, until the year 2012 I was working for VectorstarDB a company whose main product was a column oriented DBMS (you can read a technical overview about it here), I’m only recycling some ideas from there.

It is not my goal to develop a commercial product or anything, I think about XE more like some sort of Minix, a tool for learning DBMS design and implementation, along with gaining Python experience along the way.