2011-12-30 14 views
6

Mi chiedo come e perché "unire" ridurre la scalabilità nel sistema di database distribuito (relazionale) su larga scala?Perché i "join" riducono la scalabilità nel sistema di database distribuito su larga scala?

Grazie.

+0

Poiché i join sono un'operazione (relativamente) costosa rispetto al recupero da una struttura denormalizzata. – Oded

+0

Voglio dire, quanto è costoso? Perché è costoso? Perché è ok su un singolo server, ma non va bene su più server? – janetsmith

+2

Sono relativamente costosi anche su un singolo server. Se stai parlando di join _across_ servers, è molto, molto, molto più costoso. – Oded

risposta

8

Come considerazione generale, vi è un overhead significativo (ad esempio il calcolo non dell'utente) in un sistema distribuito che presenta una facciata "coerente" e "unificata".

semplicemente considerare questi fattori:

  • nodi distinti (ad esempio server) sono macchine distinte. Ciò significa la probabilità di avere n nodi che partecipano a un'azione distribuita - ad es. un join - trovarsi in uno stato ottimale (ad esempio avere solo le tabelle giuste nella cache o avere i blocchi appropriati acquisiti) è basso. Quindi ecco alcuni dei costi generali per ogni nodo per ottenere nello stato appropriato.

  • naturalmente hanno bisogno di comunicare per coordinare. Quindi c'è un network chatter tra i nodi e quelle latenze non sono insignificanti.

  • sopra i costi generali, a sua volta, aumentare il tempo medio di richieste di assistenza e quindi ridurre la disponibilità (in termini di capacità del sistema).

La scalabilità diventa un problema in quanto nessuno dei precedenti è O (1). Al massimo ci si può aspettare O (log n) e potrebbe essere brutto come O (n^2). Questo fa meraviglie per la scalabilità dell'uccisione (che per definizione significa la capacità del sistema di scalare a un numero maggiore di nodi).

Quanto sopra sono una parte della motivazione per i sistemi noSQL, ad es. se uno non richiede il coordinamento tra i nodi per le query di servizio, allora le prestazioni sono sostanzialmente migliori. (Come potete vedere, non è magico - stiamo semplicemente sacrificando la correttezza sistemica per le prestazioni.)

Problemi correlati