MongoDB, Cassandra y HBase: las tres bases de datos NoSQL para observar

Hadoop obtiene gran parte del crédito de big data, pero la realidad es que las bases de datos NoSQL se implementan mucho más ampliamente y se desarrollan de manera mucho más amplia. De hecho, si bien la búsqueda de un proveedor de Hadoop es relativamente sencilla, elegir una base de datos NoSQL es todo lo contrario. Después de todo, existen más de 100 bases de datos NoSQL, como muestra el ranking de popularidad de bases de datos DB-Engines.

¿Cuál deberías elegir?

Mimado por elegir

Porque debes elegir. Por agradable que sea vivir en una feliz utopía de la llamada persistencia políglota, "donde cualquier empresa de tamaño decente tendrá una variedad de tecnologías de almacenamiento de datos para diferentes tipos de datos", como sostiene Martin Fowler, la realidad es no puede permitirse invertir en aprender más que unos pocos.

Afortunadamente, la elección es cada vez más fácil a medida que el mercado se fusiona en torno a tres bases de datos NoSQL dominantes: MongoDB (respaldada por mi antiguo empleador), Cassandra (desarrollada principalmente por DataStax, aunque creada en Facebook) y HBase (estrechamente alineada con Hadoop y desarrollada por el misma comunidad).

Tenga en cuenta que excluyo intencionalmente a Redis de esta lista. Si bien es un gran almacén de datos, se usa principalmente para almacenar datos en caché y no es adecuado para una amplia gama de cargas de trabajo.

Los datos de LinkedIn de 451 Research muestran cómo el mercado está gravitando hacia MongoDB, Cassandra y HBase:

Eso es datos de perfil de LinkedIn. Una vista más completa es la de DB-Engines, que agrega trabajos, búsquedas y otros datos para comprender la popularidad de las bases de datos. Mientras que Oracle, SQL Server y MySQL reinan, MongoDB (n. ° 5), Cassandra (n. ° 9) y HBase (n. ° 15) les están dando una oportunidad por su dinero.

Si bien es demasiado pronto para llamar a cualquier otra base de datos NoSQL un error de redondeo, estamos llegando rápidamente a ese punto, exactamente como sucedió en el mercado de bases de datos relacionales.

Para comprender mejor por qué brillan estas tres bases de datos, pedí a los representantes de cada una que identificaran los atributos clave de su éxito: Kelly Stirman, directora de productos en MongoDB; Patrick McFadin, evangelista jefe de Cassandra en DataStax; y Justin Kestelyn, director senior de relaciones con desarrolladores de Cloudera.

Pero primero, debemos entender por qué es importante NoSQL.

Un mundo construido con datos no estructurados

Vivimos cada vez más en un mundo donde los datos no encajan bien en las ordenadas filas y columnas de un RDBMS. La informática móvil, social y en la nube ha generado una gran cantidad de datos. Según una variedad de estimaciones, el 90 por ciento de los datos del mundo se crearon en los últimos dos años, y Gartner calificó el 80 por ciento de todos los datos empresariales como no estructurados. Además, los datos no estructurados están creciendo al doble de la tasa de datos estructurados.

A medida que el mundo cambia, los requisitos de gestión de datos van más allá del alcance efectivo de las bases de datos relacionales tradicionales. Las primeras organizaciones en observar la necesidad de soluciones alternativas fueron las pioneras de la Web, las agencias gubernamentales y las empresas que se especializan en servicios de información.

Cada vez más, las empresas de todo tipo buscan capitalizar las ventajas de alternativas como NoSQL y Hadoop: NoSQL para crear aplicaciones operativas que impulsan su negocio a través de sistemas de interacción, y Hadoop para crear aplicaciones que analicen sus datos de forma retrospectiva y ayuden a ofrecer información valiosa .

MongoDB: De los desarrolladores, para los desarrolladores

