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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top