170 likes | 393 Views
BigTable. Base de datos multidimensional. Agenda. Que es BigTable? Google File System Estructura de BigTable Componentes Usos Ejemplos. Que es BigTable?. Sistema almacenamiento distribuido. Creado por Google a principios del 2004. Almacena la información en tablas multidimensionales.
E N D
BigTable Base de datos multidimensional
Agenda • Que es BigTable? • Google File System • Estructura de BigTable • Componentes • Usos • Ejemplos
Que es BigTable? • Sistema almacenamiento distribuido. • Creado por Google a principios del 2004. • Almacena la información en tablas multidimensionales. • No es una base de datos relacional. • Pensado para crecer en un alto volumen rápidamente (pentabytes). • Variedad de aplicación, escalabilidad, alto rendimiento y alta disponibilidad.
Google File System (GFS) • Sistema de archivos distribuidos. • Eficiencia, fácil acceso, almacenamiento masivo (clusters), procesamiento paralelo. • Colossus es la versión mas reciente. • Archivos de tamaño fijo (64MB). • Se agregan o leen y muy rara vez se sobre escriben o reducen.
Google File System (GFS) • Nodos: Maestro y Chunkservers (almacenadores) • El nodo maestro tiene un id de 64 bits de cada porción. • Cada porción es replicada en al menos 3 servidores. • No está programado en el kernel, funciona como una librería.
Estructura de BigTable • Datos son indexados usando el nombre de la fila, la columna y un timestamp. • Se puede describir como un mapa distribuido, persistente y multidimensional. • Los datos de las celdas son tratados como un array no interpretado de bytes. • (row:string, column:string, time:int64) -> string
Estructura de BigTable • La tabla es particionada dinámicamente por filas dentro de tabletas (tablet). • Cada tableta puede medir entre 100 a 200 MB. • Cada tableta contiene un rango continuo de registros. • Accesar registros o tabletas cercanos requiere la comunicación de un bajo numero de servidores.
Rows • El nombre puede ser cualquier string. • Cada lectura o escritura es atómica. • Los datos se ordenan por el nombre de las filas.
Familias de columnas • Columnas son agrupadas en familias. • Todos los datos de una familia son del mismo tipo. • Numero reducido de distintas familias (cientos como mucho). • Sintaxis: family:qualifier • Se optimiza el control de acceso a disco y memoria a nivel de familias.
Timestamps • Cada celda contiene múltiples versiones de la misma información. • Se indexan por el timestamp (64 bits). • Se puede especificar el numero de versiones a almacenar. • Existe un recolector de basura.
Ejemplos • HTTP: • http://bigtable.appspot.com/get/<table>/<row>/<column> • http://bigtable.appspot.com/put/<auth>/<table>/<row>/<column> • http://bigtable.appspot.com/deleteAll/<auth>/<table>/<row>/<column> • Python • bt = bigtable.BigTable('localhost', '8080', 'test@example.com', 'test') • bt.put('test', 'foo', 'bar:baz', 'How are you?')
Ejemplos • Manual: • PUT /put/test@example.com:test/people/will.mortensen/relationship: HTTP/1.1 • Java • BigTableClient client = new BigTableClient();Collection<Cell> cells = client.getRow("people", "andrew.hitchcock");