domingo, abril 06, 2008

PostgreSQL@Skype

domingo, abril 06, 2008 por Martín


Vía High Scalability llego a un interesante artículo sobre como usan PostgreSQL en Skype.

La verdad es que sí que es cierto que PostgreSQL es uno de esos grandes olvidados en el mundo las bases de datos. Durante toda su historia ha estado completamente eclipsado por MySQL. Todo el mundo reconoce que su motor es mejor que MySQL, pero mires a donde mires la gente usa MySQL en vez de PostgreSQL; seguramente sea la mejor base de datos Open Source, pero MySQL consiguió tener su propia compañía gerando enormes beneficios; y para colmo, su creador trabaja en Sun, pero Sun compra MySQL.

Por eso probablemente este artículo sobre Skype, y conocer que una de esas empresas tecnológicas high-profile está utilizando PostgreSQL es especialmente interesante.

En el artículo, comentan como contrataron a un equipo de consultores para analizar su base de datos en busca de soportar 1 billón de usuarios concurrentes. Como esa carga sería muy superior a la que soportaría cualquier superior, escogen una aproximación de sharding en función del código de usuario y escalan horizontalmente añadiendo nuevos servidores.

Lo más curioso es la aproximación utilizada para el sharding, y es que Skype realiza todo el acceso a datos utilizando procedimientos almacenados. Incluso han creado su propio lenguaje PL/Proxy. En el artículo, comentan que esto ha sido una decisión clave y muy exitosa ya que les ha permitido realizar inmensas optimizaciones de rendimiento simplemente modificando los procedimientos almacenados.

Llegados a la hora de escoger que servidor de base de datos servirá una petición determinada, la elección se realiza también en los procedimientos almacenados utilizando su lenguaje especial:


CREATE FUNCTION pwd_check(text, text) RETURNS boolean
$$
CLUSTER userdb_cluster;
PARTITION BY hashtext($1);
$$ LANGUAGE plproxy;


Sucio. Sí, probablemente. Pero efectivo al máximo.

Por cierto, que navegando un poco por su web he visto un par de enlaces interesantes con montones de recursos para integrar Skype dentro de nuestras aplicaciones:

comments

0 Respuestas a "PostgreSQL@Skype"