Introduction
What is Mckoi Distributed Database
MckoiDDB is a distributed database system designed for applications that need to support low latency random access (read and write) queries on datasets that span a cluster of machines in a network. MckoiDDB provides the system for managing the storage of data over the network, and a client API for reading and updating the data which supports paradigms database developers are familiar with. MckoiDDB is designed to be easy to scale up or down as resources are added or removed in the network, and flexible in how the logical data models of an application are designed and implemented.
MckoiDDB is intended to be installed on high-speed private networks, and over instances in Cloud service providers.
Key Features
Transactional
MckoiDDB is a transactional system. A transaction in MckoiDDB is a fully isolated snapshot view of the database state which the API guarantees to be consistent. Strong consistency means you can not obtain a transaction with partially committed data or indeterminate state. A client may make changes to their snapshot which will be visible locally, but globally no other concurrent transactions will be able to see the changes. MckoiDDB implements Optimistic Concurrency Control, which means conflicting changes made by concurrent transactions are detected at commit time. This allows MckoiDDB to be lock (and deadlock) free.
Efficient
MckoiDDB is a low latency database, appropriate for interactive applications with large global throughput of queries, such as web services. The software achieves these goals through decentralization - supporting an architecture where every system that manages data and meta-data can be replicated, and by removing as many systems that can contend as possible.
Reading or writing data in a MckoiDDB database is generally handled in an independent way by the clients, however a completely decentralized system that manages deterministic state is a near impossible goal. The design of MckoiDDB has settled on an architecture where only a single function requires a lock when a commit happens. This function, called the Consensus Function, decides if a proposed commit is allowed or not, and if allowed merges the changes into the current snapshot. The Consensus Function is supported by a number of tools for moving data around very efficiently for high performance merge operations. In addition, MckoiDDB can partition a database instance into multiple instances (a feature called sharding), splitting the Consensus Function load over multiple servers.
Flexible
MckoiDDB has been carefully engineered to be extensible. Data model APIs are supported as add-on packages. The main release includes a data model called the Simple Database API which supports a File and Table data structure with concurrent consistency rules. Alternative data models can be implemented in MckoiDDB and we intend to support other structured data model APIs in the future. A goal is to release an SQL relational database package.
