2011-01-18 33 views
38

¿Cuáles son las fortalezas y debilidades de las diversas bases de datos NoSQL disponibles?Redis, CouchDB o Cassandra?

En particular, parece que Redis es débil a la hora de distribuir la carga de escritura en varios servidores. Es ese el caso? ¿Es un gran problema? ¿Qué tan grande debe crecer un servicio antes de que eso pueda ser un problema importante?

Respuesta

77

Las fortalezas y debilidades de las bases de datos NoSQL (y también las bases de datos SQL) son altamente según su caso de uso. Para proyectos muy grandes, el rendimiento es el rey; pero para proyectos completamente nuevos, o proyectos donde el tiempo y el dinero son limitados, la simplicidad y el tiempo de comercialización son probablemente los más importantes. Para enseñarte a ti mismo (ampliar tu perspectiva, convertirte en un programador mejor y más valioso), quizás lo más importante sean los conceptos fundamentales simples y sólidos.

¿Qué tipo de proyecto tienes en mente?

Algunos puntos fuertes y débiles, frente a la parte superior de mi cabeza:

  • Redis
    • Muy simple valor clave "servidor de la variable global"
    • muy sencillo (algunos dirían "no -existente ") sistema de consulta
    • Fácilmente el más rápido en esta lista
    • Transacciones
    • conjunto
    • datos debe caber en la memoria
    • agrupación inmaduras, con un futuro incierto (estoy seguro de que va a ser grande, pero aún no está decidido.)
  • Cassandra
    • Podría decirse que la más impulso comunidad de las bases de datos BigTable-como
    • Probablemente el más fácil de esta lista para administrar en grandes racimos/
    • crecientes
    • Soporte para map/reduce, buena para el análisis, el almacenamiento de datos
    • de múltiples centros de datos de replicación
    • sintonizable consistencia/disponibilidad
    • No existe ningún punto único de fallo
    • Usted debe saber qué consultas que se ejecutará al principio del proyecto, para preparar la forma de datos y los índices
  • CouchDB
    • manos hacia abajo los mejores de sincronización (replicación) de apoyo, el apoyo a maestro/esclavo, el maestro/master, y arquitecturas más exóticas
    • Protocolo HTTP, los navegadores/aplicaciones pueden interactuar directamente con el DB parcial o totalmente. (Sync también se realiza a través de HTTP)
    • Después de una curva de aprendizaje breve, bastante sistema de consulta sofisticada usando Javascript y el map/reduce
    • operación de clúster (sin SPOF, sintonizable consistencia/disponibilidad) es actualmente un tenedor significativo (BigCouch). Probablemente se fusionará en Couch, pero no hay una hoja de ruta.
    • De forma similar, la agrupación en clúster y el centro de datos múltiples son teóricamente posibles (lo "exótico" que mencioné), pero debe escribir todas las herramientas usted mismo en este momento.
    • Añadir solo el formato de archivo (tanto bases de datos como índices) consume disco sorprendentemente rápido, y debe ejecutar manualmente la compactación (aspiración) que hace una copia completa de todos los registros en la base de datos. Lo mismo se requiere para cada archivo de índice. De nuevo, debes ser tu propio herrero de herramientas.
+8

+1 "la simplicidad y el tiempo de comercialización son probablemente los más importantes". Optimice primero su negocio, luego la tecnología. Un inconveniente para Redis es que realmente solo sirve para conjuntos de datos que se ajustan a la memoria; sus capacidades de agrupamiento y soluciones basadas en disco son limitadas. Otras ventajas de Cassandra son la replicación de múltiples centros de datos, la coherencia/disponibilidad sintonizable por operación y ningún punto único de falla (cada nodo en el clúster juega el mismo rol, no hay maestros). Una desventaja para Cassandra es que debes pensar en tus consultas antes de organizar tus datos, y esto puede requerir un poco de esfuerzo. –

+5

Por cierto, en mi experiencia, "proyectos donde el tiempo y el dinero son limitados" cubre la ** gran mayoría ** de proyectos durante la ** gran mayoría ** de sus vidas. – JasonSmith

+2

BigCouch es un excelente software. Fue encabezado por miembros principales del equipo de desarrollo de CouchDB. Se mantendrá y desarrollará más. Si bien no conozco un mapa de ruta, espero que BigCouch se fusione nuevamente con CouchDB de alguna manera. ¡Y si crees que soy un fanboy sin esperanza, considera que BigCouch está hecho por el competidor de mi compañía! – JasonSmith

Cuestiones relacionadas