Migra de Apache Cassandra a Bigtable

En este documento, se te guía por el proceso de migración de datos de Apache Cassandra a Bigtable con una interrupción mínima. Se describe cómo usar herramientas de código abierto, como el adaptador de proxy de Cassandra a Bigtable o el cliente de Cassandra a Bigtable para Java, para realizar la migración. Antes de comenzar, asegúrate de estar familiarizado con Bigtable para usuarios de Cassandra.

Elige un enfoque de migración

Puedes migrar de Apache Cassandra a Bigtable con uno de los siguientes enfoques:

  • El adaptador de proxy de Cassandra a Bigtable te permite conectar aplicaciones basadas en Cassandra a Bigtable sin cambiar los controladores de Cassandra. Este enfoque es ideal para aplicaciones que requieren cambios mínimos en el código.
  • El cliente de Cassandra a Bigtable para Java te permite realizar la integración directamente con Bigtable y reemplazar tus controladores de Cassandra. Este enfoque es ideal para aplicaciones que requieren alto rendimiento y flexibilidad.

Adaptador de proxy de Cassandra a Bigtable

El adaptador de proxy de Cassandra a Bigtable te permite conectar aplicaciones basadas en Cassandra a Bigtable. El adaptador de proxy funciona como una interfaz de Cassandra compatible con cables y permite que tu aplicación interactúe con Bigtable mediante CQL. El uso del adaptador de proxy no requiere que cambies los controladores de Cassandra, y los ajustes de configuración son mínimos.

Para configurar el adaptador de proxy, consulta Adaptador de proxy de Cassandra a Bigtable.

Para saber qué versiones de Cassandra admiten el adaptador de proxy, consulta Versiones compatibles de Cassandra.

Limitaciones

El adaptador de proxy de Cassandra a Bigtable proporciona compatibilidad limitada para ciertos tipos de datos, funciones, consultas y cláusulas.

Para obtener más información, consulta Proxy de Cassandra a Bigtable: Limitaciones.

Espacio de claves de Cassandra

Un espacio de claves de Cassandra almacena tus tablas y administra recursos de manera similar a una instancia de Bigtable. El adaptador de proxy de Cassandra a Bigtable controla el nombramiento del espacio de claves de forma transparente, de modo que puedas realizar consultas con los mismos espacios de claves. Sin embargo, debes crear una instancia nueva de Bigtable para lograr el agrupamiento lógico de tus tablas. También debes configurar la replicación de Bigtable por separado.

Compatibilidad con DDL

El adaptador de proxy de Cassandra a Bigtable admite operaciones del lenguaje de definición de datos (DDL). Las operaciones de DDL te permiten crear y administrar tablas directamente a través de comandos de CQL. Recomendamos este enfoque para configurar tu esquema porque es similar a SQL, pero no necesitas definir tu esquema en archivos de configuración y, luego, ejecutar secuencias de comandos para crear tablas.

En los siguientes ejemplos, se muestra cómo el adaptador de proxy de Cassandra a Bigtable admite operaciones de DDL:

  • Para crear una tabla de Cassandra con CQL, ejecuta el comando CREATE TABLE:

    CREATE TABLE keyspace.table (
        id bigint,
        name text,
        age int,
        PRIMARY KEY ((id), name)
    );
    
  • Para agregar una columna nueva a la tabla, ejecuta el comando ALTER TABLE:

    ALTER TABLE keyspace.table ADD email text;
    
  • Para borrar una tabla, ejecuta el comando DROP TABLE:

    DROP TABLE keyspace.table;
    

Para obtener más información, consulta Compatibilidad con DDL para la creación de esquemas (método recomendado).

Compatibilidad con DML

El adaptador de proxy de Cassandra a Bigtable admite operaciones del lenguaje de manipulación de datos (DML), como INSERT, DELETE, UPDATE y SELECT.

Para ejecutar las consultas de DML sin procesar, todos los valores, excepto los numéricos, deben tener comillas simples, como se muestra en los siguientes ejemplos:

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

Logra una migración sin tiempo de inactividad

Puedes usar el adaptador de proxy de Cassandra a Bigtable con la herramienta de proxy de migración sin tiempo de inactividad (ZDM) de código abierto y la herramienta de para migrar datos con un tiempo de inactividad mínimo.

En el siguiente diagrama, se muestran los pasos para migrar de Cassandra a Bigtable con el adaptador de proxy:

Proceso de migración de Cassandra a Bigtable
Figura 1. El proceso de migración de Cassandra a Bigtable (haz clic para ampliar).

