¿MySQL vs Cassandra?

Pablo

Estoy siguiendo desde hace tiempo un gran debate que existe entre desarrolladores que apoyan, por un lado el uso de bases de datos relacionales y por el otro los que enaltecen las virtudes de las bases de datos no relacionales (aparace un movimiento bajo el nombre NOSQL), pero que comenzó a tomar más fuerza desde que Facebook lanzó el proyecto Cassandraluego Digg y hace apenas unos días Ryan King aseguro en una entrevista que Twitter seguiría los pasos de estos dos gigantes.

Para el que no tenga ni idea de lo que estoy hablando el asunto es el siguiente (a muy grandes rasgos).

Tenemos por un lado las bases de datos relacionales, estas son las que como su nombre indica guardan relaciones entre sus datos, que son guardados en tablas y logran tener interconexiones entre si.  Este modelo de datos es muy utilizado en la actualidad y es extremadamente robusto, cuantas más relaciones tenemos entre nuestras tablas mejor integridad de datos podemos lograr. Ejemplos de bases de datos relacionales hay varios: PostgreSQL, Oracle y por supuesto MySQL como uno de los mayores referentes.

Bien, las bases de datos relacionales al dar tanta integridad a la información rápidamente fueron copando todos los sistemas, pero el problema principal aparece al momento de comenzar a escalar estos sistemas con un número de transacciones que prácticamente no tiene precedentes, de aquí que aparece un movimiento de desarrolladores (NOSQL: Not Only SQL) que intentan destronar este modelo de datos, por otro más eficiente y económico para manejarlos.

Obviamente como el punto débil de las bases de datos relacionales es el consumo de recursos los principales interesados en reinventar y revolucionar esto son los grandes jugadores de internet, aparece Google con Bigtable, también Amazon con Dynamo y finalmente Facebook con Cassandra (Libre), que como comenté al principio lentamente es seguido en la migración desde Mysql por Digg y próximamente Twitter.

mysql nosqlY la gran pregunta que encierra toda esta serie de movimientos y de migraciones es justamente la que hace Todd Hoff cuando pregunta en un post MySQL and Memcached: End of and era?

Yo opino que no. Creo que MySQL va a seguir existiendo por mucho tiempo más (como el modelo relacional)

Si bien es verdad que las bases de datos relacionales tienen un “costo” mucho más alto y son más difíciles de escalar que una base de datos no relacional la realidad es que cada aplicación es un mundo, si se fijan bien quienes son los impulsores de esta tendencia verán a grandes empresas con billones de transacciones diarias, por lo que su necesidad es completamente distinta a la de cualquier otro mortal.

Lo que veremos muy probablemente dentro de un tiempo es una nueva moda en que los desarrolladores optan por el nuevo modelo de bases de datos no-relacional, por más que sus requerimientos sean básicos y mínimos, eso no es malo, pero en lo personal no cambiaría la integridad referencial por solo estar a la moda :D

Más allá de todo el debate, que a medida que pasen los meses se va a poner mas y mas interesante, creo que el evaluar nuestras necesidades y elegir la solución en base a ellas siempre va a darnos la respuesta correcta.

Pablo

Programador desde hace más de 11 años, adicto a internet, cafeinómano, fanático de la información, intento de emprendedor, trabaja de forma compulsiva solo en lo que ama. Sueña con tener una aplicación con más de 1 millón de usuarios.

Comentarios

  1. Guty Responder

    Muy buen post introductorio al debate. Como bien dijiste, la migración tiene sentido para aquellos casos donde el volumen de datos y transacciones sea tal que un modelo relacional suponga una pérdida importante de performance y recursos, para un blog o sistema comercial, creo que todavía podemos seguir con lo que conocemos.
    Saludos.

  2. alcuadrado Responder

    Buen articulo, coincido con tu punto de vista, aunque no se mucho de bases de datos document-based a decir verdad, solo algo de coach.

    PD: Tenes un typo en el link al alrticulo de Todd Hoff :P

  3. The Doctor Responder

    Buen post! ^^

    Hace rato que leo y pospongo a futuro aprender a manejar alguna DB NOSLQ, por si algún proyecto futuro lo amerita, pero nunca lo hago. Yo pienso que el debate real lo podemos hacer conociendo el funcionamiento interno y la forma de uso de ambos sistemas de bases de datos y no sólo sus ventajas y desventajas, así que de momento no puedo opinar nada =P

    Vuelvo cuando sepa manejar bases de datos no relacionales.

  4. David Responder

    Ahora sólo falta un artículo con ejemplos, introductorios, de cuándo usar un tipo u otro de base de datos ¿No? Leí algo de esto no hace mucho, pero ahora mismo no recuerdo dónde.

    Saludos.

  5. KMJB Responder

    A mi modo de ver son dos modelos de encarar las cosas de diferente manera , para distintos usos y para X clientes. No veo la necesidad de que uno reemplace al otro, más bien cada uno en su tema y a otra cosa. Saludos!!

  6. logoff Responder

    Totalmente de acuerdo KMJB. Yo trabajo ahora con Cassandra para experimentar y, efectivamente, son conceptos diferentes y se aplican a casos diferentes.

  7. J.v.C Responder

    Buen articulo, saludos!

  8. lbr Responder

    buen Aritculo me interesa todo este mundo de la Informatica y creo q es muy importante los tipos de modelos en este caso relacional o no relacionales y se berian optar dependiendo del las circunstancias y de los requerimientos.

Realizar un comentario