Blog > Post

New kids on the block: database management systems implemented in JavaScript

A scripting language is hardly the first choice when implementing a database management system, but JavaScript has evolved to a point where this became a very reasonable option.

Most people think of web browsers when talking about JavaScript, as this is still the predominant environment for using that language. That environment, however, has changed a lot.

In the stone age of the Internet, before 2010 or so, it was best practice to use JavaScript for nice front-end gimmicks such as pull-down menus or date pickers. Those were the days. The database was on the server, that was a no-brainer, and if you absolutely needed some persistency on the client, you used a cookie. Bon appetit.

Then powerful JavaScript-based web application frameworks came along, such as Backbone.js, AngularJS, KnockoutJS and Ember.js, which offer capabilities far beyond those of traditional libraries such as jQuery, making concepts like single-page applications a feasible option. Suddenly, even the top-level hackers became interested in that language. Additionally, Node.js brought JavaScript to the server, where it is still a somewhat exotic choice, but gaining very fast.

All of that made JavaScript-based database management systems a very useful thing to have. We have included three of them in our DB-Engines Ranking. Interestingly, they use very different approaches.

SQL.JS is a port of SQLite to JavaScript and thus offers all the features of an RDBMS. That works well on the server, while in a browser, storing the data in a file requires user interaction to bypass the security features of that environment.

LokiJS is an in-memory Document store. It shares with SQL.JS the restrictions regarding data durability, if that is needed.

PouchDB is the most popular of the new systems, ranking at position #115, which is quite impressive for such a new system. PouchDB is a Document store, implementing the CouchDB API in JavaScript. This is a quite natural choice, as CouchDB already uses JavaScript as server-side scripting language. Furthermore, this makes a very tight integration of CouchDB and PouchDB possible, for instance having a CouchDB database replicated as a PouchDB database. PouchDB uses API's such as IndexedDB for storing data, and thus doesn't suffer from the limitations of the other two systems.

You can see more information on these systems in our system properties comparison sheet.

People have occasionally asked us, why we do not include IndexedDB or Web SQL in our ranking. The answer is simple: Those are not DBMS's, those are API specifications. If anything, we would include implementations of those standards in our ranking. However, we feel that including Firefox and Chrome in a DBMS ranking is a bit far-fetched, even if they offer a DBMS API as a (small) part of their functionality.

JavaScript-based DBMS's are still a very small niche in the DBMS universe, but one that is likely to become even more important in the future. We have already more systems on our watch list, which we will include in the ranking as soon as they leave beta test stage and become officially available.

Share this page