Che cos'è la scalabilità del database?
In questa pagina verranno trattati i seguenti argomenti per aiutarvi a comprendere meglio la scalabilità dei database:
- Scala orizzontale e verticale
- Sfide di scalabilità del database
- Come migliorare la scalabilità del database
- Scalabilità dei database NoSQL rispetto a quelli relazionali
- Conclusione
Che cos'è la scalabilità dei database? La scalabilità del database non è solo la capacità di un database di gestire un carico maggiore, ma anche di migliorare le prestazioni all'aumentare delle esigenze aziendali di un'applicazione. Si noti che scalare non significa solo aumentare le risorse per soddisfare una domanda maggiore, ma anche ridurle se la domanda diminuisce.
L'incapacità di un database di scalare ha tre esiti tipici: Sovraccarico di CPU/memoria, capacità dello storage e sovraccarico della rete che riduce il traffico di dati. Ognuno di questi problemi, o una loro combinazione, può far crollare l'applicazione e avere gravi ripercussioni sull'azienda.
Questa pagina tratta due tipi di scalabilità, le sfide di ciascuno e le soluzioni consigliate per superarle. Infine, confronta i database NoSQL e relazionali nel contesto della scalabilità e mostra perché Couchbase è la scelta migliore per la scalabilità.
Scala orizzontale e verticale
Esistono due modi in cui un database può migliorare la sua disponibilità e il suo comportamento quando vengono richieste più risorse: lo scaling verticale e lo scaling orizzontale.
Che cos'è il ridimensionamento orizzontale?
Lo scaling orizzontale, meglio abilitato nei sistemi non relazionali, si riferisce all'aggiunta di altri nodi per condividere un carico maggiore. Questi nodi fanno parte di un cluster che può essere distribuito su più server e i dati possono essere collegati tramite join. Lo scaling orizzontale è noto anche come scaling out.
Che cos'è il vertical scaling?
Lo scaling verticale si riferisce all'aggiunta di ulteriori risorse fisiche o virtuali a un database in esecuzione su un singolo server. Ciò può avvenire aggiungendo più potenza di CPU, memoria o capacità di archiviazione. Lo scaling verticale è noto anche come scaling up.
Cosa è meglio, la scalatura orizzontale o verticale?
Il tipo di scalatura da scegliere dipende dall'applicazione e dalle particolari sfide da superare. Fattori da considerare:
- Lo scaling verticale è una buona prima opzione quando non è necessario un salto di scala massiccio e si vogliono ridurre al minimo le modifiche al sistema complessivo, oltre a quelle alle risorse di calcolo.
- La scalata verticale può richiedere tempi di inattività se si cambia macchina per ottenere più risorse.
- In definitiva, con l'espansione delle risorse di calcolo, potrebbe essere più costoso far crescere e mantenere il database utilizzando lo scaling verticale.
Quando si verificano questi problemi, o se si vuole rendere il sistema a prova di futuro per diversi scenari di crescita, la scalabilità orizzontale è la strada da percorrere.
- Lo scaling orizzontale può migliorare la tolleranza agli errori e la disponibilità perché riduce l'impatto di un guasto di un singolo server.
- Lo scaling orizzontale può richiedere modifiche all'architettura e al codice dell'applicazione, ma l'impatto è mitigato dai database moderni come Couchbase, che offrono funzionalità di autoscaling.
Sfide di scalabilità del database
Scalare un database può essere complicato e le sfide che si incontrano dipendono da una serie di fattori. La prima sfida può essere quella di avere un'applicazione legacy che gira su un database relazionale. In questo caso, si deve scegliere tra l'impiego di ulteriori risorse fisiche/virtuali o la riprogettazione dell'applicazione per l'esecuzione su un database che supporti lo scaling orizzontale.
Un'altra sfida dello scaling delle applicazioni moderne è la gestione dei costi in base ai diversi carichi. Non si vuole pagare lo stesso prezzo per le risorse di calcolo nei periodi di basso e alto utilizzo. Si vuole che i costi corrispondano alla domanda.
Una terza sfida è che i database scalati orizzontalmente possono essere più complicati da mantenere e gestire. Couchbase Capella™ è la soluzione ideale in questo caso, perché è un Database-as-a-Service (DBaaS) completamente gestito, che supporta la replica e lo sharding, oltre a scalatura multidimensionale.
Come migliorare la scalabilità del database
È possibile migliorare la scalabilità orizzontale supportando sia la replica che lo sharding.
Replica
La replica è una forma di scalabilità che crea copie di un database o di nodi di database. Se un nodo si guasta, una copia dei suoi dati può essere recuperata da un altro nodo. Un altro vantaggio della replica è che le richieste possono arrivare a nodi diversi in posizioni diverse, riducendo così il carico su un particolare nodo.
Alcuni componenti chiave di Couchbase si basano su una topologia di replica master-master in cui più istanze di Couchbase possono fungere da nodi master e replicare i dati tra loro:
- Couchbase utilizza flussi di replica per replicare i dati tra i nodi. Un flusso di replica è un flusso continuo bidirezionale di dati tra due nodi.
- Couchbase memorizza i dati in bucketche sono contenitori logici che raggruppano dati correlati. Ogni bucket può essere configurato per replicare i propri dati su uno o più altri nodi.
- Replica trasversale dei centri dati (XDCR) è una funzione di Couchbase che consente la replica tra centri dati. XDCR consente la replica tra cluster Couchbase, che possono trovarsi in regioni o zone di disponibilità diverse.
- In una topologia di replica master-master, possono verificarsi conflitti quando più nodi aggiornano contemporaneamente la stessa porzione di dati. Couchbase ha un meccanismo di risoluzione dei conflitti che si basa sulla versione dei documenti e sui timestamp per risolvere i conflitti.
Sharding
Anche lo sharding, noto anche come partizionamento, si basa sul principio dello spostamento dei dati su più nodi. A differenza della replica, lo sharding prevede la suddivisione dei dati anziché la creazione di copie. Sharding del database divide l'intero set di dati in più gruppi noti come shard. Una volta diviso, ogni shard può essere archiviato in modo indipendente, di solito su più server che vengono spesso definiti cluster. Ogni shard è accessibile in modo indipendente, il che significa che è possibile accedere ai dati più velocemente e disporre di più risorse per l'elaborazione, il calcolo e l'archiviazione.
Lo sharding consente prestazioni più veloci, ma introduce anche una maggiore complessità. Questa complessità include il concetto di ribilanciamento, che comporta lo spostamento dei dati tra gli shard nel tempo per mantenerli distribuiti in modo uniforme.
Per ulteriori dettagli, fare riferimento a questa guida sullo sharding in Couchbase.
Scalabilità dei database NoSQL rispetto a quelli relazionali
I database NoSQL sono intrinsecamente più scalabili dei database relazionali perché possono essere scalati sia verticalmente che orizzontalmente. Inoltre, hanno un'architettura distribuita progettata per gestire grandi volumi di dati su più server.
I tradizionali sistemi di gestione dei database relazionali (RDBMS), come Oracle, privilegiano la coerenza rispetto alla disponibilità. Al contrario, i database NoSQL privilegiano la disponibilità rispetto alla coerenza e si concentrano maggiormente sul supporto di volumi più elevati di utenti e dati. Inoltre, la distribuzione dei dati è più tollerante ai guasti se alcuni nodi si guastano.
Conclusione
Per essere sempre un passo avanti rispetto alle esigenze di scalabilità, eseguite regolarmente test di carico e scegliete un database che supporti il metodo di scalabilità più adatto alle vostre applicazioni e alle vostre esigenze aziendali. Sappiate che gli approcci di scalabilità orizzontale e verticale richiedono dei compromessi, come la scelta del costo rispetto alla complessità o del tempo di attività rispetto alla coerenza.
Utilizzate queste risorse per saperne di più sullo scaling dei database con Couchbase:
- Scalatura di database multidimensionali - dettagli sui servizi Couchbase, il ribilanciamento, gli stati, gli eventi e i lavori
- Perché scegliere un database NoSQL? - cos'è il NoSQL, come funziona e per cosa sono utili i database NoSQL
- Database senza server - vantaggi per gli sviluppatori, la persistenza dei dati per le applicazioni e le applicazioni supportate
- Couchbase Capella DBaaS - il modo più semplice e veloce per iniziare a utilizzare Couchbase ed eliminare la gestione dei database.