Scalabilità: come funziona la suddivisione di una tabella di database su diversi server SQL replicati?

4

Mi piacerebbe saperne di più sui concetti generali alla base della divisione dei dati di un database in diversi server. Ad esempio, supponiamo di avere un database SQL Server con una tabella enorme. Si supponga che un singolo server non possa gestire la quantità di dati in questa tabella. Vorrei spezzare quel tavolo e dividere il suo contenuto tra diversi server con un database identico (replicato).

Ora, supponiamo di avere una singola connessione SQL (ADO) a uno di questi server e di selezionare i record da questa particolare tabella. Poiché i dati si trovano in database separati su server separati, ho bisogno di raccogliere i record da tutti i vari server e combinarli in uno solo.

Sono sicuro che ci sono metodi standard di adattamento per questo, e sono disposto a seguire un percorso diverso da una connessione diretta a SQL Server (ho intenzione di inserirlo nella mia propria API HTTP Server comunque) ma sto ancora andando utilizzare SQL Server come motore effettivo. Qual è la pratica più standard e dove posso saperne di più?

    
posta Jerry Dodge 25.01.2013 - 01:55
fonte

2 risposte

6

Penso che alla fine quello che stai cercando sia una spiegazione dei diversi modi in cui SQL Server può essere utilizzato per gestire tabelle e gruppi di dati estremamente grandi che vengono replicati attraverso le istanze del server di database. Ci sono diversi approcci a questo problema e nessuno di essi è un proiettile d'argento, ma comprendere le basi di ciascuno è un buon modo per fare la scelta giusta per l'architettura.

Sharding

Lo sharding del database è un modo per prendere un enorme set di dati e dividerlo in un numero di diversi gruppi di file. Questi singoli filegroup possono essere archiviati tutti su un singolo server, più server o, meglio ancora, attraverso una Area di archiviazione basata su RAID.

La linea di fondo qui è che le prestazioni IO fisiche migliorano in modo significativo quando si accede ai record solo da pochi gruppi di file fisici rispetto a un enorme filegroup in un set di dati non sdrammato.

SQL Server non ha un modo economico o semplice per farlo subito, né conosco alcun modo semplice o economico per farlo con altri importanti fornitori di database. Una volta che inizi a parlare di frammenti, allora stai giocando a un altro gioco con le palle.

Viste partizione distribuita

Consentono di accedere a set di dati ben partizionati in modo tale che si possano recuperare solo i record necessari in base alla propria strategia di partizionamento. Vi sono buone informazioni su MSDN su questo con SQL Server .

Cluster attivo

Il concetto di clustering consiste nel prendere più istanze di SQL Server come nodi e farle lavorare insieme su un singolo database, sincronizzate in modo che le partizioni su diversi gruppi di file vengano letti e scritti in modo da non danneggiare o danneggiare dati, e in un modo che scala in modo massiccio.

Replica peer-to-peer

In questa configurazione, tutti i server di database hanno una propria istanza e ognuno deve essere configurato per influenzare solo la propria piccola area dello schema. I dati sono spesso obsoleti tra loro e devono essere sincronizzati attraverso un processo esterno e le modifiche dello schema possono essere estremamente difficili da implementare. Questo non è il modo ideale per gestirlo nella tua applicazione.

Non posso permettermi partizioni distribuite e clustering scalabile massicciamente!

Quindi non hai più di un milione di licenze e hardware per soluzioni altamente scalabili? C'è sempre il Cloud. I provider di soluzioni Azure e di altri server SQL PaaS (Platform as a Service) possono fornire la scalabilità necessaria senza il grande investimento iniziale. Questa è generalmente la via più facile da percorrere.

    
risposta data 25.01.2013 - 19:30
fonte
2

Penso che questo copra le tue opzioni: link

Penso anche che questo sia ciò per cui è stato creato Cassandra, ma questo non aiuta molto in termini di SQL.

    
risposta data 25.01.2013 - 02:18
fonte

Leggi altre domande sui tag