sábado, 10 de octubre de 2009

Hadoop HBase

HBase es como el BigTable de google pero libre :D

Mas específicamente, HBase es una base de datos distribuida que permite escalar casi linealmente con simplemente agregar mas servidores al sistema. Para esto HBase puede utilizar opcionalmente una tecnología llamada HDFS (Hadoop Distributed File System) que básicamente es el análogo del GFS (Google File System), que no es mas que un fichero de archivos distribuidos.

Con esta arquitectura es posible lograr no solo altos niveles de rendimiento, sino que además altos niveles de redundancia en datos, ya que a cierto nivel los datos están distribuidos de manera redundante similar a como los datos son distribuidos en un sistema de discos duros con tecnología RAID 5 por ejemplo (aunque esta funcionalidad tengo que aun verificarla personalmente, pero sepan que es parte al menos del concepto original).

Algo importante a notar aquí es que si algo hemos aprendido del Internet, y en particular de Aplicaciones Web, es que en muchos casos la demanda de usuarios es impredecible, en donde una pequeña empresa con una gran idea puede de la noche a la mañana recibir millones de visitas, y para eso mejor estar preparado que perder esas visitas, y es ahí en donde se le verá la importancia a HBase.

Sin embargo, HBase no es solo una base de datos altamente escalable, sino que además es un nuevo paradigma que por fin quizás deje atrás las bases de datos relacionales en muchos casos típicos.

Por décadas hemos dependido de bases de datos relacionales, y estas han sobrevivido las bases de datos de objetos, de XML, y toda variedad bajo el sol, pero gracias a las lecciones que Google le ha dado al mercado con su infraestructura, se ha hecho evidente que esta nueva filosofía de diseñar bases de datos es quizás la mas adaptable para las necesidades de hoy en Internet.

Sin embargo, hay que entender que aunque HBase representa una amenaza a largo plazo tanto para las bases de datos comerciales como Oracle, DB2 o MS SQL Server, así como a las de Código Libre como Postgress o hasta a la misma MySQL, que sin embargo hay situaciones en donde es mejor aun tener una base de datos relacional. ¿Cómo decidir? Este documentote apuntará a los primeros pasos.

Técnicamente, HBase está implementado en Java, por lo que funciona en cualquier plataforma que tenga una máquina virtual de Java, lo que hace a HBase una tecnología fácil de adoptar en entornos de Unix, Linux, Windows y hasta OS X.

Pero quizás una de las mejores noticias sobre esta tecnología es que es Open Source (Código Libre), lo que significa que puede ser utilizado por cualquiera libre y gratuitamente, así como uno poder aportar a su desarrollo o aprender de su código fuente.

Si eres estudiante de informática, no pierdes nada en aprender estos conceptos ahora, y de paso estarás mejor preparado cuando en unos años este tipo de conocimientos se tornarán invaluables y altamente cotizados. Un tip: Puedes iniciar con HBase y Java en una sola PC, y cuando quieras experimentar en modo distribuido es cuando en realidad necesitarás a HDFS.

Nota a técnicos: Una aclaración: Aunque BigTable es relativamente reciente, los conceptos detrás de la técnica no lo son, y ya eran conocidos desde hace al menos unos 20 años atrás en otras formas.

Actualización: Algo importante que no mencioné en el artículo es que Yahoo es posiblemente el contribuidor mas grande a este proyecto, y lo utiliza en decenas de miles de servidores internamente.