7.20.2019

Introduction to Cloudant


Cloudant is a NoSQL database as a service, and
actually has some unique features which can't be found in other NoSQL databases.
All is based on open source technology, so there is no vendor login.
Cloudant was founded 2008 by three MIT researchers working in the physics
department. 
 
They had to address a big data problem caused by a vast amount of
data created by the large hadron collider.
Cloudant was a, born in the cloud, solution so
there doesn't exist an offering you can download and install yourself.
It runs Apache NoSQL database in its core. 
 
ApacheCouchDB at that time was not horizontally scalable.
So of course, you could scale it vertically by just adding additional CPU
cores in the main memory. 
 
But there was no support for horizontal scaling,
which basically means you add additional physical machines to form a cluster.
Therefore, Cloudant implemented a system called BigCouch in order to add
exactly this missing horizontal scaling support to ApacheCouchDB, and
donated it as open source. 
 
BigCouch, by sitting in front of a ApacheCouchDB cluster,
API-wise behaves like a single CouchDB instance but
takes care about distributing the workload using a hashing algorithm.
Using MVCC, CouchDB supports massively, parallel high throughput writes and
updates. 
 
Using MVCC, also ACID properties, as found in relational databases as supported.
So, for example, concurrency is addressed by simply storing the same document twice,
with different revision IDs, and leaving resolving of those conflicts
up to the application, which can issue appropriate merge and delete operations.
 
Horizontal scaling is supported by a replicated
horizontally scaled cluster architecture with offline support.
This means if a remote replica is not available during a write operation,
data is replicated to the remote node once it is available again.
Therefore, complying to the eventual consistency guarantee which CouchDB
supports. 
 
This means, there is no guarantee that our replicas are in sync at a particular point
in time, but each document will be in sync eventually.
So in summary, thousands of clients worldwide are using Cloudant.
And it is an ideal storage solution for
IOT sensor data because it supports extraordinary high data ingestion
rates due to a highly scalable parallel architecture.
Storage costs are still relatively low.
And the database can adapt to changing resource demand on your IOT application by
dynamically add and remove resources on the fly without downtime.
As a side note, CouchDB even supports installation of updates without downtime.
This is a feature of the Erlang programming language CouchDB is based on