Voglio dividere il mio database ma non sono professionale in questo argomento. Quindi ecco le mie considerazioni. Sebbene la chiave di sharding sia un indice eccellente per indirizzare le richieste ai nodi corretti, per quanto riguarda il resto degli indici che verranno definiti sulle mie tabelle? Desidero che le richieste facciano riferimento a tali indici affinché vengano recapitati ai nodi corretti in modo che solo un nodo elabori la richiesta. Per quanto ho capito per questo scopo, devono esistere dei nodi di indice centralizzati. Quindi la mia domanda è se questa funzionalità sia già presente in RDBMS come MYSQL o dovrei usare altri prodotti speciali.Sharding e indici
risposta
Disclaimer: io lavoro per ScaleBase, io vivo e respiro sharding ogni giorno ...
Vorrei consigliare qui che se si Shard in base alla colonna A, ad esempio, un WHERE con Columna = xx andrà a un single shrad. WHERE columnB = xx dovrà andare tutti i frammenti perché ci potrebbe essere columnB = xx in tutti loro. A meno che la colonna A e la colonna B non siano correlate. E poi hai davvero bisogno di salvare la relazione in una tabella di mappatura. Posso dire che l'esecuzione su tutti i DB può essere super-veloce, è necessario eseguire in parallelo e unire i risultati. A ScaleBase sosteniamo la fusione ORDER BY, GROUP BY ecc Non è facile ...
Hey vedere di più informazioni nel mio blog: http://database-scalability.blogspot.com
Andrey, ciò che si sta descrivendo è esattamente come funziona il database di Clustrix, dove i dati e gli indici vengono distribuiti automaticamente, quindi le query vengono distribuite tra i nodi. Clustrix "brings the query to the data" e ha un'architettura a zero condiviso (quindi non è necessario alcun indice centralizzato). MySQL non ha alcuna funzionalità integrata per l'elaborazione distribuita, e mentre ci sono varie opzioni imbullonate, alla fine incontreranno limiti di scalabilità quando vengono colpiti i limiti delle risorse centralizzate.
Sì, questo è quello che non capisco. Se avessi nodi separati dedicati agli indici db (record posizione fisica + id macchina) potresti fare in modo che ogni query che fa riferimento alla colonna B vada a quelle macchine in cui i dati sono effettivamente! Questo è più veloce! –