Migrar do Apache Cassandra para o Bigtable

Este documento orienta você no processo de migração de dados do Apache Cassandra para o Bigtable com o mínimo de interrupção. Ela descreve como usar ferramentas de código aberto, como o adaptador de proxy do Cassandra para Bigtable ou o cliente do Cassandra para Bigtable em Java, para realizar a migração. Antes de começar, confira o artigo Bigtable para usuários do Cassandra.

Escolher uma abordagem de migração

É possível migrar do Apache Cassandra para o Bigtable usando uma das seguintes abordagens:

Adaptador de proxy do Cassandra para o Bigtable

O adaptador de proxy do Cassandra para o Bigtable permite conectar aplicativos baseados no Cassandra ao Bigtable. O adaptador de proxy funciona como uma interface do Cassandra compatível com fio e permite que seu aplicativo interaja com o Bigtable usando a linguagem de consulta do Cassandra (CQL). O uso do adaptador de proxy não exige que você mude os drivers do Cassandra, e os ajustes de configuração são mínimos.

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

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

Limitações

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

Keyspace do Cassandra

Um keyspace do Cassandra armazena suas tabelas e gerencia recursos de maneira semelhante a uma instância do Bigtable. O adaptador de proxy do Cassandra para Bigtable processa a nomenclatura do keyspace de forma transparente para que você possa consultar usando os mesmos keyspaces. No entanto, é necessário criar uma nova instância do Bigtable para agrupar logicamente suas tabelas. Também é necessário configurar a replicação do Bigtable separadamente.

Suporte a DDL

O adaptador de proxy do Cassandra para Bigtable é compatível com operações de linguagem de definição de dados (DDL). Com as operações de DDL, é possível criar e gerenciar tabelas diretamente com comandos CQL. Recomendamos essa abordagem para configurar seu esquema porque ela é semelhante ao SQL, mas não é necessário definir o esquema em arquivos de configuração e executar scripts para criar tabelas.

Os exemplos a seguir mostram como o adaptador de proxy do Cassandra para Bigtable é compatível com operações de DDL:

  • Para criar uma tabela do Cassandra usando 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 excluir uma tabela, execute o comando DROP TABLE:

    DROP TABLE keyspace.table;
    

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

Suporte a DML

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

Para executar as consultas DML brutas, todos os valores, exceto os numéricos, precisam ter aspas simples, conforme mostrado nos exemplos a seguir:

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

Realizar migração sem inatividade

Use o adaptador de proxy do Cassandra para Bigtable com a ferramenta de proxy de migração sem inatividade (ZDM, na sigla em inglês) de código aberto e a ferramenta de migração de dados do Cassandra para migrar dados com tempo de inatividade mínimo.

O diagrama a seguir mostra as etapas para migrar do Cassandra para o Bigtable usando o 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 do Cassandra para o Bigtable, siga estas etapas:

  1. Conecte seu aplicativo Cassandra à ferramenta de proxy do ZDM.
  2. Ative gravações duplas no Cassandra e no Bigtable.
  3. Mova dados em massa usando a ferramenta Cassandra Data Migrator.
  4. Valide sua migração. Depois da validação, encerre a conexão com o Cassandra e conecte-se diretamente ao Bigtable.

Ao usar o adaptador de proxy com a ferramenta de proxy ZDM, as seguintes funcionalidades de migração são compatíveis:

  • Gravações duplas: mantenha a disponibilidade de dados durante a migração
  • Leituras assíncronas: escalone e teste a capacidade da sua instância do Bigtable.
  • Verificação e geração de relatórios de dados automatizadas: garante a integridade dos dados durante todo o processo.
  • Mapeamento de dados: mapeie campos e tipos de dados para atender aos seus padrões 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 do Cassandra para Bigtable em Java

É possível fazer a integração diretamente com o Bigtable e substituir os drivers do Cassandra. A biblioteca de cliente do Cassandra para Bigtable em Java permite integrar aplicativos Java baseados no Cassandra ao Bigtable usando CQL.

Para instruções sobre como criar a biblioteca e incluir a dependência no código do aplicativo, consulte Cliente do Cassandra para Bigtable em Java.

O exemplo a seguir mostra como configurar seu aplicativo com o cliente Cassandra para Bigtable em 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);
      }

    }

  }

}

Outras ferramentas de código aberto do Cassandra

Devido à compatibilidade de fio do adaptador de proxy do Cassandra para Bigtable com CQL, é possível usar outras ferramentas no ecossistema de código aberto do Cassandra. Essas ferramentas incluem:

  • Cqlsh: O shell CQL permite que você se conecte diretamente ao Bigtable pelo adaptador de proxy. É possível usar esse recurso para depuração e pesquisas rápidas de dados usando CQL.
  • Migrador de dados do Cassandra (CDM): essa ferramenta baseada no Spark é adequada para migrar grandes volumes (até bilhões de linhas) de dados históricos. A ferramenta oferece validação, relatórios de diferenças e recursos de repetição, além de ser totalmente compatível com o adaptador de proxy.

A seguir