BigTable di Google vs un database relazionale [duplicato]
-
13-09-2019 - |
Domanda
duplicati
Non so molto su BigTable di Google, ma mi chiedo quale sia la differenza tra la BigTable di Google e database relazionali come MySQL è. Quali sono i limiti di entrambi?
Soluzione
BigTable è invenzione di Google per affrontare le enormi quantità di informazioni che l'azienda si occupa regolarmente. Un set di dati Bigtable può crescere fino a immense dimensioni (molti petabyte) con lo storage distribuiti su un gran numero di server. I sistemi che utilizzano Bigtable includono progetti come indice web di Google e Google Earth.
Google whitepaper sul tema:
Un BigTable è una, distribuito, persistente Cartina selezionato multidimensionale sparse. La mappa è indicizzato da una chiave di riga, chiave colonna, e un timestamp; ogni valore nella mappa è un array di byte non interpretata.
I meccanismi interni di BigTable rispetto, per esempio, MySQL sono così dissimili da rendere il confronto difficile, e gli obiettivi prefissati non si sovrappongono molto. Ma si può pensare di BigTable un po 'come un database single-table. Immaginate, ad esempio, le difficoltà che ci si incorrere in se si è tentato di implementare tutto il sistema di ricerca web di Google con un database MySQL -. BigTable è stato costruito intorno soluzione di questi problemi
set di dati Bigtable possono essere interrogati da servizi come AppEngine che utilizzano un linguaggio chiamato GQL ( "Gee-KWAL") che è un basato su un sottoinsieme di SQL. Vistosamente mancante da GQL è alcun tipo di comando JOIN
. A causa della natura distribuita di un database BigTable, eseguendo un join tra due tabelle sarebbe terribilmente inefficiente. Invece, il programmatore deve implementare tale logica nella sua domanda, o progettare la sua domanda al fine di non averne bisogno.
Altri suggerimenti
Google BigTable e di altri progetti simili (es: CouchDB , HBase ) sono sistemi di database che sono orientati in modo che i dati sono in gran parte denormalizzato (vale a dire, duplicato e raggruppati).
I principali vantaggi sono: - operazioni di join sono meno costose a causa della denormalizzazione - Replica / distribuzione dei dati è meno costoso a causa di indipendenza dei dati (ad esempio, se si desidera distribuire i dati tra due nodi, probabilmente non hanno il problema di avere un'entità in un nodo e altra entità correlata in un altro nodo, perché simile dati sono raggruppati)
Questo tipo di sistemi sono indicati per applicazioni che necessitano di raggiungere scala ottimale (vale a dire, si aggiungono altri nodi al sistema e aumenta le prestazioni in proporzione). In un RDBMS come MySQL o Oracle, quando si inizia ad aggiungere più nodi se si uniscono due tabelle che non sono nello stesso nodo, il join costo è più alto. Questo diventa importante quando si tratta di volumi elevati.
RDBMS' sono piacevoli per la ricchezza del modello di archiviazione (tabelle, si unisce, FKS). database distribuiti sono belli a causa della facilità di scala.