En este post Kristóf Kovács compara y da recomendaciones de uso para las bases de datos NoSQL más conocidas: MongoDB, Riak, CouchDB, Redis, HBase,Neo4J, Cassandra y Membase.
Veamos un resumen:
| Base de Datos | Características | Aplicabilidad |
| MongoDB | Escrito en C++Algunas características SQL (Query, index)
Protocolo binario Replicación maestro-esclavo Sharding Permite ejecutar Javascript Rendimiento sobre características En 32bits sólo 2.5 Gb GridFS para almacenar BigData Indexing geoespacial |
Para queries dinámicasNo para Map/Reduce
Cuando necesitas CouchDB con muchos cambios Para muchas cosas que ahora se hacen con MySQL |
| Riak | Escrito en Erlang y CTolerancia a fallos
Protocolo binario o HTTP/REST Pre y postcommits en JS y Erlang Map/Reduce en JS o Erlang Soporte objetos grandes Versión opensource y Enterprise Búsqueda Full text, indexing,… con Riak Search Server Multireplicación |
Cuando quieres algo del estilo Cassandra pero sin su complejidadCuando necesitas escalabilidad, disponibilidad y tolerancia a fallos |
| CouchDB | Escrito en ErlangProtocolo HTTP/REST
Replicación bidireccional con detección de conflictos MVCC Versiones previas de documentos disponibles Necesita compactación de vez en cuando Soporta attachment Incluye librería JQuery |
Para acumular datos que sólo cambian ocasionalmente con queries predefinidasPara sistemas que necesitan versionado
Sistemas CRM Sistemas con replicación |
| Redis | Escrito en C++Muy rápida
Protocolo estilo Telnet Bases de datos en memoria con backup en disco Sin disk-swap Replicación maestro-esclavo Clave-Valor, pero valores pueden ser List, Hashes, Sets, … Transacciones |
Para datos cambiantes almacenados en memoria (no de gran tamaño)Bases de datos de tiempo real
Analíticas Stock prices Comunicación en tiempo real |
| HBase | Escrito en JavaBillones de filas x millones de columnas
Protocolo HTTP/REST y Thrift Basada en Google Big Table Map/Reduce con Hadoop Optimizaciones para queries en tiempo real Gateway Thrift de alto rendimiento HTTP soporta XML, protobuf y binario Módulos para Cascading, Hive y Pig Shell basada en JRuby Rendimiento random-acces como MySQL |
Mejor opción para Map/ReduceAlmacenamiento y análisis ficheros de log |
| Neo4J | Escrito en JavaBase de datos de grafos
Protocolo HTTP/REST o Java Funcionamiento standalone o embebido en Java Full ACID Lenguaje de queries pattern-maching Web de administración incluida Path-finding algoritmos Indexado de claves y relaciones Optimizado para lecturas Transacciones en API Java Scripts en Groovy Backup online, monitorización y alta disponibilidad en versión comercial AGPL |
Para datos ricos interconectados estilo grafosPara redes sociales, topologías de red |
| Cassandra | Escrito en JavaLo mejor de BigTable y Dinamo
Protocolo binario (Thrift) Tuneable para distribución o replicación Búsqueda por columnas o rango de claves Características BigTable Indices secundarios Escrituras más rápidas que lecturas Map/Reduce con Hadoop |
Cuando escribes más que lees (logging)Cuando todos los componentes son Java
Análisis tiempo real |
| Membase | Escrito en Erlang y CCompatible Memcached pero con persistencia y clustering
Protocolo memcached Acceso muy rápido por clave Persistencia en disco GUI para gestión del cluster Actualizaciones de SW sin parar la BD |
Aplicaciones con acceso de muy baja latenciaAplicaciones con alta concurrencia y alta disponibilidad
Online gaming (Zinga) |

Deja un comentario