Eseguire la migrazione da Apache Cassandra a Bigtable

Questo documento ti guida nella procedura di migrazione dei dati da Apache Cassandra a Bigtable con interruzioni minime. Descrive come utilizzare strumenti open source, come l'adattatore proxy da Cassandra a Bigtable o il client da Cassandra a Bigtable per Java, per eseguire la migrazione. Prima di iniziare, assicurati di conoscere Bigtable per gli utenti Cassandra.

Scegliere un approccio di migrazione

Puoi eseguire la migrazione da Apache Cassandra a Bigtable utilizzando uno dei seguenti approcci:

  • L'adattatore proxy da Cassandra a Bigtable ti consente di connettere le applicazioni basate su Cassandra a Bigtable senza modificare i driver Cassandra. Questo approccio è ideale per le applicazioni che richiedono modifiche minime al codice.
  • Il client da Cassandra a Bigtable per Java ti consente di eseguire l'integrazione direttamente con Bigtable e sostituire i driver Cassandra. Questo approccio è ideale per le applicazioni che richiedono prestazioni e flessibilità elevate.

Adattatore proxy da Cassandra a Bigtable

L'adattatore proxy da Cassandra a Bigtable ti consente di connettere le applicazioni basate su Cassandra a Bigtable. L'adattatore proxy funziona come un'interfaccia Cassandra compatibile con il protocollo e consente all'applicazione di interagire con Bigtable utilizzando CQL. L'utilizzo dell'adattatore proxy non richiede la modifica dei driver Cassandra e le modifiche alla configurazione sono minime.

Per configurare l'adattatore proxy, consulta Adattatore proxy da Cassandra a Bigtable.

Per scoprire quali versioni di Cassandra supportano l'adattatore proxy, consulta Versioni di Cassandra supportate.

Limitazioni

L'adattatore proxy da Cassandra a Bigtable fornisce un supporto limitato per determinati tipi di dati, funzioni, query e clausole.

Per ulteriori informazioni, consulta Proxy da Cassandra a Bigtable - Limitazioni.

Keyspace Cassandra

Un keyspace Cassandra archivia le tabelle e gestisce le risorse in modo simile a un'istanza Bigtable. L'adattatore proxy da Cassandra a Bigtable gestisce la denominazione dei keyspace in modo trasparente, in modo che tu possa eseguire query utilizzando gli stessi keyspace. Tuttavia, devi creare una nuova istanza Bigtable per ottenere un raggruppamento logico delle tabelle. Devi anche configurare la replica Bigtable separatamente.

Supporto DDL

L'adattatore proxy da Cassandra a Bigtable supporta le operazioni DDL (Data Definition Language). Le operazioni DDL consentono di creare e gestire le tabelle direttamente tramite i comandi CQL. Ti consigliamo questo approccio per configurare lo schema perché è simile a SQL, ma non devi definire lo schema nei file di configurazione ed eseguire script per creare tabelle.

Gli esempi seguenti mostrano come l'adattatore proxy da Cassandra a Bigtable supporta le operazioni DDL:

  • Per creare una tabella Cassandra utilizzando CQL, esegui il comando CREATE TABLE:

    CREATE TABLE keyspace.table (
        id bigint,
        name text,
        age int,
        PRIMARY KEY ((id), name)
    );
    
  • Per aggiungere una nuova colonna alla tabella, esegui il comando ALTER TABLE:

    ALTER TABLE keyspace.table ADD email text;
    
  • Per eliminare una tabella, esegui il comando DROP TABLE:

    DROP TABLE keyspace.table;
    

Per ulteriori informazioni, consulta Supporto DDL per la creazione di schemi (metodo consigliato).

Supporto DML

L'adattatore proxy da Cassandra a Bigtable supporta le operazioni DML (Data Manipulation Language) come INSERT, DELETE, UPDATE e SELECT.

Per eseguire le query DML non elaborate, tutti i valori tranne i valori numerici devono avere virgolette singole, come mostrato negli esempi seguenti:

  • SELECT * FROM keyspace.table WHERE name='john doe';
    
  • INSERT INTO keyspace.table (id, name) VALUES (1, 'john doe');
    

Eseguire la migrazione senza tempi di inattività

Puoi utilizzare l'adattatore proxy da Cassandra a Bigtable con lo strumento proxy di migrazione senza tempi di inattività (ZDM) open source e lo strumento per la migrazione dei dati Cassandra per eseguire la migrazione dei dati con tempi di inattività minimi.

Il seguente diagramma mostra i passaggi per la migrazione da Cassandra a Bigtable utilizzando l'adattatore proxy:

Il processo di migrazione da Cassandra a Bigtable.
Figura 1. La procedura di migrazione da Cassandra a Bigtable (fai clic per ingrandire).

Per eseguire la migrazione da Cassandra a Bigtable:

  1. Collega l'applicazione Cassandra allo strumento proxy ZDM.
  2. Attiva le scritture doppie in Cassandra e Bigtable.
  3. Sposta i dati in blocco utilizzando lo strumento di migrazione dei dati Cassandra.
  4. Convalida la migrazione. Una volta convalidata, puoi terminare la connessione a Cassandra e connetterti direttamente a Bigtable.

Quando utilizzi l'adattatore proxy con lo strumento proxy ZDM, sono supportate le seguenti funzionalità di migrazione:

  • Scritture doppie: mantieni la disponibilità dei dati durante la migrazione
  • Letture asincrone: scalare e testare il carico dell'istanza Bigtable
  • Verifica e generazione di report automatici dei dati: garantisci l'integrità dei dati durante la procedura
  • Mappatura dei dati: mappa i campi e i tipi di dati in base agli standard di produzione

