Eventos

Migración de cubos a colecciones y ámbitos mediante eventos: Parte 2

Migración de cubos a colecciones y ámbitos mediante eventos: Parte 2

Una vez más (como ya hice en la primera parte) quiero destacar un excelente blog escrito por Shivani Gupta, Cómo migrar a ámbitos y colecciones en Couchbase 7.0que cubre en gran detalle otros métodos para migrar documentos basados en buckets a Scopes y Collections en Couchbase. Te animo a leer también sobre los múltiples métodos no-Eventing que Shivani toca.

Tanto si eres nuevo en Couchbase o veterinario experimentado, es probable que haya oído hablar de los Scopes y Collections. Si estás listo para probarlos, este artículo te ayuda a hacerlo realidad.

Los ámbitos y las colecciones son una nueva función introducida en Servidor Couchbase 7.0 que te permite organizar lógicamente los datos dentro de Couchbase. Para saber más, lea esta introducción a Ámbitos y colecciones.

Deberías aprovechar Scopes y Collections si quieres mapear tu RDBMS heredado a una base de datos de documentos o si estás intentando consolidar cientos de microservicios y/o tenants en un único Couchbase (lo que se traduce en un coste total de propiedad mucho menor).


Uso de eventos para la migración de ámbitos y colecciones

En el artículo anterior (Parte 1), discutí la mecánica de un método de alto rendimiento para migrar desde una versión anterior de Couchbase a Scopes y Collections en Couchbase 7.0 basado en Eventos.

Sólo se necesita el Servicio de Datos (o KV) y el Servicio de Eventos para migrar de buckets a colecciones. En un cluster de Couchbase grande y bien ajustado, puedes migrar más de 1 millón de documentos por segundo. Sí, sin N1QL, y sin necesidad de índices.

En este artículo de seguimiento, proporcionaré una metodología sencilla totalmente automatizada para realizar grandes migraciones con docenas (o incluso cientos) de tipos de datos a través de un simple Perl guión.

Recapitulación de la función final de Eventing: ConvertBucketToCollections

En la Parte 1 teníamos los siguientes ajustes para la Función de Eventos. Nota para cada tipo único, "cerveza" y "cervecería"tuvimos que añadir un alias de Bucket binding a la colección destino en modo "lectura+escritura". Además tuvimos que crear las colecciones de destino, en este caso "datos.masivos.cerveza" y "datos.masivos.cervecería

En la Parte 1 teníamos el siguiente código JavaScript en nuestra Función Eventing. Nota a cada tipo único, "cerveza" y "cervecería"Tuvimos que replicar un bloque de código JavaScript y actualizar la referencia del alias de enlace correspondiente o la colección de destino en el servicio de datos de Couchbase.

La técnica de la Parte 1 funciona, pero ¿y si tengo muchos tipos?

Usando Eventing se pueden hacer migraciones como se muestra en la Parte 1, pero parece un poco de trabajo para configurar las cosas.

Si tiene 80 tipos diferentes, utilizar esta técnica (tanto para crear la función de eventos como para crear los espacios clave necesarios) supondría una cantidad increíble de esfuerzo propenso a errores. Si tuviera 80 tipos en un cubo para migrar y dividir, no me gustaría hacer todo el trabajo descrito anteriormente a mano para cada tipo.

Automatizar mediante CustomConvertBucketToCollections.pl

Para resolver este problema, escribí un pequeño Perl guión, CustomConvertBucketToCollections.plque genera dos archivos:

  • CustomConvertBucketToCollections.json, es una función completa de Eventing que realiza todo el trabajo descrito en este post.
  • MakeCustomKeyspaces.sh, es un archivo shell para construir todos los espacios de claves necesarios e importar la función Eventing generada.

Puede encontrar este script en GitHub en https://github.com/jon-strabala/cb-buckets-to-collections.

Nota, el script CustomConvertBucketToCollections.pl requiere que ambos Perl (lenguaje práctico de extracción e informe) y también jq (un procesador JSON de línea de comandos ligero y flexible).

Ejemplo: Migración de 250 millones de registros con 80 tipos diferentes

