Oct 29, 2018

GaianDB - a small dynamic distributed federated database

GAIAN Database (hereafter referred to as GaianDB) is a small (four-megabyte) dynamic distributed federated database (DDFD) that was written in Java™. This is  the ultimate Data virtualization engine for accessing data up to the edge of the network or for DB scaling in the Cloud. GaianDB is an extension to Apache Derby that federates heterogeneous back-end data sources (RDBMS databases, files, text indexes, and so on) using a logical table abstraction layer. However, its principal feature is its ability to autonomically discover and federate other GaianDBs, federating nodes such that a whole network of nodes can be formed, making it ideally suited for the Cloud. Its connectivity model is "biologically inspired" in that it strives to minimize network diameter and maximize connections to the most fit nodes. GaianDB advocates a flexible "store locally, query anywhere" (SLQA) paradigm allowing for pretty good elascticity.

GaianDB also provides a wide variety of other features, such as dynamic re-configuration; an "explain" network-route query option; in-memory tables and indexing; MQTT (MQ Telemetry Transport) integration; and contextual metadata. GaianDB has already been used in complex, distributed, semantic join queries for text analytics applications and has drawn the attention of significant customers in the military.

GaianDB combines multiple technologies to reach data wherever it resides, whether on sensors, file systems, text indexes or RDBMS. It also includes some concepts taken from federation techniques, mobile ad-hoc networks, grid computing, and autonomic computing technologies in order to manage the overall database with a minimum of human intervention.
GaianDB's self-organizing implementation makes it easy to manage and to cope with failures or network topology changes, and it is easy to deploy GaianDB on thousands of devices and computers with no central management or in a Cloud. An automatic query propagation mechanism allows an application to get to the specific data anywhere in the network just as if it were a local database.