martes, mayo 01, 2007

Las claves en la arquitectura de base de datos de digg: memcached y sharding

martes, mayo 01, 2007 por Martín

Leo en ComputerWorld que el pasado Martes, Eliott White III estuvo hablando en la conferencia anual de MySQL. Ahí estuvo comentando algunos detalles interesantes sobre la arquitectura de digg que parece que ha llegado ya a los 1.2 millones de usuarios registrados. Me permito recapitular aquí algunos datos:

  • 100 servidores desplegados sobre varios data center alojando 30 gb de datos.

  • Un balanceador de carga que envia las consultas a servidores PHP. Servidores MySQL esclavos proveen de datos a los servidores PHP, mientras que uns ervidor MySQL maestro provee de datos a los servidores esclavos.

  • Para evitar el sobrecargar la base de datos con consultas utiliza memcached. Memcached almacena porciones compactas de datos que se pueden utilizar para crear dinámicamente una página web. Esto lo diferencia de servidores de cache web tradicionales que almacenan la página completa. Otros sitios conocidos que utilizan memcached son Wikipedia, Sourceforge, Slashdot o Livejournal.

  • Para hacer las consultas más eficientes hacen lo que se ha denominado recientemente como Sharding. Consiste en dividir una base de datos enorme en varias bases de datos más pequeñas de modo que el acceso sea mucho más eficiente. La base de datos se puede dividir por tablas, rangos, fechas, usuarios, etc. MMORPGs populares como EVE Online o World of WarCraft utilizan esta técnica para controlar las ingentes cantidades de datos que manejan.

    Los comentarios de White sobre Sharding son muy interesantes. Como bien dice, existen diferencias fundamentales entre particionar una base de datos y realizar sharding, siendo quizás la más importante que los shards suelen estar en máquinas diferentes, como sería por ejemplo el tener mundos diferentes en data centers diferentes en un MMORPG.

    White añade que el concepto de Sharding pone complejidad sobre el desarrollo ya que imposibilita el hacer operaciones habituales como joins sobre tablas.

    Aparentemente ingenieros de Google fueron los que acuñaron el término de Sharding. Este artículo en ZDNet muestra su uso dentro de su sección financiera. Hace poco Google contribuyó un proyecto de Shards en Hibernate.

  • 20 servidores de bases de datos.

  • 30 servidores web.

  • Varios servidores de búsqueda ejecutando Lucene.

  • Todos los servidores menos uno corren sobre MySQL 5. Los servidores con más carga transaccional así como las unidades de backup utilizan el motor InnoDB, mientras que los servidores OLAP utilizan MyISAM.

  • Arquitectura inusual ya que el 98% de las operaciones son lecturas.


Interesante.

comments

2 Respuestas a "Las claves en la arquitectura de base de datos de digg: memcached y sharding"
jmonne dijo...
13:08

Hay más presentaciones de la MySQL Conf 2007 aquí

Saludos.


Martín dijo...
13:14

O mismamente más información en tus posts!

este y este.