Tuesday, December 16, 2014


I am trying to understand NoSql and as well compiling some of the available NoSql dbs out there.

A NoSQL (Not Only SQL) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.

A NoSQL database environment is, a non-relational and largely distributed database system. It enables rapid analysis of extremely high-volume, disparate data types. NoSql dbs do not provide a high-level declarative query language like SQL. Querying these databases is data-model specific. Many of the NoSQL allow for RESTful interfaces to the data.

There are 4 categories of NoSQL.

1) Key-values Stores - using Hash table where there is a unique key and a pointer. It is simplest and easy to use. (Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB, Amazon Simple DB, Riak are some examples)

2) Column Family Stores - created to process very large amount of data distributed over machines. Keys are pointed to multiple columns and columns are arranged by column family. (Cassandra, HBase are examples)

3) Document Databases - semi structured documents are stored in formats like JSON. Next level of key/value, allowing nested values associated with each key. supports querying more efficiently (CouchDB, MongoDb are examples)

4) Graph Databases - a flexible graph model is used, can scale across multiple machines. (Neo4J, InfoGrid, Infinite Graph)

Major companies implementing NoSQL databases are:
StackOverflow, GitHub, Twitter, Blizzard, Flickr, Digg, Instagram

Downloading Redis for windows: This shows how to use Vagrant to run the latest stable version of Redis.

RavenDB from Ayende is a .NET based backend and client NOSQL (specifically document database). The source is freely available. Indexing is done in a very clever way using LINQ. Rest interface, Web UI. Very very smart in fact. RavenDB can run as a Service, in IIS or via a console (exe).
REquires .NET 4 for server-side Documentation for RavenDb
MemcacheDB is a distributed key-value storage system designed for persistent. It is NOT a cache solution, but a persistent storage engine for fast and reliable key-value based object storage and retrieval. It conforms to memcache protocol (not completed, see below), so any memcached client can have connectivity with it. MemcacheDB uses Berkeley DB as a storing backend, so lots of features including transaction and replication are supported.

No comments:

Post a Comment