Da IBM developerWorks: Fornire scalabilità dei dati a livello di cloud con NoSQL database
Scalabilità è il sistema che dovrebbe essere in grado di supportare database di grandi dimensioni con percentuali di richieste molto elevate a latenza molto bassa.
I sistemi NoSQL hanno in comune numerose funzionalità di progettazione:
- La possibilità di ridimensionare orizzontalmente il throughput su molti server.
- Una semplice interfaccia o protocollo a livello di chiamata (al contrario di un SQL
vincolante).
- Supporto per modelli di coerenza più deboli rispetto alle transazioni ACID in
RDBMS più tradizionale.
- Uso efficiente di indici e RAM distribuiti per l'archiviazione dei dati.
- La capacità di definire dinamicamente nuovi attributi o schema dati.
Perché i database relazionali potrebbero non essere ottimali per il ridimensionamento
In generale, i sistemi di gestione dei database relazionali sono stati considerati per decenni una "soluzione unica per la persistenza e il recupero dei dati". Sono maturati dopo intensi sforzi di ricerca e sviluppo e hanno creato con successo un grande mercato e soluzioni in diversi settori aziendali.
La sempre crescente necessità di scalabilità e nuovi requisiti applicativi hanno creato nuove sfide per gli RDBMS tradizionali, tra cui alcuni insoddisfatti di questo approccio one-size-fits-all in alcune applicazioni su scala web. La risposta a questa è stata una nuova generazione di software di database a basso costo e ad alte prestazioni progettato per sfidare il dominio dei sistemi di gestione dei database relazionali. Una delle ragioni principali del movimento NoSQL è che le diverse implementazioni di applicazioni web, enterprise e di cloud computing hanno requisiti diversi dei loro database - non tutte le applicazioni richiedono una rigida coerenza dei dati, ad esempio.
Un altro esempio: per i siti Web di volume elevato come eBay, Amazon, Twitter o Facebook, la scalabilità e l'alta disponibilità sono requisiti essenziali che non possono essere compromessi. Per queste applicazioni, anche la minima interruzione può avere conseguenze finanziarie significative e influire sulla fiducia dei clienti.
Over su DBA.SE: Che cosa significa ridimensionamento orizzontale?
Il ridimensionamento orizzontale si basa essenzialmente sulla costruzione anziché su. Non vai a comprare un server più grande e più carico e sposta tutto il carico su di esso, invece acquisti 1+ server aggiuntivi e li distribuisci su di loro.
Il ridimensionamento orizzontale viene utilizzato quando è possibile eseguire più istanze sui server contemporaneamente. In genere è molto più difficile passare da 1 server a 2 server, quindi passare da 2 a 5, 10, 50, ecc.
Una volta affrontati i problemi relativi all'esecuzione di istanze parallele, puoi trarre grande vantaggio da ambienti come Amazon EC2, Rackspace's Cloud Service, GoGrid, ecc. in quanto puoi aumentare e ridurre le istanze in base alla domanda, riducendo la necessità di pagare per la potenza del server che non stai usando solo per coprire quei carichi di punta.
I database relazionali sono uno degli elementi più difficili da eseguire in lettura / scrittura completa in parallelo.