Domanda

Generalmente il server del database è la scatola più grande e costosa che dobbiamo acquistare poiché il ridimensionamento verticale è l'unica opzione.Esistono database che si adattano bene in senso orizzontale (ad es.su più macchine commodity) e quali sono i limiti di questo approccio?

È stato utile?

Soluzione

Non preoccuparti, le buone soluzioni stanno arrivando!

Couchdb E Ipertabella sono open source e ancora in versione alpha, ma sono chiaramente progettati per semplificare la scalabilità su software di consumo.Funzionano abbastanza bene e potrebbero cambiare il modo in cui pensi ai database.

Inoltre, se va bene lasciare che qualcun altro si occupi della distribuzione per te, Google App Engine E Amazon SimpleDB sono servizi di database distribuiti estremamente economici, sebbene al momento siano entrambi in versione beta, quindi vengono imposte limitazioni rigorose.

Altri suggerimenti

Oracle RAC non è affatto scalabile orizzontalmente, poiché tutte le istanze Oracle condividono lo stesso storage di dati.Sì, con il materiale SAN puoi ottenere un DB di grandi dimensioni, ma non è affatto scalabile.In altre parole, Oracle RAC è ancora un approccio scalabile.Quindi, per il ridimensionamento o il ridimensionamento orizzontale, è necessario partizionare i dati per funzione, il che significa inserire diversi gruppi di tabelle in database diversi;oppure partizionare i dati per tabella, il che significa partizionare una tabella in più sottotabelle con lo stesso schema ma archiviarle in database diversi.In questo modo si ottiene una soluzione scalabile.Ci sono molte risorse a riguardo. Sharding è stata una parola d'ordine per un po' nella sfera dei blog sull'architettura di siti web web 2.0.Poiché lo Sharding non è direttamente supportato dal database stesso, devi creare la tua soluzione.Ma come ho detto, ci sono già molte lezioni.Per Oracle, è possibile la tabella delle partizioni.Per MySQL, controlla questa domanda

Oracle RAC: cluster di applicazioni reali

Funziona bene, basta aggiungere caselle al tuo cluster.Puoi eseguire il failover da una casella all'altra.Non è replica, tutte le scatole fanno parte della stessa unità logica.

È piuttosto costoso, ovviamente.

Esistono tecniche di archiviazione come JavaSpaces (o un'implementazione commerciale come Gigaspaces) che forniscono un accesso altamente scalabile, veloce e sicuro agli oggetti.

Esistono anche sistemi di cache distribuiti come memcached, che offrono un approccio simile.

Naturalmente, nessuno di questi è un vero database, ma sono cose che possono funzionare insieme ai database per offrire una grande scalabilità orizzontale, data un'architettura adeguata.Il vero problema è che se si desidera tutta la bontà ACID fornita con un database, ci sono alcune inevitabili penalità in termini di prestazioni.L'unica via d'uscita è capire i bit in cui non è necessario ACID e utilizzare altre tecnologie per servire quei bit.

Oracle RAC è la Rolls Royce dei database che consente l'aggiunta di nodi hardware aggiuntivi in ​​modo relativamente semplice e il failover hardware.

Tuttavia, i costi dell'hardware delle materie prime saranno sminuiti dai costi della licenza.

Perché ritieni di aver bisogno del ridimensionamento orizzontale.Un server core multi CPU con 40 GB di RAM e storage SAN può supportare installazioni DB di notevoli dimensioni.

Potete fornire informazioni sul dimensionamento e sull'attività prevista per consentire una migliore comprensione del problema?

Se segui il percorso RAC, vale la pena ricordare che non si adatta orizzontalmente per sempre.Anche i venditori ammettono che il 90% dei clienti rac hanno 4 nodi o meno.Una volta che vai oltre, ottieni rendimenti decrescenti.Quindi rac potrebbe funzionare per te, ma non è garantito che sia la risposta.

MySQL: http://www.mysql.com/why-mysql/scaleout.html

Le limitazioni sono che funziona meglio con carichi di lavoro prevalentemente di lettura.In genere hai un "master" che riceve tutte le scritture e molti "slave" che replicano le scritture.Quindi distribuisci le letture su tutti i database.

La replica di MySQL è asincrona, quindi probabilmente dovrai affrontare problemi di ritardo temporale (scrivi sul master e poi leggi da uno slave prima che la scrittura venga replicata).

Netezza e altri dispositivi di data warehouse si adattano in questo modo, ma non sono adatti ai carichi di lavoro OLTP e delle app Web.

Il percorso Oracle per la scalabilità su più macchine è denominato Real Application Clusters (Oracle RAC).Non c'è fine alla documentazione su questo altrove;potresti provare a iniziare da http://www.oracle.com/database/rac_home.html.

Cluster di applicazioni reali Oracle.Se vuoi il meglio, dagli un'occhiata.

Se pensi seriamente di riuscire a superare un decente box multicore "Big Iron", allora pensi di partizionare i tuoi dati.Questo è un buon modo per aumentare la scalabilità indipendentemente dal database.

Tutti i database che orizzontalmente avranno un costo elevato.

A meno che tu non abbia mega soldi da lanciare al problema, dimentica il RAC.Anche se è molto buono, è MOLTO costoso una volta scalato oltre i 2 nodi.

MongoDBè uno dei migliori database scalabile orizzontalmente.

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