Blog Photo

Next Generation Databases, Next Generation tools

  • Jun 28, 2017
  • Guy Harrison

It's rare in the world of software to see a single architecture dominate as comprehensively as the relational model of database. The relational database (RDBMS)– actually a hybrid of Codd's relational data model, Gray's ACID transaction model and the SQL language – defined every significant new database system released between 1985 and 2000.

The relational database stranglehold broke suddenly in 2008 and 2009. New technologies and new imperatives encouraged the development of new databases such as MongoDB, Cassandra and Hadoop. Some of the key trends were:

  • • Google’s work on BigTable, MapReduce and Google File System which led directly to Hadoop
  • • Amazon’s Dynamo; distributed database system which inspired Cassandra and Riak
  • • The emergence of JavaScript and JSON as the key to rich web experience
  • • The Agile and DevOps movements which required databases that could react quickly to changes in application models
  • • Application stacks that were Open Source from floor to ceiling became the dominant choice for new application development.

A new generation of database technologies require a new generation of productivity and development tools. So it is incumbent upon us to consider what we should look for in the new world of next generation databases.

One of the premises of the previous generation of database productivity tooling was that a user interface should allow database operations to be performed without code. This makes sense in the RDBMS world because most database changes were performed manually by the DBA and a GUI interface could produce the opportunity for ‘typos’ However, in the modern world almost every database operation needs to be repeatable and scripted. Furthermore, the traditional relational DBA typically had little or no programming skills. However, in the modern world the DBA is typically a developer, who wants to find programmatic solutions to complex problems. Therefore, a modern tool should embrace coding rather than attempting to hide the code from the user.

There's a similar argument to be made for integration with command-line shells. Since time immemorial – or at least for the 35 years I’ve been in the business - databases have presented a command-line interface for issuing commands and queries. Productivity tools generally tried to replace the command-line interface. However, environment in which continuous integration prevails, the command-line interface becomes the primary means by which database changes are migrated to production. This means that a modern tool must fully support all the syntax and functionality of the command-line , albeit wrapped up in a pleasant and productive user interface.

There's always a place – or at least I hope that will always be a place – for commercial software. Programmers deserve to be paid, and software can’t always be free. However, it makes no sense to choose a closed source commercial product to manage an open source database like MongoDB. Therefore the core of a modern database tool must remain open source.

Finally, it goes without saying that in the modern world databases are increasingly likely to run in the cloud, and we expect all about tools to be available on any platform – mobile, windows, mac, Linux - as well as fully functional within a browser. A modern database tool should support web, mobile and desktop equally. Today, the best way to power a rich and comparable experience on desktop, mobile and web is to write a rich JavaScript application and package it with Electron.

: dbKoda IDE

These are the design principles we had in mind when creating dbKoda - a next generation database productivity platform, initially supporting MongoDB. It’s a rich JavaScript application, with extremely strong coding support, integration with the MongoDB command-line and UI that always shows you the code that is being generated. It’s licensed under the AGPL so you can be sure it will always be free. Installers are available now for Windows, Linux and Mac, or you can build it from source here.

We hope you’ll try dbKoda, and let us know what you think about it at our feedback pages.