Skip to content

Google BigTable

by Cristian Requena on abril 1st, 2010

Google empezó el desarrollo de un almacén de datos masivo en 2004, para proveer del mismo a sus numerosas (o, mejor dicho, innumerables) aplicaciones, tales como Maps o Earth. Descarga PDFEl paper de este sistema de almacenamiento, denominado BigTable, se encuentra en la página Labs de Google.

Como es imaginable, en Google se encontraron con la entonces aún futura problemática escalabilidad de las bases de datos relacionales tradicionales, caracterizadas sin lugar a dudas por su verticalidad. Como todos sabemos, si algo define especialmente a Google, es su ímpetu en el desarrollo de nuevas tecnologías, y de hecho esto se hace patente con detalles como la dedicación del conocido 20% de jornada de los empleados a proyectos propios.

Centrándonos en lo que realmente nos interesa, podríamos decir que si Dynamo se considerase el padre de NoSQL, sin lugar a dudas BigTable sería la madre. A lo largo de los siguientes párrafos profundarizaremos un poco más acerca de las características de este almacén de datos que, entre sus señas más relevantes, cuenta con una interfaz (API) de uso público, por lo que contrariamente a lo que ocurre con Dynamo, cualquier desarrollador puede trabajar con él.

De forma resumida, BigTable es un mapa distribuido ordenado multidimensional, es decir, es un mapa típico al que se le añade una tercera dimensión, estas son: filas, columnas, tiempo.

Las claves de las filas de BigTable son cadenas de tamaño arbitrario, y cualquier operación sobre ellas es atómica, es decir, no se pueden producir dos operaciones sobre una misma fila en un momento dado. Las filas, a su vez, son particionadas en “tablets”, que se dispersan entre varios nodos servidores. Por su parte, las claves de las columnas forman las “familias de columnas”, a las que se les puede asignar un valor determinado para cada fila. Finalmente, el tiempo permite mantener varias versiones de un mismo dato que haya ido variando. Todo esto se muestra en la siguiente imagen, obtenida del paper enlazado al principio del artículo:

El almacenamiento físico de BigTable se realiza en GFS (Google File System), un sistema de archivos distribuido propietario de Google, en el que mediante el formato de archivo SSTable (que es un mapa clave-valor ordenado) se persisten los datos. Como se ha comentado anteriormente, las filas se distribuyen en tablets, que pueden estar (y de hecho, están) en nodos servidores de tablets distintos.

El pilar donde se sustenta BigTable es Chubby, un servicio distribuido de bloqueos altamente disponible, que consiste en un conjunto finito de réplicas que proporcionan consistencia entre ellas mediante el algoritmo de Paxos. Proporciona un espacio de nombres con directorios y archivos, donde se pueden establecer bloqueos a nivel del primero y se pueden ejecutar operaciones de lectura y escritura sobre el segundo. Chubby se utiliza en muchos aspectos, entre los que se cuenta con la obtención del nodo servidor de tablets que tiene una “tablet” concreta, almacenamiento de listas de acceso, etc. Esta área no se detalla extensamente en el paper, por lo que no es posible detallar nada más.

Un último detalle en el que me gustaría hacer hincapié es la compresión: los datos almacenados se comprimen mediante dos algoritmos que permiten la obtención de parte de los datos sin tener que recurrir a la descompresión del dato entero. Además, estos algoritmos son muy rápidos tanto en compresión (100-200 MB/s) como en descompresión (400-1000 MB/s).

Finalmente, y a modo de conclusión, de todas las características detalladas más arriba, hay una que creo que es primordial: el acceso público a la API. Eso deja una puerta abierta a que cualquier desarrollador, corportativo o no, pueda trabajar con una base de datos de estas características.

From → Historia, NoSQL

3 Comments
  1. the useful information you presented do help our team’s investigation for my group, thanks.

Trackbacks & Pingbacks

  1. NoSQL para no programadores | La Pastilla Roja
  2. NoSQL und die Cloud? - entwickler.de

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS