## NoSQL Databases --- ## NoSQL Databases * technically, any database that is not relational * common NoSQL database types: * key-value store * object database * document store * wide-column store * graph data --- ## NoSQL Database Characteristics * high performance * high scalability * high flexibility * basic functionality * may not be ACID, implement joins, etc. --- ## Key-Value Store * database is a colection of pairs * value is opaque * storage and retrival by key * may be able to sort data by key * in-memory implemention is called key-value cache (e.g. Redis) --- ## Object Database * provides a perstistent store for data for applications implemented in object-orient programming languages * structure mirrors that of objects in the language * supports complex relationships --- ## Document Store * sub-type of key-value store * value is not totally opaque * storage and retrieval by key * may be able to sort data by key * typical encoded as XML, YAML, or JSON * may be able to query on value meta-data (structured content) --- ## Wide-Column Store * key-value store * key is a stuctured pair (row,column) * names and format of the colums vary from row to wor --- ## Graph Database * used in scenarios where relationships are best represented as a graph or network * e.g. social graph, public transit, road networks, computer networks, etc.