3. Prezentare generala
Sistem distribuit de stocare si management al datelor,
dezvoltat de catre Google
Scop principal - suportarea aplicatiilor client cu stocarea unui
volum mare de date
Proiectat sa scaleze la scara de ordinul petabytes
Model de date non-relational
Este folosit de multe aplicatii dezvoltate de Google: Google
Earth, Google Maps, Google Analytics etc.
Foloseste tehnologii Google: GFS, Chubby, SSTable
4. Sisteme similare
Boxwood
dezvoltat de Microsoft
asemanator cu Bigtable
construirea sistemelor de fisiere sau bazelor de date
Real application cluster
dezvoltat de Oracle
foloseste sisteme asemanatoare GFS si Chubby
model relational cu tranzactii
DB2 Parallel
dezvoltat de IBM
similar Bigtable foloseste modelul share nothing
model relational cu tranzactii
C-Store
model relational; foloseste modelul share nothing
asemanator cu Bigtable
5. Descrierea sistemului
Modelul de date
Bigtable map distribuit, multidimensional si sortat.
Mapeaza datele folosind 3 valori: linia, coloana si eticheta
de timp.
(row:string, column:string, time:int64) string
6. Descrierea sistemului
Liniile
Scrierile si citirile dintr-o singura linie sunt atomice.
Mentine datele in ordine lexicografica dupa cheile liniilor.
Numarul de linii dintr-un tabel este partitionat dinamic si
fiecare partitie se numeste tableta.
Folosirea tabletelor ofera o buna localizare a datelor.
Exemplu Intr-un tabel ce stocheaza informatii despre pagini web
datele paginilor din acelasi domeniu sunt tinute unele langa altele.
7. Descrierea sistemului
Coloanele
Sunt grupate in familii de coloane, toate datele dintr-o
familie fiind de acelasi tip.
Inainte de a stoca date intr-o coloana trebuie creata familia
de coloane.
Numarul de familii dintr-un tabel trebuie sa fie mic(cel mult
cateva sute), dar numarul de coloane nu conteaza.
O cheie de coloana este de forma familie:calificator
Exemple: language:id sau anchor:URL
8. Descrierea sistemului
Etichetele de timp
Fiecare celula poate avea mai multe versiuni ale datelor
Pot fi asignate automat de sistem sau explicit de clienti
Versiunile diferite sunt tinute in ordine descrescatoare
Bigtable pune la dispozitie un sistem ce permite
specificarea numarului de versiuni care trebuie retinut
(restul de versiuni mai vechi vor fi sterse)
Exemple: sunt pastrate ultimele 3 versiuni ale unei pagini web
9. Descrierea sistemului
Bigtable API
Functii pentru crearea/stergerea tabelelor si familiilor de
coloane
Clientii pot citi/scrie/sterge date din tabel.
Permite executarea atomica a secventei citeste-modificascrie asupra datelor dintr-o singura linie
Permite executarea de script-uri furnizate de clienti
(script-utile sunt scrise in Sawzall)
Permite folosirea Bigtable cu MapReduce
Scrierea intr-o celula
Citirea unei linii
10. Descrierea sistemului
Bigtable API
Functii pentru crearea/stergerea tabelelor si familiilor de
coloane
Clientii pot citi/scrie/sterge date din tabel.
Permite executarea atomica a secventei citeste-modificascrie asupra datelor dintr-o singura linie
Permite executarea de script-uri furnizate de clienti
(script-utile sunt scrise in Sawzall)
Permite folosirea Bigtable cu framework`ul MapReduce
Scrierea intr-o celula
Citirea unei linii
11. Descrierea sistemului
Implementare
Contine - o librarie cu legatura la fiecare client, un server
master si multe servere de tablete
Masterul:
- asigneaza tablete serverelor de tablete
- detecteaza adaugarea/expirarea unui server de tablete - balansarea incarcarii pe serverele de tablete
- se ocupa de schimbarile schemei de tabel
- face garbage collect in GFS
Serverul de tablete se ocupa de:
- mentinerea evidentei tabletelor
- citiri/scrieri in tablete
- partitionarea tabletelor
Clientii comunica direct cu serverele de tablete
12. Descrierea sistemului
Implementare
Fisierul e spart in mai multe tablete optimizate pentru GFS
Datele recente - stocate in memorie - buffer numit memtable
Datele mai vechi stocate pe disk ca fisiere SSTable
13. Descrierea sistemului
Optimizari
Gruparea mai multor familii de coloane in grupuri de localizare
Metadatele si continutul paginilor web sunt tinute in grupuri
diferite
Compresia datelor in 2 pasi
Cache cu 2 nivele:
scan cache stocheaza date returnate de interfata SSTable
catre server-ul de tablete.
Block cache stocheaza block-uri SSTable citite din GFS
15. Evaluarea performantelor
Sistemul scaleaza foarte bine, insa performantele nu
cresc liniar
Performanta per-server scade cu cat N creste
Balansarea imperfecta a incarcarii
16. Concluzii
Bigtable lansat in aprilie 2005. In august 2006 , 60+
proiecte Google foloseau Bigtable.
Interfata neobisnuita si greu de inteles pentru utilizatorii noi.
Bigtable este folosit in proiectele Google plus de
flexibilitate
Working progress - Bigtable as a service.
17. Bibliografie
Bigtable: A Distributed Storage System for Structured
Data by Fay Chang, Jeffrey Dean, Sanjay Ghemawat,
Wilson C. Hsieh, Deborah A. Wallach
Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E.
Gruber