This page discusses the options of elastic persistence and how they compare
MongoDB
Main characteristics
- BSON format (binary JSON), so more efficiency in data transfer and storage
- C++
- Supports updates in-place, which means that no new documents have to be created but the existing document is modified. This improves the write performance a lot.
- Adhoc queries, which means that indexes are not mandatory because in a lot of cases MongoDB can find an optimal query path.
- Language specific drivers
Questions
- How to work with update commands? Write side? Is our idea valid?
- How to test scalability?
- How to deal with relations?
- How to handle schema updates in the code?
- How to make a versioned update like [update ... where oid = ... and version = 2] and then check how many documents were updated.
Links
- Two phase commit with MongoDB --> http://www.mongodb.org/display/DOCS/two-phase+commit
- Comparing MongoDB and CouchDB --> http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
- Comparing MongoDB, CouchDB and RavenDB --> http://nosql.mypopescu.com/post/978742866/document-databases-compared-couchdb-mongodb-ravendb
- Comparing MongoDB and CouchDB --> http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB
- Journalling explained --> http://www.mongodb.org/display/DOCS/Journaling
Pros
- BSON (binary JSON) instead of JSON, which optimizes the storage and communication of documents
- Native drivers for a lot of languages (including Java, C++, C#, PHP, Javascript, Groovy etc)
- Good support for queries
- High read and write performance
Cons
- Less durability (no crash-only design) because writes are not immediately synced with the file system. This means that the write performance is higher, but data can get lost after a crash. From version 1.7.5 journalling is supported which provides more durability, but this seems to be work-in-progress.
CouchDB
TODO
Pros
Cons
Cassandra
TODO
Labels