Entre las opciones NoSQL, señala Stirman de MongoDB, MongoDB ha tenido como objetivo un enfoque equilibrado adecuado para una amplia variedad de aplicaciones. Si bien la funcionalidad es cercana a la de una base de datos relacional tradicional, MongoDB permite a los usuarios capitalizar los beneficios de la infraestructura en la nube con su escalabilidad horizontal y trabajar fácilmente con los diversos conjuntos de datos que se utilizan hoy en día gracias a su modelo de datos flexible.

MongoDB es a menudo el primer desarrollador de bases de datos NoSQL que intentarán porque es muy fácil de aprender. Will Shulman, CEO de MongoLab (un proveedor de MongoDB-as-a-service), lo dice de esta manera:

El éxito desproporcionado de MongoDB se basa en gran medida en su innovación como almacén de estructura de datos que nos permite modelar más fácil y expresivamente las "cosas" en el corazón de nuestras aplicaciones….

Tener el mismo modelo de datos básico en nuestro código y en la base de datos es el método superior para la mayoría de los casos de uso, ya que simplifica drásticamente la tarea de desarrollo de aplicaciones y elimina las capas de código de mapeo complejo que de otro modo se requerirían.

En particular, MongoDB, al igual que las otras bases de datos en esta lista, no es un pony de un solo truco. Las empresas que aprenden MongoDB “pueden amortizar sus inversiones en MongoDB en muchos, muchos proyectos, convirtiéndolo en una de las listas cortas de estándares en los que confían para toda la gestión de datos”, como me dijo Stirman.

Por supuesto, como cualquier tecnología, MongoDB tiene sus fortalezas y debilidades. MongoDB está diseñado para cargas de trabajo OLTP. Puede realizar consultas complejas, pero no es necesariamente la mejor opción para cargas de trabajo de estilo de informes. O si necesita transacciones complejas, no será una buena opción. Sin embargo, la simplicidad de MongoDB lo convierte en un excelente lugar para comenzar.

Cassandra: corre con seguridad a gran escala

Hay al menos dos tipos de simplicidad de base de datos: simplicidad de desarrollo y simplicidad operativa. Si bien MongoDB recibe el crédito por una experiencia fácil de usar, Cassandra obtiene la máxima puntuación por ser fácil de administrar a escala.

Como me dijo McFadin de DataStax, los usuarios tienden a gravitar hacia Cassandra cuanto más chocan sus cabezas con la dificultad de hacer que las bases de datos relacionales sean más rápidas y confiables, particularmente a escala. McFadin, ex DBA de Oracle, estaba encantado de descubrir que "la replicación y el escalado lineal son primitivas" con Cassandra, y las características eran "el objetivo principal del diseño desde el principio".

En el mundo de RDBMS, las características de la base de datos como el escalado y la replicación son las partes difíciles que le quedan al usuario. Esto funcionó bien en la empresa de ayer cuando la escala no era un gran problema. Hoy se está convirtiendo rápidamente en el problema.

Como escuché de McFadin y otros, Cassandra brilla particularmente en implementaciones de escalamiento horizontal. Cassandra viene con soporte integrado para múltiples centros de datos. En cuanto a agregar capacidad a un clúster, "Simplemente enciende una nueva máquina y le dice a Cassandra dónde están los otros nodos", dijo McFadin, "y se encarga del resto".

Esta facilidad de escalado, junto con un rendimiento de escritura excepcional ("Todo lo que está haciendo es agregar al final de un archivo de registro") y un rendimiento de consulta predecible, se suman a un caballo de batalla de alto rendimiento en Cassandra.

Un artículo de fe NoSQL que he mantenido durante mucho tiempo es que Cassandra puede ser poderosa a gran escala, pero requiere un doctorado para comenzar. No es así, insistió McFadin:

Las rutas de replicación y lectura y escritura son deliberadamente simples. Puede aprender los aspectos internos principales de Cassandra en unas pocas horas. Eso puede brindarle mucha confianza al implementar nueva tecnología porque hay menos detalles de "caja negra" que introducen modos de falla complejos.

