Digg mejora su rendimiento un 4000% al ordenar con PHP

Un buen titular para replantear como hacemos las cosas cuando programamos con PHP + MySQL es el cambio que ha realizado Digg cambiando MySQL por Cassandra (una base de datos NoSQL). Como se comenta en el artículo original y en el publicado en SigT su título habla por si solo, un 4000% se ha incrementado el rendimiento al ordenar en PHP en lugar de hacerlo con MySQL.

Recordar que Digg en su inicio seleccionó una arquitectura de alta disponibilidad basada en MySQL, pero que con el tiempo se ha propuesto mejorar con esta migración a Cassandra.

Entre sus comentarios y lecciones aprendidas, así como algunas de la motivaciones para el cambio destado los mismo puntos que SigT, por supuesto para ampliar la información vistar las referencias que os enlazó, os resultará muy útiles.

  • Precalcular lo índices al escribir, de forma que las lecturas serán más rápidas.
  • Restringir lo que los usuarios pueden hacer, no permitiendo consultar de duración indefinida.
  • Cassandra trae de serie muchas opciones para hacer un tiempo real de forma óptima.
  • Gracias a las técnicas para escalar se convierte una base de datos relacional en una no relacional. Aquí es donde al implementar los comentarios se consiguió una mejora del 4000% al ordenar (sorting) usando PHP en lugar de MySQL. Y Como comentan en SigT, entonces ¿Por qué no utilizar una base de datos no relacional desde un principio?.
  • Adopta y extiende productos existentes en lugar de hacer los tuyos propios. Esto es lo que permite Cassandra.
  • Escalar tu sistema de base de datos requerirá cierto grado de especialización, la construcción personalizada de grandes soluciones para problemas concretos.
  • Ojo que no se trata de abandonar MySQL, ya que este sigue siendo la mejor solución para muchos de nuestros desarrollos, pero si hay que tener en cuenta lo que se avecina con soluciones como Cassandra.

Tengo pendiente realizar una entrada con un resumen de bases de datos similares a Cassandra para que podáis evaluar diferentes alternativas a MySQL, Oracle, MSSQL, …