Download - BigTable
![Page 1: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/1.jpg)
BigTableBase de datos multidimensional
![Page 2: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/2.jpg)
Agenda Que es BigTable? Google File System Estructura de BigTable Componentes Usos Ejemplos
![Page 3: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/3.jpg)
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.
![Page 4: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/4.jpg)
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.
![Page 5: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/5.jpg)
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.
![Page 6: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/6.jpg)
Google File System (GFS)
![Page 7: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/7.jpg)
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
![Page 8: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/8.jpg)
Ejemplo de una tabla
![Page 9: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/9.jpg)
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.
![Page 10: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/10.jpg)
Rows El nombre puede ser cualquier string. Cada lectura o escritura es atómica. Los datos se ordenan por el nombre de
las filas.
![Page 11: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/11.jpg)
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.
![Page 12: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/12.jpg)
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.
![Page 13: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/13.jpg)
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',
'[email protected]', 'test') bt.put('test', 'foo', 'bar:baz', 'How are you?')
![Page 14: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/14.jpg)
Ejemplos Manual:
PUT /put/[email protected]:test/people/will.mortensen/relationship: HTTP/1.1
Java BigTableClient client = new BigTableClient();
Collection<Cell> cells = client.getRow("people", "andrew.hitchcock");
![Page 15: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/15.jpg)
![Page 16: BigTable](https://reader036.vdocumento.com/reader036/viewer/2022062517/56813625550346895d9d9b9f/html5/thumbnails/16.jpg)