Esto significa que el precio de admisión al desarrollo efectivo de Cassandra está en comprender el modelo de datos y cómo funcionará con su aplicación. Dada la familiaridad del lenguaje de consulta CQL de Cassandra (destinado a ser "exactamente como SQL excepto cuando no lo es"), dijo McFadin, no es una curva de aprendizaje empinada.

Más importante, me dijo: “Cassandra te recompensa con lo único que quieres de una base de datos: sin drama. Es por eso que a los usuarios les encanta usar Cassandra ".

HBase: compañeros de seno con Hadoop

HBase, como Cassandra, un almacén de valor-clave orientado a columnas, se utiliza mucho en gran parte debido a su pedigrí común con Hadoop. De hecho, como dijo Kestelyn de Cloudera, "HBase proporciona una capa de almacenamiento basada en registros que permite lecturas y escrituras rápidas y aleatorias en los datos, complementando Hadoop al enfatizar el alto rendimiento a expensas de la E / S de baja latencia".

Kestelyn continúa:

Los cambios se catalogan de manera eficiente en la memoria para lograr el máximo acceso mientras los datos se conservan en HDFS. Este diseño permite que un EDH [centro de datos empresarial] basado en Hadoop proporcione lecturas y escrituras aleatorias a usuarios y aplicaciones en tiempo real, sin dejar de disfrutar de la tolerancia a fallos y la durabilidad de HDFS.

La afinidad con Hadoop no es la única razón por la que HBase sigue aumentando en los rangos de popularidad de las bases de datos, aunque eso podría ser suficiente. Al igual que Cassandra, las raíces de HBase como una implementación de código abierto de Bigtable de Google se traducen en que la base de datos es altamente escalable por diseño.

Debido a que puede utilizar los recursos de almacenamiento, memoria y CPU de cualquier número de servidores, además de tener características de escalamiento horizontal como fragmentación automática, HBase puede escalar sin límites a medida que aumentan las demandas de carga y rendimiento simplemente agregando nodos de servidor. HBase fue diseñado desde cero para proporcionar un rendimiento óptimo cuando la consistencia es fundamental.

Pero la escala no es solo utilidad. Como señaló Kestelyn, “Gracias a su estrecha integración con el resto del ecosistema de Hadoop, los datos están fácilmente disponibles para los usuarios y las aplicaciones a través de consultas SQL (usando Cloudera Impala, Apache Phoenix o Apache Hive) o incluso búsqueda de texto libre facetado (usando Búsqueda de Cloudera) ". Por lo tanto, HBase ofrece a los desarrolladores una forma de aprovechar la experiencia existente con SQL mientras se basa en una base de datos distribuida más moderna.

Cada base de datos tiene sus propias fortalezas y deficiencias, pero cada una de las tres descritas aquí ha llenado un gran vacío en el panorama del big data. Si bien es posible que aparezca una nueva base de datos para reclamar un lugar entre los tres primeros NoSQL (¿DynamoDB?), La realidad es que los desarrolladores y las empresas a las que sirven ya están estandarizando algunas opciones sólidas: MongoDB, Cassandra y HBase.

Ahora vicepresidente de dispositivos móviles en Adobe, Matt Asay fue anteriormente vicepresidente de comunidad en MongoDB, Inc. Es miembro emérito de la junta de Open Source Initiative (OSI) y obtuvo su doctorado en derecho en Stanford, donde se centró en código abierto y otros. temas de licencias de propiedad intelectual, y su maestría de la Universidad de Kent en Canterbury y su licenciatura de la Universidad Brigham Young. Asay fue uno de los primeros blogueros.

New Tech Forum proporciona un lugar para explorar y discutir la tecnología empresarial emergente con una profundidad y amplitud sin precedentes. La selección es subjetiva, basada en nuestra selección de las tecnologías que creemos que son importantes y de mayor interés para los lectores. no acepta material de marketing para su publicación y se reserva el derecho de editar todo el contenido contribuido. Envíe todas sus consultas a [email protected]