View a markdown version of this page

Crea un piano di migrazione per la migrazione da Apache Cassandra ad Amazon Keyspaces - Amazon Keyspaces (per Apache Cassandra)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea un piano di migrazione per la migrazione da Apache Cassandra ad Amazon Keyspaces

Per una corretta migrazione da Apache Cassandra ad Amazon Keyspaces, consigliamo di esaminare i concetti e le best practice di migrazione applicabili, nonché di confrontare le opzioni disponibili.

Questo argomento illustra come funziona il processo di migrazione introducendo diversi concetti chiave e gli strumenti e le tecniche a tua disposizione. È possibile valutare le diverse strategie di migrazione per selezionare quella che meglio soddisfa le proprie esigenze.

Compatibilità funzionale

Valuta attentamente le differenze funzionali tra Apache Cassandra e Amazon Keyspaces prima della migrazione. Amazon Keyspaces supporta tutte le operazioni più comuni sul piano dati di Cassandra, come la creazione di keyspace e tabelle, la lettura e la scrittura di dati.

Tuttavia, ci sono alcune API Cassandra che Amazon Keyspaces non supporta. Per ulteriori informazioni sulle API supportate, consulta. API, operazioni, funzioni e tipi di dati di Cassandra supportati Per una panoramica di tutte le differenze funzionali tra Amazon Keyspaces e Apache Cassandra, consulta. Differenze funzionali: Amazon Keyspaces e Apache Cassandra

Per confrontare le API e lo schema di Cassandra che stai utilizzando con le funzionalità supportate in Amazon Keyspaces, puoi eseguire uno script di compatibilità disponibile nel toolkit Amazon Keyspaces su. GitHub

Come usare lo script di compatibilità
  1. Scaricate lo script Python di compatibilità da GitHub e spostatelo in una posizione che abbia accesso al cluster Apache Cassandra esistente.

  2. Lo script di compatibilità utilizza parametri simili a. CQLSH --portInserisci l'indirizzo IP e la porta che usi per connetterti ed eseguire query a uno dei nodi Cassandra del tuo cluster. --host

    Se il tuo cluster Cassandra utilizza l'autenticazione, devi anche fornire e. -username -password Per eseguire lo script di compatibilità, è possibile utilizzare il comando seguente.

    python toolkit-compat-tool.py --host hostname or IP -u "username" -p "password" --port native transport port

Stima i prezzi di Amazon Keyspaces

Questa sezione fornisce una panoramica delle informazioni da raccogliere dalle tabelle di Apache Cassandra per calcolare il costo stimato per Amazon Keyspaces. Ognuna delle tue tabelle richiede tipi di dati diversi, deve supportare diverse query CQL e mantiene un traffico distinto. read/write

Pensare ai tuoi requisiti in base a tabelle è in linea con le modalità di isolamento delle risorse a livello di tabella e capacità di throughput di Amazon Keyspaces. read/write Con Amazon Keyspaces, puoi definire la read/write capacità e le politiche di scalabilità automatica per le tabelle in modo indipendente.

La comprensione dei requisiti delle tabelle ti aiuta a stabilire le priorità delle tabelle per la migrazione in base alla funzionalità, ai costi e allo sforzo di migrazione.

Raccogli le seguenti metriche della tabella Cassandra prima di una migrazione. Queste informazioni aiutano a stimare il costo del carico di lavoro su Amazon Keyspaces.

  • Nome della tabella: il nome del keyspace completo e del nome della tabella.

  • Descrizione: una descrizione della tabella, ad esempio come viene utilizzata o che tipo di dati vi sono memorizzati.

  • Media di letture al secondo: il numero medio di letture a livello di coordinate sulla tabella in un ampio intervallo di tempo.

  • Media di scritture al secondo: il numero medio di scritture a livello di coordinate sulla tabella in un ampio intervallo di tempo.

  • Dimensione media delle righe in byte: la dimensione media delle righe in byte.

  • Dimensioni di archiviazione in GB: la dimensione di archiviazione non elaborata per una tabella.

  • Ripartizione della coerenza di lettura: percentuale di letture che utilizzano la coerenza finale (LOCAL_ONEoONE) rispetto a una consistenza forte (). LOCAL_QUORUM

