BigchainDB

BigchainDB is an open-source blockchain database. It is a NoSQL database that has blockchain properties such as immutability, decentralization and owner-controlled asset. Immutability is the property that once the data is stored in BigchainDB, it can’t be modified or erased. Decentralization means there is no single point of failure in the control and storage process of the data. The owner-controlled asset is the property that only the owner of the asset can transfer the asset. The database provides the user with Byzantine Fault Tolerance (BFT) with no more than one-third arbitrary node failures. There are two main layers in BigchainDB, the consensus layer based on Tendermint the and storage layer based on MongoDB.

History

The first version of BigchainDB was published in February 2016. However, there were many issues with the initial version. For example, the system was not Byzantine Fault tolerant, and there was a single point of failure in the underlying storage database and the system supported only one logical database, which means once got the control of the database the adversary could delete the whole database. BigchainDB 2.0 was published in 2018 and solved all the issues above.

System Architecture

Shared-Nothing

Concurrency Control

Two-Phase Locking (Deadlock Prevention) Optimistic Concurrency Control (OCC)

The consensus layer is based on Tendermint. Tendermint uses LevelDB as blockchain storage. LevelDB uses Two-Phase Locking with Deadlock Prevention, see LevelDB for more details. The storage layer on each node is based on MongoDB. MongoDB uses Two-Phase Locking with Deadlock Prevention and Optimistic Concurrency Control, see MongoDB for more details.

Views

Virtual Views

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Query Execution

Tuple-at-a-Time Model

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Query Compilation

JIT Compilation

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Storage Architecture

Hybrid

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Checkpoints

Consistent Blocking

The consensus layer is based on Tendermint. Tendermint uses LevelDB as blockchain storage. LevelDB builds checkpoints in a blocking manner, see LevelDB for more details. The storage layer is based on MongoDB. MongoDB builds consisten checkpoints, see MongoDB for more details.

Logging

Logical Logging Physiological Logging

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Data Model

Key/Value Document / XML

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details. The main data model is Document/XML.

Indexes

B+Tree Skip List Log-Structured Merge Tree

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details. The B+Tree is the index for main storage.

Joins

Not Supported

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details.

Query Interface

HTTP / REST

Isolation Levels

Read Uncommitted Snapshot Isolation

The consensus layer is based on LevelDB, see LevelDB for more details. The storage layer is based on MongoDB, see MongoDB for more details. LevelDB guarantees snapshot isolation for blockchain storage. MongoDB guarantees read uncommitted isolation level for main storage.

BigchainDB Logo
Website

https://www.bigchaindb.com/

Source Code

https://github.com/bigchaindb/bigchaindb

Tech Docs

https://docs.bigchaindb.com/en/latest/

Developer

BigchainDB GmbH

Country of Origin

DE

Start Year

2015

Project Type

Commercial, Open Source

Written in

Python

Supported languages

JavaScript, Python

Licenses

Apache v2