Para migrar de Cassandra a Bigtable, sigue estos pasos:

  1. Conecta tu aplicación de Cassandra a la herramienta de proxy de ZDM.
  2. Habilita las escrituras dobles en Cassandra y Bigtable.
  3. Mueve datos de forma masiva con la herramienta de migración de datos de Cassandra.
  4. Valida tu migración. Una vez validada, puedes finalizar la conexión a Cassandra y conectarte directamente a Bigtable.

Cuando se usa el adaptador de proxy con la herramienta de proxy de ZDM, se admiten las siguientes capacidades de migración:

  • Escrituras dobles: Mantén la disponibilidad de los datos durante la migración.
  • Lecturas asíncronas: Escala y prueba de esfuerzo tu instancia de Bigtable.
  • Verificación y generación de informes de datos automatizadas: Garantiza la integridad de los datos durante todo el proceso.
  • Asignación de datos: Asigna campos y tipos de datos para cumplir con tus estándares de producción.

Para practicar la migración de Cassandra a Bigtable, consulta el codelab Migración de Cassandra a Bigtable con un proxy de escritura doble.

Cliente de Cassandra a Bigtable para Java

Puedes realizar la integración directamente con Bigtable y reemplazar tus controladores de Cassandra. La biblioteca cliente de Cassandra a Bigtable para Java te permite integrar aplicaciones Java basadas en Cassandra con Bigtable mediante CQL.

Para obtener instrucciones sobre cómo compilar la biblioteca y cómo incluir la dependencia en el código de la aplicación, consulta Cliente de Cassandra a Bigtable para Java.

En el siguiente ejemplo, se muestra cómo configurar tu aplicación con el cliente de Cassandra a 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);
      }

    }

  }

}

Comprender el rendimiento

Bigtable está diseñado para ofrecer alta capacidad de procesamiento, baja latencia y escalabilidad masiva. Puede controlar millones de solicitudes por segundo en petabytes de datos. Cuando migras desde Cassandra con el cliente de Cassandra a Bigtable para Java o el adaptador de proxy de Cassandra a Bigtable, debes comprender las siguientes implicaciones de rendimiento:

Sobrecarga del cliente y del proxy

Ambos enfoques de migración introducen una sobrecarga mínima de rendimiento. Actúan como una capa de traducción entre el lenguaje de consulta de Cassandra (CQL) y la API de datos de Bigtable, que está optimizada para la eficiencia.

Rendimiento con tipos de colección de Cassandra

Si tu modelo de datos de Cassandra usa tipos de colección, como mapas, conjuntos o listas para implementar esquemas dinámicos, Bigtable puede controlar estos patrones de manera eficaz. Tanto el adaptador de proxy como el cliente para Java asignan estas operaciones de colección al modelo de datos subyacente de Bigtable, que es adecuado para conjuntos de datos dispersos y amplios.

Las operaciones a nivel de elemento dentro de estas colecciones son muy eficientes. Esto incluye las siguientes acciones:

  • Leer o escribir un solo valor en un mapa
  • Agregar o quitar un elemento de un conjunto
  • Agregar un elemento al principio o al final de una lista

Bigtable optimiza estos tipos de operaciones de punto en elementos de colección individuales, y su rendimiento es idéntico a las operaciones en columnas escalares estándar.

Realiza pruebas comparativas de tu carga de trabajo

El rendimiento de Bigtable puede variar según tu carga de trabajo, el diseño del esquema, los patrones de acceso a los datos y la configuración del clúster. Para obtener métricas de rendimiento precisas para tu caso de uso y asegurarte de que Bigtable cumpla con tus requisitos específicos, te recomendamos que realices pruebas comparativas de tus cargas de trabajo de Cassandra en Bigtable con uno de los enfoques de migración.

Para obtener más información sobre las prácticas recomendadas de rendimiento de Bigtable, consulta Información sobre el rendimiento de Bigtable.

Herramientas adicionales de código abierto de Cassandra

Debido a la compatibilidad de cables del adaptador de proxy de Cassandra a Bigtable con CQL, puedes usar herramientas adicionales en el ecosistema de código abierto de Cassandra. Estas herramientas incluyen las siguientes:

  • Cqlsh: La shell de CQL te permite conectarte directamente a Bigtable a través del adaptador de proxy. Puedes usarla para depurar y realizar búsquedas rápidas de datos con CQL.
  • Cassandra Data Migrator (CDM): Esta herramienta basada en Spark es adecuada para migrar grandes volúmenes (hasta miles de millones de filas) de datos históricos. La herramienta proporciona capacidades de validación, informes de diferencias y reproducción, y es totalmente compatible con el adaptador de proxy.

¿Qué sigue?