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:
2019 April 28 - 10:45
Duration:
1 h 30 min
Room:
CC-208
Conference:
LinuxFest Northwest 2019
Language:
Track:
Code
Difficulty:
Medium

Happening at the same time:

  1. Steganography - Hiding In Plain Sight
  2. Start Time:
    2019 April 28 10:45

    Room:
    CC-114

  3. What Was Old is New Again
  4. Start Time:
    2019 April 28 10:45

    Room:
    CC-208

  5. Lambda Calculus for the Practicing Programmer
  6. Start Time:
    2019 April 28 10:45

    Room:
    HC-104 Jupiter

  7. Paradux: Recovering From Maximum Personal Data Disaster
  8. Start Time:
    2019 April 28 10:45

    Room:
    HC-108

  9. Sex, Secret and God: A Brief History of Bad Passwords
  10. Start Time:
    2019 April 28 10:45

    Room:
    G-103

  11. Past, Present & Future of Blockchain
  12. Start Time:
    2019 April 28 10:45

    Room:
    CC-235

  13. We can fix email server encryption!
  14. Start Time:
    2019 April 28 10:45

    Room:
    CC-200

  15. CompTIA's NEW Linux+ Certification - All You Need to Know!
  16. Start Time:
    2019 April 28 10:45

    Room:
    CC-115

  17. Introducing Snaps and Snapcraft
  18. Start Time:
    2019 April 28 10:45

    Room:
    CC-202 Tutorials

  19. PostgreSQL: An Introduction to BARMAN
  20. Start Time:
    2019 April 28 10:45

    Room:
    HC-103 Postgres

  21. Web of Things API
  22. Start Time:
    2019 April 28 10:45

    Room:
    CC-236