Per esercitarti nella migrazione da Cassandra a Bigtable, consulta il codelab Migrazione da Cassandra a Bigtable con un proxy a doppia scrittura.

Client da Cassandra a Bigtable per Java

Puoi eseguire l'integrazione direttamente con Bigtable e sostituire i driver Cassandra. La libreria client da Cassandra a Bigtable per Java ti consente di integrare le applicazioni Java basate su Cassandra con Bigtable utilizzando CQL.

Per istruzioni sulla creazione della libreria e sull'inclusione della dipendenza nel codice dell'applicazione, consulta Client da Cassandra a Bigtable per Java.

L'esempio seguente mostra come configurare l'applicazione con il client da Cassandra a Bigtable per Java:

import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.cql.BoundStatement;
import com.datastax.oss.driver.api.core.cql.PreparedStatement;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;
import com.google.bigtable.cassandra.BigtableCqlConfiguration;
import com.google.bigtable.cassandra.BigtableCqlSessionFactory;

/**
 * Example using Bigtable CQLSession
 */
public class ExampleWithBigtableCqlSession {

  public static void main(String[] args) {

    // Construct BigtableCqlConfiguration
    BigtableCqlConfiguration bigtableCqlConfiguration = BigtableCqlConfiguration.builder()
        .setProjectId("example-project-id")
        .setInstanceId("example-instance-id")
        .setDefaultColumnFamily("example-column-family")
        .setBigtableChannelPoolSize(4)
        .build();

    // Create CqlSession with BigtableCqlConfiguration
    BigtableCqlSessionFactory bigtableCqlSessionFactory = new BigtableCqlSessionFactory(bigtableCqlConfiguration);

    // Create CqlSession
    try (CqlSession session = bigtableCqlSessionFactory.newSession()) {

      // Create a table
      String createTableQuery = "CREATE TABLE <KEYSPACE>.<TABLE_NAME> (<COLUMN> <TYPE> PRIMARY KEY);";
      session.execute(createTableQuery);

      // Prepare an insert statement
      PreparedStatement preparedInsert = session.prepare(
          "INSERT INTO <KEYSPACE>.<TABLE_NAME> (<COLUMN>) VALUES (?)" // replace with your keyspace, table and columns
      );

      // Insert
      BoundStatement boundInsert = preparedInsert
          .bind()
          .setString("<COLUMN>", "<VALUE>");
      session.execute(boundInsert);

      // Query for all entries
      ResultSet resultSet = session.execute("SELECT <COLUMN> FROM <KEYSPACE>.<TABLE_NAME>;");
      // Print results
      for (Row row : resultSet) {
        System.out.println(row);
      }

    }

  }

}

Descrizione delle prestazioni

Bigtable è progettato per un throughput elevato, una bassa latenza e una scalabilità elevata. Può gestire milioni di richieste al secondo su petabyte di dati. Quando esegui la migrazione da Cassandra utilizzando il client da Cassandra a Bigtable per Java o l'adattatore proxy da Cassandra a Bigtable, tieni presente le seguenti implicazioni sulle prestazioni:

Overhead del client e del proxy

Entrambi gli approcci di migrazione introducono un overhead delle prestazioni minimo. Fungono da livello di traduzione tra il linguaggio di query Cassandra (CQL) e l'API Bigtable Data, ottimizzata per l'efficienza.

Prestazioni con i tipi di raccolta Cassandra

Se il modello dei dati Cassandra utilizza tipi di raccolta come mappe, set o elenchi per implementare schemi dinamici, Bigtable può gestire questi pattern in modo efficace. Sia l'adattatore proxy sia il client per Java mappano queste operazioni di raccolta al modello dei dati sottostante di Bigtable, che è adatto per set di dati sparsi e ampi.

Le operazioni a livello di elemento all'interno di queste raccolte sono molto efficienti. Sono incluse le seguenti azioni:

  • Per leggere o scrivere un singolo valore in una mappa.
  • Per aggiungere o rimuovere un elemento da un set.
  • Per aggiungere o anteporre un elemento a un elenco.

Bigtable ottimizza questi tipi di operazioni puntuali sui singoli elementi della raccolta e le loro prestazioni sono identiche a quelle delle operazioni sulle colonne scalari standard.

Eseguire il benchmark del workload

Le prestazioni di Bigtable possono variare a seconda del workload, della progettazione dello schema, dei pattern di accesso ai dati e della configurazione del cluster. Per ottenere metriche delle prestazioni accurate per il tuo caso d'uso e assicurarti che Bigtable soddisfi i tuoi requisiti specifici, ti consigliamo di eseguire il benchmark dei workload Cassandra rispetto a Bigtable utilizzando uno degli approcci di migrazione.

Per ulteriori informazioni sulle best practice relative alle prestazioni di Bigtable, consulta Informazioni sulle prestazioni.

Strumenti open source Cassandra aggiuntivi

Grazie alla compatibilità con il protocollo dell'adattatore proxy da Cassandra a Bigtable con CQL, puoi utilizzare strumenti aggiuntivi nell'ecosistema open source Cassandra. Questi strumenti includono:

  • Cqlsh: La shell CQL ti consente di connetterti direttamente a Bigtable tramite l'adattatore proxy. Puoi utilizzarla per il debug e le ricerche rapide di dati utilizzando CQL.
  • Cassandra Data Migrator (CDM): Questo strumento basato su Spark è adatto per la migrazione di grandi volumi (fino a miliardi di righe) di dati storici. Lo strumento fornisce funzionalità di convalida, generazione di report sulle differenze e riproduzione ed è completamente compatibile con l'adattatore proxy.

Passaggi successivi