Next Generation Databases, Next Generation tools
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 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.
We hope you’ll try dbKoda, and let us know what you think about it at our feedback pages.