Comparando bases de datos NoSQL

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)

Respuesta

  1. […] En este post veremos algunas de sus características principales (en su momento ya comparamos varias bases de datos NoSQL aquí), y […]

Replica a Un poco de MongoDB: ¿Qué es? ¿qué ofrece? « Un poco de Java Cancelar la respuesta