# Important questions

## What type of datastore is this ?

* relational
* key-value
* columnar
* document-oriented
* graph

## What was the driving force ?

* RDBMS databases arose in a world where **query flexibility** was more important than **flexible schemas**
* Column-oriented datastores were built to be well suited for **storing large amounts of data across several machines**, while **data relationships** took a backseat

## How do you talk to it ?

* command line interface
* script
* graphical interface

## What makes it unique ?

* querying on arbitrary fields
* **indexing** for rapid lookup
* some support **ad hoc queries**; For others, **queries must be planned**
* Is schema a **rigid framework** enforced by the database or **merely a set of guidelines** to be renegotiated at will

## How does it perform ?

* Does it support **sharding**
* What about **replication**?
* Does it distribute data **evenly using consistent hashing**, or does it **keep like data together** ?
* Is this database tuned for reading, writing, or some other operation ?
* How much control do you have over its tuning

## How does it scale ?

* Talking about scalability without the context of what you want to scale to is generally fruitless
* Whether each datastore is geared more for
* **horizontal scaling** (MongoDB, HBase, Riak),
* **vertical scaling** (Postgres, Neo4J, Redis),
* **something in between**
