Home              GitHub Twitter StackOverflow Slack Mail


mm-ADT

A Multi-Model Abstract Data Type


mm-ADT mm-ADT™ is a distributed virtual machine capable of integrating a diverse collection of data processing technologies. This is made possible via three language-agnostic interfaces: language, process, and storage. When a technology implements a respective interface, the technology is considered mm-ADT compliant and is able to communicate with any other compliant technologies via the virtual machine. In this manner, query language developers can develop languages irrespective of the underlying storage system being manipulated. Processing engines can be programmed by any query language and executed over any storage system. Finally, data storage systems automatically support all mm-ADT compliant query languages and processors.

mm-ADT Components

From relational to graph query languages, real-time to batch analytics, and from single machine to cluster-oriented data stores, mm-ADT can be used to generate synthetic data infrastructures tailored to the problem at hand.


Founding Purpose

mm-ADT was originally planned for release under the Apache2 free software license. However, after some reflection, it was deemed that free software is perhaps not the best means of distributing technology at this point in time in our industry. In order to create a more responsible relationship between OSS and business, mm-ADT provides a means of compensating open source developers for their efforts at the Apache Software Foundation, Cloud Native Computing Foundation, and other similar OSS foundations. The intention is not to have developers abandon their foundation affiliations, but instead to encourage them to also integrate their projects with mm-ADT. By doing so, their technology is given a commercial outlet, where the revenue generated from product licensing goes directly to the developers.

For more information, please review: The mm-ADT Perspective.


Technologies

The mm-ADT virtual machine integrates query languages, processors, and storage systems. Engineers developing any of the projects below are invited to join the mm-ADT VM public mailing list and propose an mm-ADT integration project (see The mm-ADT Open Source Model).

The mm-ADT VM is currently in the initial stages of development. The itemized projects below will be compatible with the first release, where a subset is intended to be offered by mm-ADT.


The mm-ADT virtual machine allows disparate data technologies to coordinate in both a static and dynamic, plug-and-play manner. By universally integrating the world’s defacto open source data technologies, mm-ADT becomes malleable enough to support contemporary use-cases, while remaining adaptable to future theoretical and applied advances. The mm-ADT architecture was designed to further specialize the developer’s expertise. It is hypothesized that individual projects will be simpler to manage and engineer, while the number of projects and their rate of evolution will increase. Because mm-ADT provides a collective focal point, individual projects are no longer responsible for developing every aspect of a data system which, historically, has yielded the monolithic, decade-long projects we enjoy today.

Query Languages

Apache Gremlin: a traversal query language for graph-structured data.
ISO GQL: a hybrid relational/traversal query language for graph-structured data.
ISO SQL: a popular relational query languages.
Linux Foundation GraphQL: a path-based query language for hierarchical data.
W3C SPARQL: a pattern-matching query language for triple and quad-based data.
W3C XPath: a path-based query language for hierarchical data.

Processing Engines

Apache Apex: A unified stream and batch processing engine.
Apache Beam: A unification framework for stream processors.
Apache Flink: A near-time analytics processor for cluster-oriented computing.
Apache Hadoop: A batch analytics processor for cluster-oriented computing.
Apache Spark: A batch analytics processor for cluster-oriented computing.
Lightbend Akka: A message-passing processor for co-located computing.
ReactiveX: A push-based stream processor for multi-threaded data processing.

Storage Systems

Apache Arrow: A cross-system data layer for columnar in-memory analytics.
Apache Cassandra: A masterless, wide-column distributed database.
Apache HBase: A wide-column distributed database built on Hadoop’s HDFS.
Apache Ignite: A distributed key-value/relational database.
Apache TinkerPop: A unification framework for graph databases and processors.
Facebook RocksDB: An embedded key/value storage system.
MongoDB: A document-oriented database for storing and querying JSON.

While mm-ADT currently realizes three logical partitions of the data technology space: language, processor, and storage—once demonstrated viable, each partition may be further divided with, e.g., projects focused on disk-layouts and indexing structures, to projects exploring novel data models and respective language semantics necessary to address the upcoming challenges in our collective pursuit of the nature of structure and process.


Cloud Computing

Cloud computing services make software deployment and licensing easier with pre-configured images and pay-as-you-go billing. An mm-ADT project dedicated to packaging the mm-ADT VM and its associated technologies for use with the major cloud vendors would open mm-ADT projects to new licensing models and income streams. Most importantly, the mm-ADT cloud computing team would benefit from being at the forefront of a potentially large source of revenue.

Amazon AWS: Amazon’s cloud computing services.
Google Cloud: Google’s cloud computing service.
Microsoft Azure: Microsoft’s cloud computing service.


Licensing

mm-ADT is dual licensed: AGPL3 and a commercial license through RReduX,Inc.