Presented by:

Deb1cc6481ad042b20a38d43f359b849

K.S. Bhaskar

from YottaDB

With degrees in electrical engineering and computer science, and despite the fact that he also holds a degree in business administration, Bhaskar is a geek at heart. He has written a number of technical articles, and has presented at technical conferences. Bhaskar leads the YottaDB NoSQL database application development platform (https://yottadb.com & https://gitlab.com/YottaDB), which is available on GNU/Linux under a free / open source software license. He has used Linux (he currently uses Arch Linux, although he has used most all major distributions and desktops) as his primary desktop since 1999.

A proven, mature, continuously evolving, NoSQL database technology that has been in production for decades, has acquired new APIs.

Originally MUMPS was an operating system, a hierarchical database & file system, a user interface as well as a programming language. One booted into MUMPS and exited by shutting down the computer.

What makes it new again? While the language continues to have an active user community, its NoSQL database has been unbound. YottaDB created a library with a tight binding to the NoSQL database:

source $(pkg-config --variable=prefix yottadb)/ydb_env_set # setup environment
gcc -I $ydb_dist -L $ydb_dist -o myprog myprog.c -lyottadb
./myprog

and a simple set of functions to navigate and access and update data.

Data in the database is schemaless key-value tuples, e.g.,

["Capital","Belgium","Brussels"]
["Capital","Thailand","Bangkok"]
["Capital","USA","Washington,DC"]
["Population","Belgium",13670000]
["Population","Thailand",84140000]
["Population","USA",325737000]
["Population","USA",17900802,3929326]
["Population","USA",18000804,5308483]
...
["Population","USA",20100401,308745538]

Any meaning of a tuple is entirely up to the application. In the example above, the first key determines the type of data it is, and for Population data, if there are two keys, the value is the current population, and if there are three keys, the third key is a date and the value is the population as of that date. Any JSON or XML data structure can be represented as tuples, but not all tuples are representable as JSON structures. Furthermore, all relational and common NoSQL use cases can be represented as tuples.

All data are strings, except that certain strings are “canonical numbers” and treated specially (e.g., they sort in numeric order rather than lexical order). Other noteworthy features include:

  • Tight binding between database to language
  • Hierarchical locks (traffic light semantics)
  • ACID (Atomic, Consistent, Isolated, Durable) transactions
  • Two types of real-time replication with no distance limit

    • Business continuity in the face of unplanned and planned events (including most schema changes).
    • Real time feeds to systems for decision support (e.g., fraud detection), reporting, data warehousing, etc.

First deployed in production in 1986, the free / open source YottaDB code base today is the database of record at several of the largest real-time core-banking systems of record anywhere as well as the platform for a nation scale electronic health record system. Multi-terabyte databases are daily production use around the world.

As C is the lingua franca of computing languages, the API allows YottaDB to be accessed from other languages. A Go wrapper provide a native Go API, and Nodem provides access from node.js. We plan wrappers for other languages, like Rust to follow. For SQL access, and are developing Octo for SQL access.

The talk will discuss the database, the API, and our plans – and share some interesting history – with a demonstration and time for questions.

Date:
Duration:
1 h 30 min
Conference:
LinuxFest Northwest 2019
Language:
Track:
Code
Difficulty:
Medium