Questa tabella mostra un esempio delle informazioni sulle tabelle che è necessario raccogliere quando si pianifica una migrazione.

Nome tabella Description Media di letture al secondo Media di scritture al secondo Dimensione media delle righe in byte Dimensioni di archiviazione in GB Leggi la ripartizione della coerenza

mykeyspace.mytable

Utilizzato per memorizzare la cronologia del carrello

10.000

5.000

2.200

2.000

100% LOCAL_ONE

mykeyspace.mytable2

Utilizzato per memorizzare le informazioni più recenti del profilo

20.000

1.000

850

1.000

25% LOCAL_QUORUM 75% LOCAL_ONE

Come raccogliere le metriche delle tabelle

Questa sezione fornisce istruzioni dettagliate su come raccogliere le metriche di tabella necessarie dal cluster Cassandra esistente. Queste metriche includono le dimensioni delle righe, le dimensioni della tabella e read/write le richieste al secondo (RPS). Consentono di valutare i requisiti di capacità di throughput per una tabella Amazon Keyspaces e stimare i prezzi.

Come raccogliere le metriche della tabella nella tabella sorgente di Cassandra
  1. Determina la dimensione della riga

    La dimensione delle righe è importante per determinare la capacità di lettura e l'utilizzo della capacità di scrittura in Amazon Keyspaces. Il diagramma seguente mostra la distribuzione tipica dei dati su un intervallo di token Cassandra.

    Un diagramma che mostra la distribuzione tipica dei dati su un intervallo di token Cassandra utilizzando il murmur3 partizionatore.

    Puoi utilizzare uno script di campionamento delle dimensioni delle righe disponibile su GitHub per raccogliere le metriche delle dimensioni delle righe per ogni tabella del cluster Cassandra.

    Lo script esporta i dati delle tabelle da Apache Cassandra utilizzando cqlsh e awk calcolando la deviazione minima, massima, media e standard della dimensione delle righe su un set di esempio configurabile di dati di tabella. Il campionatore delle dimensioni delle righe passa gli argomenti acqlsh, in modo che gli stessi parametri possano essere utilizzati per connettersi e leggere dal cluster Cassandra.

    La seguente dichiarazione ne è un esempio.

    ./row-size-sampler.sh 10.22.33.44 9142 \\ -u "username" -p "password" --ssl

    Per ulteriori informazioni su come viene calcolata la dimensione delle righe in Amazon Keyspaces, consultaStima della dimensione delle righe in Amazon Keyspaces.

  2. Determina le dimensioni della tabella

    Con Amazon Keyspaces, non è necessario effettuare il provisioning dello storage in anticipo. Amazon Keyspaces monitora continuamente le dimensioni fatturabili delle tabelle per determinare i costi di archiviazione. Lo spazio di archiviazione viene fatturato per. GB-month Le dimensioni della tabella Amazon Keyspaces si basano sulla dimensione grezza (non compressa) di una singola replica.

    Per monitorare le dimensioni della tabella in Amazon Keyspaces, puoi utilizzare la metricaBillableTableSizeInBytes, visualizzata per ogni tabella nel. Console di gestione AWS

    Per stimare la dimensione fatturabile della tua tabella Amazon Keyspaces, puoi utilizzare uno di questi due metodi:

    • Usa la dimensione media delle righe e moltiplicala per il numero o le righe.

      Puoi stimare la dimensione della tabella Amazon Keyspaces moltiplicando la dimensione media delle righe per il numero di righe della tabella sorgente di Cassandra. Usa lo script di esempio sulla dimensione delle righe della sezione precedente per acquisire la dimensione media delle righe. Per acquisire il conteggio delle righe, puoi utilizzare strumenti come dsbulk count determinare il numero totale di righe nella tabella di origine.

    • Usa il nodetool per raccogliere i metadati della tabella.

      Nodetoolè uno strumento amministrativo fornito nella distribuzione Apache Cassandra che fornisce informazioni sullo stato del processo Cassandra e restituisce i metadati delle tabelle. Puoi utilizzarlo nodetool per campionare i metadati sulle dimensioni della tabella e quindi estrapolare le dimensioni della tabella in Amazon Keyspaces.

      Il comando da usare è. nodetool tablestats Tablestats restituisce le dimensioni e il rapporto di compressione della tabella. Le dimensioni della tabella vengono memorizzate come tablelivespace per la tabella ed è possibile dividerle per. compression ratio Quindi moltiplica questo valore di dimensione per il numero di nodi. Infine dividi per il fattore di replica (in genere tre).

      Questa è la formula completa per il calcolo che puoi usare per valutare le dimensioni della tabella.

      ((tablelivespace / compression ratio) * (total number of nodes))/ (replication factor)

      Supponiamo che il cluster Cassandra abbia 12 nodi. L'esecuzione del nodetool tablestats comando restituisce un valore tablelivespace di 200 GB e un valore compression ratio di 0,5. Il keyspace ha un fattore di replica pari a tre.

      Ecco come appare il calcolo per questo esempio.

      (200 GB / 0.5) * (12 nodes)/ (replication factor of 3) = 4,800 GB / 3 = 1,600 GB is the table size estimate for Amazon Keyspaces
  3. Acquisisci il numero di letture e scritture

    Per determinare la capacità e i requisiti di scalabilità per le tabelle Amazon Keyspaces, acquisisci la frequenza di richieste di lettura e scrittura delle tabelle Cassandra prima della migrazione.

    Amazon Keyspaces è serverless e paghi solo per quello che usi. In generale, il prezzo del read/write throughput in Amazon Keyspaces si basa sul numero e sulla dimensione delle richieste.

    Esistono due modalità di capacità in Amazon Keyspaces:

    • On-demand— Si tratta di un'opzione di fatturazione flessibile in grado di soddisfare migliaia di richieste al secondo senza la necessità di pianificare la capacità. Offre prezzi pay-per-request per le richieste di lettura e scrittura, in modo da pagare solo per ciò che si utilizza.

    • Fornito: se si sceglie la modalità di capacità di throughput con provisioning, si specifica il numero di letture e scritture al secondo necessarie per l'applicazione. Questo ti aiuta a gestire l'utilizzo di Amazon Keyspaces in modo che rimanga pari o inferiore a una frequenza di richiesta definita per mantenere la prevedibilità.

      La modalità provisioned offre la scalabilità automatica per regolare automaticamente la frequenza assegnata per aumentare o diminuire per migliorare l'efficienza operativa. Per ulteriori informazioni sulla gestione delle risorse serverless, vedere. Gestione delle risorse serverless in Amazon Keyspaces (per Apache Cassandra)

    Poiché fornisci capacità di throughput in lettura e scrittura separatamente in Amazon Keyspaces, devi misurare la frequenza di richieste di lettura e scrittura nelle tabelle esistenti in modo indipendente.

    Per raccogliere le metriche di utilizzo più accurate dal cluster Cassandra esistente, acquisisci la media delle richieste al secondo (RPS) per le operazioni di lettura e scrittura a livello di coordinatore per un lungo periodo di tempo per una tabella aggregata su tutti i nodi in un unico data center.

    L'acquisizione dell'RPS medio per un periodo di almeno diverse settimane consente di rilevare picchi e valli nei modelli di traffico, come mostrato nel diagramma seguente.

    Un diagramma che mostra il tasso medio di richieste al secondo al giorno per un periodo di due settimane.

    Sono disponibili due opzioni per determinare la frequenza di richieste di lettura e scrittura della tabella Cassandra.

    • Usa il monitoraggio Cassandra esistente

      Puoi utilizzare le metriche mostrate nella tabella seguente per osservare le richieste di lettura e scrittura. Tieni presente che i nomi delle metriche possono cambiare in base allo strumento di monitoraggio che stai utilizzando.

      Dimensione Metrica Cassandra JMX

      Scritture

      org.apache.cassandra.metrics:type=ClientRequest, scope=Write,name=Latency#Count

      Letture

      org.apache.cassandra.metrics:type=ClientRequest, scope=Read,name=Latency#Count

    • Utilizzo della nodetool

      Usa nodetool tablestats e nodetool info per acquisire le operazioni medie di lettura e scrittura dalla tabella. tablestatsrestituisce il numero totale di letture e scritture dal momento in cui il nodo è stato avviato. nodetool infofornisce il tempo di attività di un nodo in secondi.

      Per ricevere la media al secondo di letture e scritture, dividi il numero di letture e scritture per il tempo di attività del nodo in secondi. Quindi, per le letture si divide per il livello di coerenza e per le scritture si divide per il fattore di replica. Questi calcoli sono espressi nelle seguenti formule.

      Formula per la media delle letture al secondo:

      ((number of reads * number of nodes in cluster) / read consistency quorum (2)) / uptime

      Formula per la media delle scritture al secondo:

      ((number of writes * number of nodes in cluster) / replication factor of 3) / uptime

      Supponiamo di avere un cluster a 12 nodi attivo da 4 settimane. nodetool inforestituisce 2.419.200 secondi di uptime e nodetool tablestats restituisce 1 miliardo di scritture e 2 miliardi di letture. Questo esempio comporterebbe il seguente calcolo.

      ((2 billion reads * 12 in cluster) / read consistency quorum (2)) / 2,419,200 seconds = 12 billion reads / 2,419,200 seconds = 4,960 read request per second ((1 billion writes * 12 in cluster) / replication factor of 3) / 2,419,200 seconds = 4 billion writes / 2,419,200 seconds = 1,653 write request per second
  4. Determinare l'utilizzo della capacità della tabella

    Per stimare l'utilizzo medio della capacità, iniziate con i tassi medi di richiesta e la dimensione media delle righe della tabella sorgente di Cassandra.

    Amazon Keyspaces utilizza unità di capacità di lettura (RCU) e unità di capacità di scrittura (WCU) per misurare la capacità di throughput assegnata per le letture e le scritture delle tabelle. Per questa stima utilizziamo queste unità per calcolare le esigenze di capacità di lettura e scrittura della nuova tabella Amazon Keyspaces dopo la migrazione.

    Più avanti in questo argomento discuteremo di come la scelta tra la modalità di capacità predisposta e quella su richiesta influisca sulla fatturazione. Tuttavia, per la stima dell'utilizzo della capacità in questo esempio, assumiamo che la tabella sia in modalità provvisoria.

    • Letture: una RCU rappresenta una richiesta di LOCAL_QUORUM lettura o due richieste di LOCAL_ONE lettura per una riga di dimensioni fino a 4 KB. Se è necessario leggere una riga di dimensioni superiori a 4 KB, l'operazione di lettura utilizza RCU aggiuntive. Il numero totale di RCU richieste dipende dalla dimensione della riga e dal fatto che si desideri utilizzare LOCAL_QUORUM o meno la coerenza di LOCAL_ONE lettura.

      Ad esempio, la lettura di una riga da 8 KB richiede 2 RCU che utilizzano la coerenza di LOCAL_QUORUM lettura e 1 RCU se si sceglie la coerenza di lettura. LOCAL_ONE

    • Scritture: una WCU rappresenta una scrittura per una riga di dimensioni fino a 1 KB. Tutte le scritture utilizzano LOCAL_QUORUM la coerenza e non sono previsti costi aggiuntivi per l'utilizzo di transazioni leggere (LWT).

      Il numero totale di WCU richieste dipende dalla dimensione delle righe. Se è necessario scrivere una riga di dimensioni superiori a 1 KB, l'operazione di scrittura utilizza WCU aggiuntive. Ad esempio, se la dimensione della riga è di 2 KB, sono necessarie 2 WCU per eseguire una richiesta di scrittura.

    La formula seguente può essere utilizzata per stimare gli RCU e i WCU richiesti.

    • La capacità di lettura nelle RCU può essere determinata moltiplicando le letture al secondo per il numero di righe lette per lettura moltiplicato per la dimensione media delle righe divisa per 4 KB e arrotondata al numero intero più vicino.

    • La capacità di scrittura nelle WCU può essere determinata moltiplicando il numero di richieste per la dimensione media delle righe divisa per 1 KB e arrotondata al numero intero più vicino.

    Ciò è espresso nelle seguenti formule.

    Read requests per second * ROUNDUP((Average Row Size)/4096 per unit) = RCUs per second Write requests per second * ROUNDUP(Average Row Size/1024 per unit) = WCUs per second

    Ad esempio, se stai eseguendo 4.960 richieste di lettura con una dimensione di riga di 2,5 KB sulla tua tabella Cassandra, hai bisogno di 4.960 RCU in Amazon Keyspaces. Se attualmente esegui 1.653 richieste di scrittura al secondo con una dimensione di riga di 2,5 KB sulla tua tabella Cassandra, hai bisogno di 4.959 WCU al secondo in Amazon Keyspaces.

    Questo esempio è espresso nelle seguenti formule.

    4,960 read requests per second * ROUNDUP( 2.5KB /4KB bytes per unit) = 4,960 read requests per second * 1 RCU = 4,960 RCUs 1,653 write requests per second * ROUNDUP(2.5KB/1KB per unit) = 1,653 requests per second * 3 WCUs = 4,959 WCUs

    L'utilizzo eventual consistency consente di risparmiare fino alla metà della capacità di throughput per ogni richiesta di lettura. Ogni lettura alla fine coerente può consumare fino a 8 KB. È possibile calcolare eventuali letture coerenti moltiplicando il calcolo precedente per 0,5, come mostrato nella formula seguente.

    4,960 read requests per second * ROUNDUP( 2.5KB /4KB per unit) * .5 = 2,480 read request per second * 1 RCU = 2,480 RCUs
  5. Calcola la stima mensile dei prezzi per Amazon Keyspaces

    Per stimare la fatturazione mensile della tabella in base al throughput di read/write capacità, puoi calcolare i prezzi per la modalità on-demand e per la modalità provisioned utilizzando diverse formule e confrontare le opzioni per la tua tabella.

    Modalità con provisioning: il consumo di capacità di lettura e scrittura viene fatturato in base a una tariffa oraria basata sulle unità di capacità al secondo. Innanzitutto, dividi tale percentuale per 0,7 per rappresentare l'utilizzo previsto di scalabilità automatica predefinito del 70%. Quindi moltiplica per 30 giorni di calendario, 24 ore al giorno e i prezzi della tariffa regionale.

    Questo calcolo è riassunto nelle seguenti formule.

    (read capacity per second / .7) * 24 hours * 30 days * regional rate (write capacity per second / .7) * 24 hours * 30 days * regional rate

    On-demand modalità: la capacità di lettura e scrittura viene fatturata in base alla tariffa per richiesta. Innanzitutto, moltiplica la frequenza delle richieste per 30 giorni di calendario e 24 ore al giorno. Quindi dividi per un milione di unità di richiesta. Infine, moltiplica per il tasso regionale.

    Questo calcolo è riassunto nelle seguenti formule.

    ((read capacity per second * 30 * 24 * 60 * 60) / 1 Million read request units) * regional rate ((write capacity per second * 30 * 24 * 60 * 60) / 1 Million write request units) * regional rate

