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