Bases de datos orientadas a documento
La primera tabla compara tres bases de datos orientadas a documento: MongoDB, CouchDB y RavenDB (echo en falta una columna para OrientDB).
| MongoDB | CouchDB | RavenDB | |
| Documentos | |||
| Formato | BSON | JSON | JSON |
| Metadata | No | Sistema | Sistema + personalizado |
| Versionado | No | Sí | Plugin incluído |
| Adjuntos | GridFS | Sí | Sí |
| Map/Reduce | JavaScript + otros | JavaScript | LINQ |
| Carga masiva | mongoimport | Sí | Sí |
| Consulta Adhoc | Sí | No | No |
| Almacenamiento | |||
| Fragmentación | Sí | Sí | Sí |
| Durabilidad | Servidor simple v1.8 | Diseño "crash-only" | Escritura previa trazabilidad y aislamiento de instantáneas para garantizar recuperación vía ESE |
| Transacciones | No | No | Sí |
| Concurrencia | Actualización in-place | MVCC (Multi-Version Concurrency Control) | Concurrencia optimista |
| Consistencia | Maestro fuerte / Esclavo eventual | Nodo fuerte / Cluster eventual | Eventual |
| Replicación | Maestro-Maestro con funciones de resolución personalizadas | Maestro-Esclavo | Plugin incluído |
| Interfaz | |||
| Protocolo | Personalizado sobre TCP/IP | HTTP/REST | HTTP/REST |
| .NET API | Proyectos de terceros | Proyectos de terceros | Incluído |
| Otros | |||
| Triggers | No | Validación de actualización, Seguridad | Sí |
| Seguridad | Básica | Básica | Ninguna |
| Escrito en | C++ | Erlang | C# |
Lenguajes de programación
La siguiente tabla muestra el uso de lenguajes de programación en varias bases de datos NoSQL. Yo hubiera añadido también Perl, C/C++, Erlang ó Go, que son lenguajes populares que también comprende MongoDB (entre otros muchos).
| BBDD | Modo durabilidad | java | ruby | python | php | .net | http | |
| documento | mongodb | basado en réplica | x | x | x | x | x | x |
| couchdb | nodo simple | x | x | x | x | x | x | |
| ravendb | nodo simple | - | - | - | - | x | x | |
| clave-valor | redis | en memoria, serializado en disco | x | x | x | x | x | - |
| riak | basado en réplica | x | x | x | x | x | x | |
| tabular | cassandra | basado en réplica | x | x | x | x | x | - |
| grafo | neo4j | nodo simple | x | x | x | x | - | x |
| sones | nodo simple | - | - | - | - | x | x |
Fuentes
http://nosql.mypopescu.com/post/1016366403/nosql-guide-for-beginners
http://nosql.mypopescu.com/post/978742866/document-databases-compared-couchdb-mongodb-ravendb