Over a million developers have joined DZone.

An Overwhelming Era of Databases

DZone 's Guide to

An Overwhelming Era of Databases

· Java Zone ·
Free Resource

This era is significant in terms of the number of databases that have made their way into the enterprise data centers:

1.  Column Based

Column Based Databases are not different from RDBMS on a structural point of view, but they do allow columns to be created on the fly unlike RDBMS (it’s bit relaxed). if you define a table with 2 columns and store a record with 3 columns, you will see three columns inserted even though the 3rd column wasn’t defined.

Solutions: Cassandra, etc.

* Partially schema less.

* No ACID properties.

* Supports CQL (similar to SQL syntax, for SQL users :) )

2. Graph or Hierarchy

Graph databases store data in the form of Vertex and edges, vertices are connected by edges. In a typical world where you want to define relational data, Graph database would fit in well.

Ex: Company -> employee -> family -> etc.

* Works with multiple storage options, Titan works well with Cassandra.

* Very effective in navigating from one node to another, you can visualize like navigating from friends to friends in a social media.

Solutions: TitanDB, Neo4J, etc.

3.  Document

The data is stored as a JSON document. It’s easy to serialize & de-serialize when you store it as a document, and especially for java development environments, JSON saves lot of boiler plate code.

Solutions: MongoDB, CouchDB etc.

4. KeyValue Store

This category is a filler for everything else that talks about being NoSQL and fits into the above.

Solutions: Redis, MemcacheDB, HazelCast etc.

5.  RDBMS++ &--

This is a new trend where you can get the benefits of both worlds (RDBMS & NoSQL). 

Ex: ACID property, Security & so on.

Solutions: NuoDB, etc.

The more choices you have, the more the complications in choosing the right fit.

I am no exception :) , Good luck with it.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}