| CouchDB
| MongoDB
| MySQL
|
Data Model
|
Document-Oriented (JSON)
|
Document-Oriented (BSON)
|
Relational
|
Data Types
|
string,number,boolean,array,object |
string, int, double, boolean, date, bytearray, object, array, others
|
link |
Large Objects (Files)
|
Yes (attachments)
|
Yes (GridFS)
|
blobs? |
Horizontal partitioning scheme
|
CouchDB Lounge
|
Auto-sharding (v1.6) |
?
|
Replication
|
Master-master (with developer supplied conflict resolution)
|
Master-slave (and "replica sets")
|
Master-slave |
Object(row) Storage
|
One large repository
|
Collection based
|
Table based
|
Query Method
|
Map/reduce of javascript functions to lazily build an index per query
|
Dynamic; object-based query language
|
Dynamic; SQL
|
Secondary Indexes
|
Yes |
Yes |
Yes |
Atomicity |
Single document
|
Single document
|
Yes - advanced
|
Interface
|
REST
|
Native drivers ; REST add-on
|
Native drivers
|
Server-side batch data manipulation
|
? |
Map/Reduce, server-side javascript
|
Yes (SQL)
|
Written in
|
Erlang
|
C++ |
C++
|
Concurrency Control |
MVCC |
Update in Place |
|
Geospatial Indexes
|
GeoCouch
|
Yes. (As of June 2010, coordinate system is cartesian. Spherical coming soon.) |
?
|
Distributed Consistency Model |
Eventually consistent (master-master replication with versioning and version reconciliation) |
Strong consistency. Eventually consistent reads from secondaries are available.
|
Strong consistency. Eventually consistent reads from secondaries are available. |