BigchainDB: A Popular And Powerful Database For Blockchain
Open Source For You|August 2019
BigchainDB: A Popular And Powerful Database For Blockchain

Blockchain technology offers decentralised control, where no one has any ownership or control over the network; and a tamper-proof environment, where nothing gets deleted from network storage. It also has the ability to create and transfer assets on the network without reliance on a central entity. Blockchain storage, however, requires a powerful database, and this is where BigchainDB comes in.

Anand Nayyar

As single monolithic blockchain technologies now have a wide range of applications, they have been re-framed and refactored into building blocks at four levels of the stack:

-Applications

-Decentralized computing platforms

-Decentralized storage (ledgers, file systems, databases), decentralized processing (smart contracts) and decentralized communication

-Cryptographic primitives, consensus protocols and other algorithms Blockchain storage requires a powerful database, and the traditional blockchain as a database (DB) is pathetic, as the throughput is just a few transactions per second (tps), latency before a single confirmed write is 10 minutes, and the capacity is a few dozen gigabytes. Also, adding new nodes causes problems in terms of network traffic, congestion, latency, throughput, and capacity. As compared to traditional databases, a modern distributed database provides throughput exceeding 1 million tps, 1000 TB storage, the latency that is a fraction of a second, with no effect on throughput and latency when increasing the number of nodes. In addition, modern databases have good capabilities for insertion, querying, access control and security.

In this article, we introduce the concept of BigchainDB, which is used for database-style decentralized storage.

BigchainDB

BigchainDB allows developers and enterprises to deploy blockchain proofs-of-concept, platforms, and applications with a scalable blockchain database. It supports a wide range of industries and uses cases, from identity and intellectual property to supply chains, energy, IoT and financial ecosystems — all without sacrificing scale, security or performance. With high throughput, sub-second latency and powerful crypto-condition escrow functionality to automate release-of-assets, BigchainDB looks, acts and feels like a database but has core blockchain characteristics that enterprises want.

As compared to Ethereum, Hyperledger or other blockchain systems, BigchainDB doesn’t build a full stack of blockchain technologies, but rather, offers an overlay onto existing database technologies to ‘blockchain-if’ them. BigchainDB is designed to merge the best of the database and blockchain worlds — scale and querying from the database side; and decentralization, immutability, and assets from the blockchain side. It starts with an initial open-source database, i.e., MongoDB, and adds blockchain characteristics including decentralized control, immutability, and the creation and movement of digital assets. BigchainDB easily accommodates 1 million transactions per second and explicitly excludes having a virtual machine or another mechanism for running smart contracts.

The following are the three main characteristics of BigchainDB.

-Decentralized control:

No single entity controls the network. Every node has its own locally-stored list of the public keys of other consortium members — the so-called keyring. There’s no centrally-stored or centrally-shared keyring.

-Immutability: Data once wrote cannot be changed or altered. For example, the decimal digits of π are immutable (3.14159…)

-Transfer of digital assets: It has the ability to create an asset and transfer it without central control.

A BigchainDB instance consists of a number of nodes, all of which contain parts (but not all) of the complete database. The decentralized control is achieved by this DNS-like federation of nodes, which have voting rights in the validation of blocks. Voting operates on a layer above the actual database and in order to achieve speed, each block of transactions is written before being validated by a quorum of nodes. Nodes vote to validate a transaction and at validation time ‘chainify’ the block, as each block provides a hash ID of the previous block. Immutability is achieved through a combination of shard replication, disallowing reversions, database backups and the cryptographic signing of all transactions.

BigchainDB technology ensures an efficient decentralized database. It supports millions of writing operations per second, storing PB-level data and delivering a sub-second response time.

Related terminology

To understand the in-depth technical functionalities of BigchainDB, it is important to understand the related terminology.

-BigchainDB node: This is a machine or logical machine running the BigchainDB server and other software, and every node is controlled by one person or organization. A set of BigchainDB nodes can connect to each other to form a cluster. Each node in the cluster runs the same software. A cluster contains one logical RethinkDB datastore. A cluster may have additional machines to do things such as cluster monitoring. There are several kinds of nodes:

1. A dev/test node is one created by a developer working on the BigchainDB server, e.g., for testing a new or changed code. A dev/ test node is typically run on the developer’s local machine.

2. A bare-bones node is deployed in the cloud, either as part of a testing cluster or as a starting point before upgrading the node to production readiness. Our cloud deployment starter templates deploy a barebones node, as do our scripts for deploying a testing cluster on AWS.

3. A production node is part of a federation’s BigchainDB cluster. A production node has the most components and requirements.

articleRead

You can read up to 3 premium stories before you subscribe to Magzter GOLD

Log in, if you are already a subscriber

GoldLogo

Get unlimited access to thousands of curated premium stories, newspapers and 5,000+ magazines

READ THE ENTIRE ISSUE

August 2019