The Story of the IT-depression, birds and EJDB 2.0

It is 2011: popularization of NoSQL

The question about birds was asked in far-off 2011, and I really started to think about it. My lazy stream of thoughts was interrupted by a mundane developer’s task: to make a convenient information storage and search system for audio files metatags for a small media player written in C++.

  • It was difficult to use MongoDB as an add-on DLL because it’s developers initially didn’t plan for such a use case, and the MongoDB was not technically ready for this.
  • MongoDB was under AGPL license which is, in my opinion, detrimental. AGPL doesn’t bring anything to the world of open software and usually just a convenient cover for the commercially-licensed products with a shareware code.
  • Document-oriented with a possibility to store hierarchy of documents with an arbitrary structure.
  • Support JSON documents collections.
  • Implemented in C99 language.
  • Free license which allows use in the closed sourced products.

Same trap twice

As you can guess, we created our own solution, which was inspired by the MongoDB: a database management system implemented as a shared library (EJDB 1.0).

2018: inspiration gained

It took a few years to finally convince myself that birds are not smarter than humans. They instinctively use the laws of nature unable to comprehend them and to use according to their needs. But aren’t many developers doing the same? Instead of comprehending “the laws of nature” they thoughtlessly migrate to technologies and frameworks like IT-birds migrating with the seasons? A true story (from job interviews):

Andy Warhol

EJDB 2.0: philosophy of openness and simplicity

Open source can not be half-open, so we decided to use the MIT license for all the project components, completely getting rid of LGPL code from the TokyoCabinet.


Iowow can work with a lot of key-value data sub-bases, stored in one file, which simplified transferring the data between devices and making backup copies and it also reduces the chance of inconsistencies in the storage data.


During the work on EJDB2 we reconsidered the search queries format and we introduced a new, more intuitive (comparing to the 1.x version) XPath-like search queries — the JQL language.


It is always better to have a choice than not, so, despite that the easiest and the most efficient way of accessing the data is to do it locally, with EJDB2 you can expose your database via HTTP/Websocket protocols so you can access it remotely over the network using a simple text protocol. This substantially broadens the number of architectures you can have with EJDB2. To enable remote access, built-in HTTP server can be configured and started using C API or a separate executable can be started. You can both query and manage your data using network API.

Gillette Elvgren

Aside from the hype-rays

Having finished with the birds, I got haunted by the thoughts about a spanner — this invention was not intended to tighten all possible kinds of screw-nuts but the number of screw-nuts existing just for this spanner is enough for it to have it’s purpose of life. On the other hand, it is weird to tighten all screw-nuts with one spanner. It’s quite common to promise developers to ride a spaceship but in reality they dig a tunnel with a pickaxe. We give them pickaxe right away because it is the only way to stop being a bird and understand which spanner will suit which screw-nuts.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store