In our last post, we looked at column store and document store categories. In this post we will see the remaining two, key-value store and graph store.
Key-value store: Similar to document store in the context of not defining the schema; however, Unlike a document store that can create a key when a new document is inserted, a key-value store requires the key to be specified and the key must be known in order to retrieve the value. Please not that querying is not possible — you will not get SQL/SQL like support. There will be no relationship between entities.
Think of dictionary data structure in Python.
Key-value is mainly implemented in in-memory distributed/cache storage. Hence, the advantages are fairly straightforward. Quick retrieval of data. Applications, which require real time responses would like to use an in memory database, perhaps application to control aircraft, in cases, where the quick response times are crucial.
Examples are Redis, MemcacheDB (built on Memcached), Berkley DB
Graph Store: Graph databases are special case of NoSQL. It is a databases that uses a graph structure to denote the relationship between entities. There can be multiple links between two entities in a graph, making it known that the multiple relationships that the two nodes share.
The relationships represented may include social relationships between people, transport links between places, or network topologies between connected systems. The advantage that graph databases have is easy representation, retrieval and manipulation of relationships between the entities in the system. Use it only if there are relationships between the data.
Example of such database is Neo4j
There are some databases available which can support multiple categories that we have seen so far. One such beauty is OrientDB, that supports document store, key-value store (quick retrieval is possible due to MVRB-tree indexing algorithm and so fast look-ups) and graph store. Completely written on Java and hence can run on windows/linux/anything that has java in it operating systems. Provides SQL support so the user can query. No dependencies needed and its very light. Does have ‘running from local‘ mode as well. And yes, it is Apache licensed! so free to use.