Blog
Sorry, your browser does not support inline SVG.

2019 Holiday Greetings and News

As YottaDBⓇ reaches the two and a half year mark, the year-end season is an opportunity for us to reflect on where we started, and where our journey has brought us.

In 2017 three of us started YottaDB, having each worked on GT.M for over twenty years. With a sense of accomplishment, we could point to our contributions. But the GT.M database would never be directly accessed by any language other than M and we believed that the database had value to applications beyond those written in M (see The Anchovy Pizza Company – Not!).

At the end of 2019, we have organically grown to a team of ten. Our office in Malvern, which felt empty when we moved in, will feel cramped when we add our next couple of team members. We anticipate moving to a bigger office when our current lease ends.

In a word, the goal of YottaDBⓇ is persistence. Any application, in any language, and on any platform, should be able to entrust its data to YottaDB. While that may be an overambitious dream, we have a roadmap.

We started by creating a native C API to the database engine. We did this in two stages, first a set of functions for single-threaded applications, and then additional functions for multi-threaded applications. As C is the lingua franca of computer languages because all programming languages have the ability to call C code and be called by it, a high-performance, native C API opened the door to YottaDB access from other languages, using “wrappers”. Our goal with each wrapper is to provide a robust, high-performance API that a programmer in that language would consider intuitive. The first language for which we created a wrapper is Go. Programming YottaDB in Go is now fully Supported with production grade code. In 2020, we hope to release wrappers for Rust and Python, with more languages to follow.

As all of our work is 100% free / open source software (FOSS), our community also contributes software to the YottaDB ecosystem. For example:

  • Nodem (thanks, David Wicksell!) provides a Node.js API to YottaDB.
  • A Perl pod (thanks, Stefan Traby!) provides access from Perl.
  • CFMumps (thanks, John Willis!) provides Cold Fusion Markup Language access to YottaDB.
  • The M Web Server (thanks, Sam Habiel and Christopher Edwards!) provides web services from YottaDB.
  • QEWD (thanks, Rob Tweed!) is a Node.js-based framework for building REST APIs and interactive, real-time web applications, whilst abstracting YottaDB data as on-disk JavaScript objects.
  • Chris Munt’s GitHub page (thanks, Chris Munt!) provides numerous interface packages for YottaDB, as well as his own native SQL engine.

Although YottaDB is a hierarchical key-value NoSQL database, able to handle schemas that are a superset of relational schemas, Octo logomany applications have relational schemas, and even applications with non-relational schemas have relational subsets of their schemas. To accommodate the large number of tools for analytics and reporting of relational data, we are investing heavily developing OctoⓇ, a SQL engine to access relational data in YottaDB databases. Octo CREATE statements define tables and their mapping to YottaDB global variables. Octo compiles SQL queries to native object code that directly accesses YottaDB global variables with minimal overhead.

Throughout our work, we have maintained upward compatibility with upstream GT.M releases. Issues in GT.M addressed during integration with YottaDB code baseWe integrate the code of GT.M releases into the YottaDB code base. As we do this, we create automated regression tests, find, and fix bugs. Upgrading from GT.M to YottaDB is functionally 100% upward compatible, and follows the same steps as upgrading from an older GT.M version to a newer version (conversely, for M application applications, downgrading from YottaDB to GT.M follows the same steps as downgrading from a newer GT.M version to an older one).

YottaDB is a fully open project. This means that when we fix an issue or add an enhancement, under our GitLab projects you can see the code changes, you can see review comments and responses, and you can see associated automated regression tests. So when our release notes mention a fix or enhancement to the software, you have complete traceability to the associated code changes and tests. This traceability adds significant value beyond just having the code for a release available under a FOSS license.

In closing, we would like to take this opportunity to wish you a Merry Christmas, Happy Hanukah, Joyous Kwanzaa – whatever you celebrate this season – as well as a Wonderful New Year in 2020. You make YottaDB possible. We thank you and look forward to serving you in 2020.

The YottaDB Team
in alphabetic order: Bhaskar, Brad, Chris, Ganesh, Jon, Joshua, Matt, Narayanan, Saraswathi, and Steve.
with wags from: Dash and Emmy

Published on December 20, 2019