Scegli una strategia di migrazione

Puoi scegliere tra le seguenti strategie di migrazione durante la migrazione da Apache Cassandra ad Amazon Keyspaces:

  • Online: si tratta di una migrazione in tempo reale che utilizza due scritture per iniziare a scrivere nuovi dati contemporaneamente su Amazon Keyspaces e sul cluster Cassandra. Questo tipo di migrazione è consigliato per le applicazioni che richiedono zero tempi di inattività durante la migrazione e la coerenza tra lettura e scrittura.

    Per ulteriori informazioni su come pianificare e implementare una strategia di migrazione online, vedereMigrazione online ad Amazon Keyspaces: strategie e best practice.

  • Offline: questa tecnica di migrazione prevede la copia di un set di dati da Cassandra ad Amazon Keyspaces durante un periodo di inattività. La migrazione offline può semplificare il processo di migrazione, perché non richiede modifiche all'applicazione o la risoluzione dei conflitti tra dati storici e nuove scritture.

    Per ulteriori informazioni su come pianificare una migrazione offline, vedereProcesso di migrazione offline: da Apache Cassandra ad Amazon Keyspaces.

  • Ibrida: questa tecnica di migrazione consente di replicare le modifiche su Amazon Keyspaces quasi in tempo reale, ma senza coerenza tra lettura e scrittura.

    Per ulteriori informazioni su come pianificare una migrazione ibrida, consulta. Utilizzo di una soluzione di migrazione ibrida: da Apache Cassandra ad Amazon Keyspaces

Dopo aver esaminato le tecniche di migrazione e le best practice discusse in questo argomento, è possibile inserire le opzioni disponibili in un albero decisionale per progettare una strategia di migrazione basata sui requisiti e sulle risorse disponibili.