I have no experience with NoSQL database systems but if I would have to choose one of the most known (MongoDb, Cassandra, CouchDb, Redis), can someone describe the relevant main features/differences of every one? Is there anything I should know with regards to their capabilities that might affect the choice of NoSQL system I use>
相关问题
- MongoDB can not create unique sparse index (duplic
- Spring Data MongoDB - lazy access to some fields
- Golang mongodb aggregation
- Getting Redis Master address from Sentinel C#
- What version of Java does Cassandra 3 require
Redis is a key-value store. You can usually insert a primitive value (int, string, bool), or an array of primitives under a single key. Retrieval of data is usually limited to query by key. These are the most basic NoSQL databases.
Cassandra is a column-family store. It's similar to a key-value store, but supports nesting of key-value pairs up to about four levels deep. Querying is limited to query by key and map-reduce functions. This type of database has a rather difficult data model (does 'supercolumn' ring any bells?) and is highly specialized for extremely large amounts of data.
MongoDB and CouchDB are both document databases. They both store JSON documents, which aren't restricted by a schema, giving you a lot of flexibility. The database allows you to query the contents of these documents, which makes it very easy to retrieve data, compared to other types of NoSQL databases. Map-reduce functions are also supported.
Martin Fabik's answer contains some good links to comparisons of MongoDB and CouchDB.
Ayende has a series of blog posts called That No SQL Thing that handles each of these types. It's a good introduction to the NoSQL concept, the different types of NoSQL databases and how to query each of them. I highly recommend you read his articles on the database types I mentioned above, they are very instructive!
I was lately doing some research on this topic. I can post you some links..
Nice categorization of NoSQL DBs.
Comparing MongoDB and CouchDB
Comparing MongoDB, CouchDB and RavenDB Part1 Comparing MongoDB, CouchDB and RavenDB Part2
I was pretty impressed by RavenDB. It supports also transactions and triggers,but the licensing is not so friendly.
Some arguments why RavenDB from Ayende (creator of RavenDB)
In addition to the other links, take a look at the Survey of Distributed Databases as well as this what if that takes a look at the characteristics of other NoSQL databases and how they respond - [MongoDB and Foursquare - What If?].
Finally, [NoSQLSummer] has a lot of good papers describing the various offerings out there and the theoretical underpinnings of each one.