Tenemos 250 millones de documentos en keyspace "input._default._default" con 80 tipos diferentes y desea reorganizar los datos por tipo en colecciones bajo el alcance "salida.reorgpor el tipo de propiedad. Tenemos un clúster de AWS de tres instancias r5.2xlarge, todas ellas ejecutando el servicio de datos y el servicio nocturno.

El cubo de entrada "entrada" en este ejemplo está configurado con una cuota de memoria de 16000 MB.

A continuación utilizo el CustomConvertBucketToCollections.pl Perl de GitHub en https://github.com/jon-strabala/cb-buckets-to-collections. Como puedes ver puede ser trivial hacer migraciones usando un script automatizado.

Paso 1: Configuración única

Paso 2: Crear documentos de prueba 250M

Ejecutar el interactivo big_data_test_load.sh mando:

Parámetros de configuración de entrada:

Ahora debería haber 250 millones de documentos de prueba en el espacio de claves. input._default._default.

Paso 3: Generar la función Eventing y el script Keyspace

Ejecutar el interactivo CustomConvertBucketToCollections.pl mando:

Parámetros de configuración de entrada:

En el interactivo Perl guión anterior, se modificaron cuatro de las opciones predeterminadas anteriores.

Paso 3: Actualice MakeCustomKeyspaces.sh (según sea necesario)

Puedes simplemente "vi MakeCustomKeyspaces.sh"y modifique los valores necesarios. Opto por utilizar el método Unix sed para aumentar el tamaño de la RAM del cubo "salida" de 100 a 1600

Paso 4: Ejecute el script MakeCustomKeyspaces.sh

a continuación:

Paso 5: Actualizar la interfaz de usuario de Couchbase en la página de eventos

Para encontrar la nueva función de eventos (o función actualizada) en la interfaz de usuario de Couchbase, vaya a la página de eventos y actualice su navegador web.

Paso 6: Implantar CustomConvertBucketToCollections

En la interfaz de usuario de Couchbase, vaya a la página de eventos y despliegue la función de eventos "CustomConvertBucketToCollections“.

En unos 45 minutos la reorganización debería estar completamente hecha.

En efecto, todos los documentos están reorganizados por tipo como colecciones. En este modesto clúster, se procesaron a 93K docs/seg.

Reflexiones finales

Si le ha resultado útil esta serie de artículos y está interesado en seguir aprendiendo sobre el concurso completo, haga clic aquí. el servicio de eventos Couchbase.

Espero que encuentre el CustomConvertBucketToCollections.pl Perl de GitHub en https://github.com/jon-strabala/cb-buckets-to-collections una herramienta valiosa en su arsenal cuando necesite migrar un cubo con muchos tipos a un paradigma de colecciones.

Siéntase libre de mejorar el script CustomConvertBucketToCollections.pl para utilizar un archivo de configuración intermedio al Eventing Perl donde se pueden ajustar todos los parámetros. A continuación, utilice el archivo de configuración intermedio para crear la función de eventos y el script de shell de configuración.

Ejemplo de archivo de configuración intermedio:

Recursos

Referencias

Me encantaría que me contaras qué te han parecido las capacidades de Couchbase y el servicio Eventing, y cómo benefician a tu negocio de cara al futuro. Por favor, comparte tu opinión a través de los comentarios de abajo o en los foros de Couchbase.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Jon Strabala, Director Principal de Producto, Couchbase

Jon Strabala es Gerente Principal de Producto, responsable del Servicio de Eventos de Couchbase. Antes de unirse a Couchbase, pasó más de 20 años construyendo productos de software a través de diversos dominios, comenzando con EDA en el sector aeroespacial y luego la transición a la construcción de software empresarial centrado en lo que hoy se conoce como "IoT" y "datos a escala". Jon trabajó para varias pequeñas consultoras de software hasta que finalmente fundó y dirigió su propia empresa. Tiene una amplia experiencia en NoSQL/NewSQL, tanto en la contribución como en la comercialización de nuevas tecnologías como los mapas de bits comprimidos y los almacenes de columnas. Jon es licenciado en ingeniería eléctrica y tiene un máster en ingeniería informática, ambos por la Universidad del Sur de California, y un MBA por la Universidad de California en Irvine.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.