Migre do Apache Cassandra para o Bigtable

Este documento explica o processo de migração de dados do Apache Cassandra para o Bigtable com a mínima interrupção. Descreve como usar ferramentas de código aberto, como o adaptador de proxy do Cassandra para o Bigtable ou o cliente do Cassandra para Java, para fazer a migração. Antes de começar, certifique-se de que conhece o Bigtable para utilizadores do Cassandra.

Escolha uma abordagem de migração

Pode migrar do Apache Cassandra para o Bigtable através de uma das seguintes abordagens:

  • O adaptador de proxy do Cassandra para o Bigtable permite-lhe ligar aplicações baseadas no Cassandra ao Bigtable sem alterar os controladores do Cassandra. Esta abordagem é ideal para aplicações que requerem alterações mínimas ao código.
  • O cliente Cassandra para Bigtable para Java permite-lhe integrar-se diretamente com o Bigtable e substituir os controladores do Cassandra. Esta abordagem é ideal para aplicações que requerem elevado desempenho e flexibilidade.

Adaptador de proxy do Cassandra para o Bigtable

O adaptador de proxy do Cassandra para o Bigtable permite-lhe ligar aplicações baseadas no Cassandra ao Bigtable. O adaptador de proxy funciona como uma interface Cassandra compatível com fios e permite que a sua aplicação interaja com o Bigtable através da linguagem de consulta Cassandra (CQL). A utilização do adaptador de proxy não requer que altere os controladores do Cassandra e os ajustes de configuração são mínimos.

Para configurar o adaptador de proxy, consulte o artigo Adaptador de proxy do Cassandra para o Bigtable.

Para saber que versões do Cassandra são compatíveis com o adaptador de proxy, consulte o artigo Versões do Cassandra compatíveis.

Limitações

O adaptador de proxy do Cassandra para o Bigtable oferece suporte limitado para determinados tipos de dados, funções, consultas e cláusulas. Para mais informações, consulte o artigo Proxy do Cassandra para o Bigtable: limitações.

Cassandra keyspace

Um keyspace do Cassandra armazena as suas tabelas e gere os recursos de forma semelhante a uma instância do Bigtable. O adaptador de proxy do Cassandra para o Bigtable processa a nomenclatura do keyspace de forma transparente, para que possa consultar através dos mesmos keyspaces. No entanto, tem de criar uma nova instância do Bigtable para conseguir o agrupamento lógico das suas tabelas. Também tem de configurar a replicação do Bigtable separadamente.

Compatibilidade com DDL

O adaptador de proxy do Cassandra para o Bigtable suporta operações de linguagem de definição de dados (LDD). As operações DDL permitem-lhe criar e gerir tabelas diretamente através de comandos CQL. Recomendamos esta abordagem para configurar o seu esquema, porque é semelhante ao SQL, mas não precisa de definir o esquema em ficheiros de configuração e, em seguida, executar scripts para criar tabelas.

Os exemplos seguintes mostram como o adaptador de proxy do Cassandra para o Bigtable suporta operações de LDD:

  • Para criar uma tabela do Cassandra com o CQL, execute o comando CREATE TABLE:

    CREATE TABLE keyspace.table (
        id bigint,
        name text,
        age int,
        PRIMARY KEY ((id), name)
    );
    
  • Para adicionar uma nova coluna à tabela, execute o comando ALTER TABLE:

    ALTER TABLE keyspace.table ADD email text;
    
  • Para eliminar uma tabela, execute o comando DROP TABLE:

    DROP TABLE keyspace.table;
    

Para mais informações, consulte o artigo Suporte de DDL para a criação de esquemas (método recomendado).

Compatibilidade com DML

O adaptador de proxy do Cassandra para o Bigtable suporta operações de linguagem de manipulação de dados (DML), como INSERT, DELETE, UPDATE e SELECT.

Para executar as consultas DML não processadas, todos os valores, exceto os numéricos, têm de ter aspas simples, conforme mostrado nos exemplos seguintes:

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

Alcance uma migração sem tempo de inatividade

Pode usar o adaptador de proxy do Cassandra para o Bigtable com a ferramenta de proxy de migração sem tempo de inatividade (ZDM) de código aberto e a ferramenta migrador de dados do Cassandra para migrar dados com um tempo de inatividade mínimo.

O diagrama seguinte mostra os passos para migrar do Cassandra para o Bigtable através do adaptador de proxy:

O processo de migração do Cassandra para o Bigtable.
Figura 1. O processo de migração do Cassandra para o Bigtable (clique para ampliar).

Para migrar o Cassandra para o Bigtable, siga estes passos:

  1. Associe a sua aplicação Cassandra à ferramenta de proxy do ZDM.
  2. Ative as escritas duplas no Cassandra e no Bigtable.
  3. Mova dados em massa com a ferramenta Cassandra data migrator.
  4. Valide a migração. Depois de validada, pode terminar a ligação ao Cassandra e ligar-se diretamente ao Bigtable.

Quando usar o adaptador de proxy com a ferramenta de proxy ZDM, são suportadas as seguintes capacidades de migração:

  • Escritas duplas: mantenha a disponibilidade dos dados durante a migração
  • Leituras assíncronas: dimensione e teste a resistência da sua instância do Bigtable
  • Validação e relatórios de dados automatizados: garantir a integridade dos dados ao longo do processo
  • Mapeamento de dados: mapeie os campos e os tipos de dados para cumprir as suas normas de produção

Para praticar a migração do Cassandra para o Bigtable, consulte o codelab Migração do Cassandra para o Bigtable com um proxy de gravação dupla.

Cliente Cassandra para Bigtable para Java

Pode integrar-se diretamente com o Bigtable e substituir os seus controladores do Cassandra. A biblioteca do cliente do Cassandra para Java permite-lhe integrar aplicações Java baseadas no Cassandra com o Bigtable através do CQL.

Para obter instruções sobre como criar a biblioteca e incluir a dependência no código da aplicação, consulte o artigo Cliente do Cassandra para o Bigtable para Java.

O exemplo seguinte mostra como configurar a sua aplicação com o cliente Cassandra para Bigtable para 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);
      }

    }

  }

}

Ferramentas de código aberto do Cassandra adicionais

Devido à compatibilidade de fios do adaptador de proxy do Cassandra para o Bigtable com CQL, pode usar ferramentas adicionais no ecossistema de código aberto do Cassandra. Estas ferramentas incluem o seguinte:

  • Cqlsh: A shell CQL permite-lhe ligar-se diretamente ao Bigtable através do adaptador de proxy. Pode usá-la para depuração e pesquisas rápidas de dados através do CQL.
  • Cassandra Data Migrator (CDM): Esta ferramenta baseada no Spark é adequada para migrar grandes volumes (até milhares de milhões de linhas) de dados do histórico. A ferramenta oferece validação, relatórios de diferenças e capacidades de repetição, e é totalmente compatível com o adaptador de proxy.

O que se segue?