{"id":12476,"date":"2021-12-20T08:00:41","date_gmt":"2021-12-20T16:00:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12476"},"modified":"2025-06-13T22:40:20","modified_gmt":"2025-06-14T05:40:20","slug":"migrating-buckets-to-collections-scopes-via-eventing-part-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/","title":{"rendered":"Migraci\u00f3n de Cubos a Colecciones y \u00c1mbitos mediante Eventos: Parte 1"},"content":{"rendered":"<h2>Migraci\u00f3n de Cubos a Colecciones y \u00c1mbitos mediante Eventos: Parte 1<\/h2>\n<p>En primer lugar quiero destacar un excelente blog escrito por Shivani Gupta, <a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-migrate-to-scopes-and-collections-in-couchbase-7-0\/\" target=\"_blank\" rel=\"noopener\">C\u00f3mo migrar a \u00e1mbitos y colecciones en Couchbase 7.0<\/a>que cubre en gran detalle otros m\u00e9todos para migrar documentos basados en buckets a Scopes y Collections en Couchbase.  Te animo a leer tambi\u00e9n sobre los m\u00faltiples m\u00e9todos no-Eventing que Shivani toca.<\/p>\n<blockquote><p><strong>Tanto si eres nuevo en Couchbase o<\/strong> veterinario experimentado, es probable que haya o\u00eddo hablar de los Scopes y Collections. Si est\u00e1s listo para probarlos, este art\u00edculo te ayuda a hacerlo realidad.<\/p>\n<p>Los \u00e1mbitos y las colecciones son una nueva funci\u00f3n introducida en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-server-7-0-release\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Servidor Couchbase 7.0<\/a>\u00a0que te permite organizar l\u00f3gicamente los datos dentro de Couchbase. Para saber m\u00e1s,\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog\" target=\"_blank\" rel=\"noopener\">lea esta introducci\u00f3n a \u00c1mbitos y colecciones<\/a>.<\/p>\n<p>Deber\u00edas aprovechar Scopes y Collections si quieres mapear tu RDBMS heredado a una base de datos de documentos o si est\u00e1s intentando consolidar cientos de microservicios y\/o tenants en un \u00fanico\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a>\u00a0(lo que se traduce en un coste total de propiedad mucho menor).<\/p><\/blockquote>\n<hr \/>\n<h2>Uso de eventos para la migraci\u00f3n de \u00e1mbitos y colecciones<\/h2>\n<p>En este art\u00edculo, voy a discutir la mec\u00e1nica de otro m\u00e9todo de alto rendimiento para migrar de una versi\u00f3n anterior de Couchbase a Scopes y Collections en Couchbase 7.0.<\/p>\n<p>S\u00f3lo necesitas el Servicio de Datos (o KV) y Eventing para migrar de buckets a colecciones. En un gran cluster de Couchbase bien afinado, puedes migrar m\u00e1s de 1 mill\u00f3n de documentos por segundo. S\u00ed, sin N1QL, y sin necesidad de \u00edndices.<\/p>\n<p>En el siguiente post (Parte 2), proporcionar\u00e9 una metodolog\u00eda sencilla totalmente automatizada para realizar grandes migraciones con docenas de <span style=\"font-weight: 400\">\u00a0(o incluso cientos) <\/span>de tipos de datos mediante un simple <em>Perl<\/em> gui\u00f3n.<\/p>\n<h2 id=\"prereq\">Requisitos previos: Aprendizaje del concurso completo<\/h2>\n<p><span style=\"font-weight: 400\">En este art\u00edculo, vamos a utilizar la \u00faltima versi\u00f3n de Couchbase (7.0.2), pero las versiones anteriores 7.0 funcionan bien tambi\u00e9n.<\/span><\/p>\n<p>Si no est\u00e1s familiarizado con Couchbase o el servicio de Eventing, por favor revisa los siguientes recursos, incluyendo al menos un ejemplo de Eventing:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/current\/getting-started\/start-here.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Configurar un servidor Couchbase 7.0 en funcionamiento<\/a> siguiendo las instrucciones de \"\u00a1Empieza aqu\u00ed!\".<\/li>\n<li>Comprender c\u00f3mo desplegar una funci\u00f3n b\u00e1sica de Eventing como <a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-example-data-enrichment.html?ref=blog\" target=\"_blank\" rel=\"noopener\">seg\u00fan las instrucciones del ejemplo de enriquecimiento de datos<\/a>. Observe el \"Caso 2\", en el que s\u00f3lo utilizaremos el cubo \"fuente\":\n<ol>\n<li><span style=\"font-weight: 400\">Dos cubos \"<\/span><b>a granel<\/b><span style=\"font-weight: 400\">\" y \"<\/span><b>rr100<\/b><span style=\"font-weight: 400\">\"de tama\u00f1o 100 MB.<\/span><\/li>\n<li><span style=\"font-weight: 400\">Un espacio clave de origen \"<\/span><b>fuente.de.datos.masivos<\/b><span style=\"font-weight: 400\">\".<\/span><\/li>\n<li><span style=\"font-weight: 400\">Un espacio de teclado de eventos \"<\/span><b>rr100.eventing.metadata<\/b><span style=\"font-weight: 400\">\".<\/span><\/li>\n<\/ol>\n<\/li>\n<li>Consulte la documentaci\u00f3n de <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-buckets\/create-bucket.html?ref=blog\" target=\"_blank\" rel=\"noopener\">pasos detallados para crear un cubo<\/a>.<\/li>\n<\/ul>\n<h3>Funci\u00f3n Eventing: ConvertBucketToCollections<\/h3>\n<p><span style=\"font-weight: 400\">Eventing le permite escribir l\u00f3gica de negocio pura. El servicio Eventing se encarga de toda la infraestructura necesaria para gestionar y escalar su funci\u00f3n (horizontal y verticalmente) a trav\u00e9s de m\u00faltiples nodos de una manera performante y fiable.<\/span><\/p>\n<p>Todas las funciones de Eventing tienen dos puntos de entrada - <code>OnUpdate(doc, meta)<\/code> y <code>OnDelete(meta, opciones)<\/code>. Tenga en cuenta que en este ejemplo no nos preocupa este \u00faltimo punto de entrada.<\/p>\n<p>Cuando un documento cambia o muta (inserci\u00f3n, inserci\u00f3n ascendente, sustituci\u00f3n, etc.), se pasa una copia del documento y algunos metadatos sobre el documento a un peque\u00f1o punto de entrada de JavaScript <code>OnUpdate(doc, meta)<\/code>.<\/p>\n<p><span style=\"font-weight: 400\">Las Funciones de Eventos pueden desplegarse con dos L\u00edmites de Despliegue diferentes, \"<strong>A partir de ahora<\/strong>\" o \"<strong>Todo<\/strong>\". Este \u00faltimo permite acceder a cada documento actual en un Bucket en Couchbase 6.6 o un Keyspace (Bucket\/Scope\/Collection) en Couchbase 7.0<\/span>.<\/p>\n<p>El scriptlet <a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-handler-ConvertBucketToCollections.html\" target=\"_blank\" rel=\"noopener\"><em>ConvertBucketToCollections<\/em><\/a> <span style=\"font-weight: 400\">de la documentaci\u00f3n principal de Eventing muestra c\u00f3mo utilizar Eventing para llevar datos de un bucket de origen a un bucket de destino y dividir los datos en colecciones<\/span>.<\/p>\n<h3>Paso 1: Cargar datos de muestra<\/h3>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Ajustes\/Cubos de muestra<\/strong>\". Consulte <code>muestra de cerveza<\/code> <span style=\"font-weight: 400\">y haga clic en el bot\u00f3n \"<strong>Cargar datos de muestra<\/strong>&#8220;.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12168\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P0a_LOAD_SAMPLE.jpg\" alt=\"\" width=\"850\" height=\"349\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P0a_LOAD_SAMPLE.jpg 850w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P0a_LOAD_SAMPLE-300x123.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P0a_LOAD_SAMPLE-768x315.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P0a_LOAD_SAMPLE-20x8.jpg 20w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/p>\n<h3>Paso 2: Crear los espacios de claves necesarios<\/h3>\n<p>Este ejemplo requiere tres cubos: \"<strong>muestra de cerveza\"<\/strong> (es decir, su almac\u00e9n de documentos a migrar), \"<b>rr100\u2033 <\/b>(es decir, un bloc de notas para Eventing que puede compartirse con otras funciones de Eventing) y <strong>a granel<\/strong> (el bucket en el que se crear\u00e1n las colecciones migradas). La funci\u00f3n \"<b>rr100\u2033<\/b> y \"<strong>a granel\"<\/strong> debe tener un tama\u00f1o m\u00ednimo de 100 MB.<\/p>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Cubos<\/strong>\" y pulsa el bot\u00f3n \"<strong>A\u00d1ADIR CUBO<\/strong>\" en la parte superior derecha.<\/p>\n<p>Cree dos cubos con un tama\u00f1o de 100 MB, \"<strong>rr100<\/strong>\" (para el almacenamiento de Eventing o el bloc de notas) y \"<strong>a granel<\/strong>\"(para el objetivo de migraci\u00f3n).<\/p>\n<p>En Cubo \"<strong>rr100\u2033 <\/strong>crear \u00e1mbito \"<strong>concurso<\/strong>&#8220;.<\/p>\n<p>En el \u00e1mbito \"<strong>rr100.<\/strong><strong>concurso<\/strong>\" crear la colecci\u00f3n \"<strong>metadatos<\/strong>&#8220;.<\/p>\n<p>En Cubo \"<strong>a granel<\/strong>\" crear \u00e1mbito \"<strong>datos<\/strong>&#8220;.<\/p>\n<p>En el \u00e1mbito \"<strong>datos.masivos<\/strong>\" crear las colecciones \"<strong>cerveza<\/strong>\" y \"<strong>cervecer\u00eda<\/strong>&#8220;.<\/p>\n<p>En este punto debe tener tres (3) cubos de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12170\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P3_BUCKETS.jpg\" alt=\"\" width=\"831\" height=\"312\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3_BUCKETS.jpg 831w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3_BUCKETS-300x113.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3_BUCKETS-768x288.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3_BUCKETS-20x8.jpg 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>con las siguientes colecciones en el \"<strong>a granel\"<\/strong> cubo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12172\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P3a_BUCKET_bulk.jpg\" alt=\"\" width=\"831\" height=\"328\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_bulk.jpg 831w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_bulk-300x118.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_bulk-768x303.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_bulk-20x8.jpg 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>y las siguientes colecciones en la secci\u00f3n \"<b>rr100\u2033 <\/b>cubo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12171\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P3a_BUCKET_rr100.jpg\" alt=\"\" width=\"830\" height=\"312\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_rr100.jpg 830w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_rr100-300x113.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_rr100-768x289.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P3a_BUCKET_rr100-20x8.jpg 20w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/p>\n<h3>Paso 3: Crear la funci\u00f3n Eventing<\/h3>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Eventos<\/strong>\" y pulsa el bot\u00f3n \"<strong>A\u00d1ADIR FUNCI\u00d3N<\/strong>\" en la parte superior derecha.<\/p>\n<p>Los ajustes para la Funci\u00f3n de Eventos son los siguientes:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12167\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P1_SIMPLE_SETTINGS.jpg\" alt=\"\" width=\"516\" height=\"940\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P1_SIMPLE_SETTINGS.jpg 516w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P1_SIMPLE_SETTINGS-165x300.jpg 165w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P1_SIMPLE_SETTINGS-300x547.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P1_SIMPLE_SETTINGS-11x20.jpg 11w\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" \/><\/p>\n<p>Pulsa el bot\u00f3n \"<strong>Guardar<\/strong>\"a continuaci\u00f3n, pegue esta secuencia de comandos en el panel Editor de funciones:<\/p>\n<pre class=\"toolbar-overlay:false lang:default decode:true\">function OnUpdate(doc, meta) { \r\n    if (doc.type === 'beer') {\r\n        if (DO_COPY) beer_col[meta.id] = doc;\r\n        if (DO_DELETE) {\r\n            if (!beer_col[meta.id]) { \/\/ safety check\r\n                log(\"skip delete copy not found type=\" + doc.type + \", meta.id=\" + meta.id);\r\n            } else {\r\n                delete src_col[meta.id];\r\n            }\r\n        }\r\n    }\r\n    if (doc.type === 'brewery') {\r\n        if (DO_COPY) brewery_col[meta.id] = doc;\r\n        if (DO_DELETE) {\r\n            if (!brewery_col[meta.id]) {  \/\/ safety check\r\n                log(\"skip delete copy not found type=\" + doc.type + \", meta.id=\" + meta.id);\r\n            } else {\r\n                delete src_col[meta.id];\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<p>Tu editor de c\u00f3digo deber\u00eda tener este aspecto:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12169\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P2_SAVE_FUNC.jpg\" alt=\"\" width=\"831\" height=\"599\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P2_SAVE_FUNC.jpg 831w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P2_SAVE_FUNC-300x216.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P2_SAVE_FUNC-768x554.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P2_SAVE_FUNC-20x14.jpg 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>Pulsa el bot\u00f3n \"<strong>Guardar y devolver<\/strong>&#8221;<\/p>\n<h3>Qu\u00e9 hace ConvertBucketToCollections<\/h3>\n<p>En <code>OnUpdate(doc, meta)<\/code> procesar\u00e1 todos los datos del <strong>`beer-sample`._default._default<\/strong> y realizar\u00e1 lo siguiente en cualquier mutaci\u00f3n pasada (hist\u00f3rica) y nueva (futura).<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>En primer lugar, la propiedad del <em><span class=\"pl-s1\">doc<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">tipo <\/span><\/em>se comprueba en dos bloques de c\u00f3digo casi id\u00e9nticos para ver si coincide con alguno de los dos <code>cerveza<\/code>o <code>cervecer\u00eda<\/code><span style=\"font-weight: 400\">. Si hay coincidencia, contin\u00faa.<\/span><\/li>\n<li>Una constante global <code>DO_COPY<\/code> (proporcionado a trav\u00e9s de la configuraci\u00f3n de funciones mediante un alias de enlace constante) para ver si el elemento debe copiarse.<\/li>\n<li>Si <code>DO_COPY<\/code> es verdadero, el documento se escribir\u00e1 en la colecci\u00f3n de destino o en el espacio de claves <code>cerveza_col<\/code> o <code>cerveceria_col<\/code> (definido mediante la configuraci\u00f3n de Funciones a trav\u00e9s de un alias de Bucket Binding) en funci\u00f3n del bloque de c\u00f3digo que coincida.<\/li>\n<li>Una constante global <code>DO_DELETE<\/code> (proporcionado a trav\u00e9s de la configuraci\u00f3n de funciones mediante un alias de enlace constante) para comprobar si el elemento debe eliminarse del espacio de claves de origen o de la colecci\u00f3n (definida a trav\u00e9s de la configuraci\u00f3n de funciones mediante un alias de enlace de cubo).<\/li>\n<li>Si <code>DO_DELETE<\/code> es verdadero, el documento se eliminar\u00e1 de la colecci\u00f3n o del espacio de claves <code>src_col<\/code> (definida a trav\u00e9s de la configuraci\u00f3n de Funciones mediante un alias de Bucket Binding).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Podr\u00edamos aumentar los trabajadores de 1 al n\u00famero de vCPUs para un mejor rendimiento, pero nuestro conjunto de datos es trivial por lo que simplemente dejamos el recuento de trabajadores en uno (1). <em>Nota: La configuraci\u00f3n de los trabajadores se encuentra en la secci\u00f3n desplegable Configuraci\u00f3n, en el centro del cuadro de di\u00e1logo Configuraci\u00f3n de funciones.<\/em>.<\/p>\n<h2>Despliegue de la funci\u00f3n de eventos<\/h2>\n<p>Ahora es el momento de desplegar la funci\u00f3n Eventing. Hemos revisado un poco el c\u00f3digo y el dise\u00f1o del script de migraci\u00f3n ConvertBucketToCollections, y ahora es el momento de ver c\u00f3mo funciona todo junto.<\/p>\n<p>En este punto, tenemos una funci\u00f3n en JavaScript por lo que necesitamos <span style=\"font-weight: 400\">a\u00f1adirlo a nuestro <\/span>Couchbase y desplegarlo en un estado activo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12173\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P4_deploy.jpg\" alt=\"\" width=\"831\" height=\"229\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P4_deploy.jpg 831w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P4_deploy-300x83.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P4_deploy-768x212.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P4_deploy-20x6.jpg 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>Pulsa el bot\u00f3n \"<strong>Despliegue<\/strong>&#8220;.<\/p>\n<p>El servicio de eventos tarda unos 18 segundos en desplegar su funci\u00f3n de eventos, momento en el que deber\u00eda ver inmediatamente 7303 elementos procesados. Dado que el conjunto de datos es est\u00e1tico, habr\u00e1 terminado cuando se hayan procesado todos los elementos. Dado que el conjunto de datos es est\u00e1tico, habr\u00e1 terminado cuando se hayan procesado todos los elementos.<\/p>\n<div aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12174\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P5_deployed.jpg\" alt=\"\" width=\"831\" height=\"285\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P5_deployed.jpg 831w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P5_deployed-300x103.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P5_deployed-768x263.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P5_deployed-20x7.jpg 20w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/div>\n<p>&nbsp;<\/p>\n<p>Pulsa el bot\u00f3n \"<strong>Despliegue<\/strong>&#8220;.<\/p>\n<h2>Ver los datos migrados<\/h2>\n<p>Ahora que hemos terminado de utilizar la funci\u00f3n de eventos, podemos inspeccionar los cubos y las colecciones para ver qu\u00e9 ha pasado.<\/p>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Cubos<\/strong>&#8221;<\/p>\n<div aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12176\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P6_mig_buckets.jpg\" alt=\"\" width=\"833\" height=\"264\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets.jpg 833w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets-300x95.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets-768x243.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets-20x6.jpg 20w\" sizes=\"auto, (max-width: 833px) 100vw, 833px\" \/><\/div>\n<p>Ahora seleccione \"\u00c1mbitos y colecciones\" para el cubo \"<strong>a granel\"<\/strong>y, a continuaci\u00f3n, ampl\u00ede el \u00e1mbito \"<strong>datos\"<\/strong>.<\/p>\n<div aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12175\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P6_mig_buckets_exp.jpg\" alt=\"\" width=\"830\" height=\"415\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_exp.jpg 830w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_exp-300x150.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_exp-768x384.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_exp-20x10.jpg 20w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/div>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Documentos<\/strong>\"y, a continuaci\u00f3n, seleccione el espacio clave \"<strong>datos.masivos.cerveza<\/strong>\" y ver\u00e1 los documentos migrados en esa colecci\u00f3n.<\/p>\n<div aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12177\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P6_mig_buckets_data_beer.jpg\" alt=\"\" width=\"828\" height=\"551\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer.jpg 828w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer-300x200.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer-768x511.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer-400x267.jpg 400w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer-450x300.jpg 450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_beer-20x13.jpg 20w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/div>\n<p>En la interfaz de usuario de Couchbase, seleccione \"<strong>Documentos<\/strong>\"y, a continuaci\u00f3n, seleccione el espacio clave \"<strong>datos.masivos.cervecer\u00eda<\/strong>\" y ver\u00e1 los documentos migrados en esa colecci\u00f3n.<\/p>\n<div aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12178\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P6_mig_buckets_data_brewery.jpg\" alt=\"\" width=\"828\" height=\"525\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_brewery.jpg 828w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_brewery-300x190.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_brewery-768x487.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P6_mig_buckets_data_brewery-20x13.jpg 20w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/div>\n<p>&nbsp;<\/p>\n<h3>Mejoremos la funci\u00f3n Eventing<\/h3>\n<p>Recuerde, Eventing puede enriquecer los datos sobre la marcha, y si realmente estamos dividiendo un bucket (circa Couchbase 6.x) en colecciones separadas (circa Couchbase 7.0), ya no necesitamos la funci\u00f3n<strong> tipo<\/strong> propiedad.  As\u00ed que vamos a modificar nuestra Funci\u00f3n para transformar nuestros datos, tambi\u00e9n.<\/p>\n<p><span style=\"font-weight: 400\">Por ejemplo, dado el documento con clave \"<\/span><b>abhi_brewery<\/b><span style=\"font-weight: 400\">\"en nuestros datos de origen<\/span> en <strong>`beer-sample`._default._default<\/strong>:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">{\r\n  \"name\": \"Abhi Brewery\",\r\n  \"city\": \"\",\r\n  \"state\": \"\",\r\n  \"code\": \"\",\r\n  \"country\": \"India\",\r\n  \"phone\": \"\",\r\n  \"website\": \"\",\r\n  \"type\": \"brewery\",\r\n  \"updated\": \"2011-09-27 00:35:48\",\r\n  \"description\": \"\",\r\n  \"address\": []\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><span style=\"font-weight: 400\">Hemos eliminado<\/span>\u00a0<code>\"tipo\": \"cervecer\u00eda\"<\/code>:<\/div>\n<div aria-hidden=\"true\"><\/div>\n<div aria-hidden=\"true\">\n<pre class=\"toolbar-overlay:false lang:js decode:true\">{\r\n  \"name\": \"Abhi Brewery\",\r\n  \"city\": \"\",\r\n  \"state\": \"\",\r\n  \"code\": \"\",\r\n  \"country\": \"India\",\r\n  \"phone\": \"\",\r\n  \"website\": \"\",\r\n  \"updated\": \"2011-09-27 00:35:48\",\r\n  \"description\": \"\",\r\n  \"address\": []\r\n}\r\n<\/pre>\n<\/div>\n<p>Aqu\u00ed est\u00e1 la modificaci\u00f3n de nuestra Funci\u00f3n de Eventos:<\/p>\n<pre class=\"toolbar-overlay:false lang:default decode:true\">function OnUpdate(doc, meta) {\r\n    if (!doc.type) return;\r\n\r\n    var type = doc.type;\r\n    if (DROP_TYPE) delete doc.type;\r\n    \r\n    if (type === 'beer') {\r\n        if (DO_COPY) beer_col[meta.id] = doc;\r\n        if (DO_DELETE) {\r\n            if (!beer_col[meta.id]) { \/\/ safety check\r\n                log(\"skip delete copy not found type=\" + doc.type + \", meta.id=\" + meta.id);\r\n            } else {\r\n                delete src_col[meta.id];\r\n            }\r\n        }\r\n    }\r\n    if (type === 'brewery') {\r\n        if (DO_COPY) brewery_col[meta.id] = doc;\r\n        if (DO_DELETE) {\r\n            if (!brewery_col[meta.id]) {  \/\/ safety check\r\n                log(\"skip delete copy not found type=\" + doc.type + \", meta.id=\" + meta.id);\r\n            } else {\r\n                delete src_col[meta.id];\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<p>Y como a\u00f1adimos una nueva constante global <code>DROP_TYPE<\/code>tambi\u00e9n modificamos la configuraci\u00f3n de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-12179\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/10\/P7_drop_type.jpg\" alt=\"\" width=\"516\" height=\"220\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P7_drop_type.jpg 516w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P7_drop_type-300x128.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/10\/P7_drop_type-20x9.jpg 20w\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" \/><\/p>\n<h2>Reflexiones finales<\/h2>\n<p>Si este art\u00edculo le ha resultado \u00fatil y est\u00e1 interesado en seguir aprendiendo sobre el concurso completo, haga clic aqu\u00ed. <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/eventing\/?ref=blog\" target=\"_blank\" rel=\"noopener\">el servicio de eventos Couchbase<\/a>.<\/p>\n<p>Ahora que entiendes la mec\u00e1nica de usar Eventing para migrar tus buckets a scopes y collections, por favor explora el post de seguimiento (Parte 2), donde proporciono una metodolog\u00eda simple totalmente automatizada para hacer grandes migraciones con docenas de tipos de datos a trav\u00e9s de un simple <em>Perl<\/em> gui\u00f3n.<\/p>\n<h2>Recursos<\/h2>\n<ul>\n<li><em>Descargar:<\/em> <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Descargar Couchbase Server 7.0<\/a><\/li>\n<li><i><span style=\"font-weight: 400\">Scriptlet de Eventing:<\/span><\/i><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-handler-ConvertBucketToCollections.html?ref=blog\"> <span style=\"font-weight: 400\">Funci\u00f3n: ConvertBucketToCollections<\/span><\/a><\/li>\n<\/ul>\n<h2>Referencias<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-overview.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">Documentaci\u00f3n sobre eventos de Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">Novedades: Couchbase Server 7.0<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-migrate-to-scopes-and-collections-in-couchbase-7-0\/\" target=\"_blank\" rel=\"noopener\">C\u00f3mo migrar a \u00e1mbitos y colecciones en Couchbase 7.0<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/tag\/eventing\/?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">Otros blogs de Couchbase sobre Eventing<\/a><\/li>\n<\/ul>\n<p>Me encantar\u00eda que me contaras qu\u00e9 te han parecido las capacidades de Couchbase y el servicio Eventing, y c\u00f3mo benefician a tu negocio de cara al futuro. Por favor, comparte tu opini\u00f3n a trav\u00e9s de los comentarios de abajo o en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/?ref=blog\" target=\"_blank\" rel=\"noopener\">los foros de Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1 First I want to point out an excellent blog written by Shivani Gupta, How to Migrate to Scopes &amp; Collections in Couchbase 7.0, which covers in great detail other methods [&hellip;]<\/p>","protected":false},"author":42711,"featured_media":12478,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1821,1816,2273,9336],"tags":[2379,9343,9339],"ppma_author":[9113],"class_list":["post-12476","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-server","category-eventing","category-scopes-and-collections","tag-best-practices","tag-couchbase-7-0","tag-scopes-and-collections"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes &amp; Collections. Part 1\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1\" \/>\n<meta property=\"og:description\" content=\"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes &amp; Collections. Part 1\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-20T16:00:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:40:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"799\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jon Strabala, Principal Product Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jon Strabala, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\"},\"author\":{\"name\":\"Jon Strabala, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc\"},\"headline\":\"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1\",\"datePublished\":\"2021-12-20T16:00:41+00:00\",\"dateModified\":\"2025-06-14T05:40:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\"},\"wordCount\":1449,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg\",\"keywords\":[\"best practices\",\"Couchbase 7.0\",\"Scopes and Collections\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Server\",\"Eventing\",\"Scopes and Collections\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\",\"name\":\"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg\",\"datePublished\":\"2021-12-20T16:00:41+00:00\",\"dateModified\":\"2025-06-14T05:40:20+00:00\",\"description\":\"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes & Collections. Part 1\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg\",\"width\":1600,\"height\":799},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc\",\"name\":\"Jon Strabala, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9c6045b0c2f7b07b0ee10f94ad748a25\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g\",\"caption\":\"Jon Strabala, Principal Product Manager, Couchbase\"},\"description\":\"Jon Strabala is a Principal Product Manager, responsible for the Couchbase Eventing Service. Before joining Couchbase, he spent more than 20 years building software products across various domains, starting with EDA in aerospace then transitioning to building enterprise software focused on what today is coined \u201cIoT\u201d and \u201cat-scale data.\u201d Jon worked for several small software consultancies until eventually starting and managing his own firm. He has extensive experience in NoSQL\/NewSQL, both in contributing and commercializing new technologies such as compressed bitmaps and column stores. Jon holds a bachelor\u2019s degree in electrical engineering and a master's in computer engineering, both from the University of Southern California, and an MBA from the University of California at Irvine.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/jon-strabala\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1 - The Couchbase Blog","description":"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes & Collections. Part 1","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/","og_locale":"es_MX","og_type":"article","og_title":"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1","og_description":"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes & Collections. Part 1","og_url":"https:\/\/www.couchbase.com\/blog\/es\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-12-20T16:00:41+00:00","article_modified_time":"2025-06-14T05:40:20+00:00","og_image":[{"width":1600,"height":799,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg","type":"image\/jpeg"}],"author":"Jon Strabala, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jon Strabala, Principal Product Manager, Couchbase","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/"},"author":{"name":"Jon Strabala, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc"},"headline":"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1","datePublished":"2021-12-20T16:00:41+00:00","dateModified":"2025-06-14T05:40:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/"},"wordCount":1449,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg","keywords":["best practices","Couchbase 7.0","Scopes and Collections"],"articleSection":["Best Practices and Tutorials","Couchbase Architecture","Couchbase Server","Eventing","Scopes and Collections"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/","url":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/","name":"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg","datePublished":"2021-12-20T16:00:41+00:00","dateModified":"2025-06-14T05:40:20+00:00","description":"Learn how to use the Couchbase Eventing Service to easily and automatically migrate your Bucket based data to Scopes & Collections. Part 1","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/migration2-1.jpg","width":1600,"height":799},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/migrating-buckets-to-collections-scopes-via-eventing-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating Buckets to Collections &amp; Scopes via Eventing: Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc","name":"Jon Strabala, Director Principal de Producto, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9c6045b0c2f7b07b0ee10f94ad748a25","url":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","caption":"Jon Strabala, Principal Product Manager, Couchbase"},"description":"Jon Strabala es Gerente Principal de Producto, responsable del Servicio de Eventos de Couchbase. Antes de unirse a Couchbase, pas\u00f3 m\u00e1s de 20 a\u00f1os construyendo productos de software a trav\u00e9s de diversos dominios, comenzando con EDA en el sector aeroespacial y luego la transici\u00f3n a la construcci\u00f3n de software empresarial centrado en lo que hoy se conoce como \"IoT\" y \"datos a escala\". Jon trabaj\u00f3 para varias peque\u00f1as consultoras de software hasta que finalmente fund\u00f3 y dirigi\u00f3 su propia empresa. Tiene una amplia experiencia en NoSQL\/NewSQL, tanto en la contribuci\u00f3n como en la comercializaci\u00f3n de nuevas tecnolog\u00edas como los mapas de bits comprimidos y los almacenes de columnas. Jon es licenciado en ingenier\u00eda el\u00e9ctrica y tiene un m\u00e1ster en ingenier\u00eda inform\u00e1tica, ambos por la Universidad del Sur de California, y un MBA por la Universidad de California en Irvine.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/jon-strabala\/"}]}},"authors":[{"term_id":9113,"user_id":42711,"is_guest":0,"slug":"jon-strabala","display_name":"Jon Strabala, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","author_category":"","last_name":"Strabala, Principal Product Manager, Couchbase","first_name":"Jon","job_title":"","user_url":"","description":"Jon Strabala es Gerente Principal de Producto, responsable del Servicio de Eventos de Couchbase. Antes de unirse a Couchbase, pas\u00f3 m\u00e1s de 20 a\u00f1os construyendo productos de software a trav\u00e9s de diversos dominios, comenzando con EDA en el sector aeroespacial y luego la transici\u00f3n a la construcci\u00f3n de software empresarial centrado en lo que hoy se conoce como \"IoT\" y \"datos a escala\". Jon trabaj\u00f3 para varias peque\u00f1as consultoras de software hasta que finalmente fund\u00f3 y dirigi\u00f3 su propia empresa. Tiene una amplia experiencia en NoSQL\/NewSQL, tanto en la contribuci\u00f3n como en la comercializaci\u00f3n de nuevas tecnolog\u00edas como los mapas de bits comprimidos y los almacenes de columnas. Jon es licenciado en ingenier\u00eda el\u00e9ctrica y tiene un m\u00e1ster en ingenier\u00eda inform\u00e1tica, ambos por la Universidad del Sur de California, y un MBA por la Universidad de California en Irvine."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/42711"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12476"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/12478"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12476"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}