{"id":10577,"date":"2021-02-16T09:00:15","date_gmt":"2021-02-16T17:00:15","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=10577"},"modified":"2021-02-10T06:05:47","modified_gmt":"2021-02-10T14:05:47","slug":"hands-on-migration-from-relational-to-collections","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/hands-on-migration-from-relational-to-collections\/","title":{"rendered":"Migraci\u00f3n pr\u00e1ctica de sistemas relacionales a colecciones"},"content":{"rendered":"<p>El principal objetivo de este blog es ense\u00f1arte c\u00f3mo puedes migrar f\u00e1cilmente tus datos relacionales a Couchbase, reduciendo tu coste total de propiedad y potenciando tu plataforma de datos para responder a los r\u00e1pidos ciclos de publicaci\u00f3n que conocemos y amamos. Mientras migras puedes incluso conservar los nombres\/espacios de claves individuales que ya tienes estructurados usando \u00e1mbitos y colecciones. Este blog es una especie de amalgama de las nuevas caracter\u00edsticas explicadas en otros blogs y actualizaciones recientes, pero a diferencia de esos blogs incluye algunos ejemplos de c\u00f3mo puedes migrar tus datos relacionales a Couchbase.<\/p>\n<p>Una de las cosas brillantes de Couchbase es que realmente escuchamos las necesidades de nuestra comunidad y continuamos desarrollando nuestros productos para ofrecer la mejor experiencia posible a nuestros clientes. Escrib\u00ed este blog como \"pr\u00e1ctico\" si quieres seguirlo, pero tambi\u00e9n puedes saltarte el paso de extracci\u00f3n y simplemente trabajar con un TSV que te he proporcionado.<\/p>\n<p>Si nos est\u00e1s siguiendo, los prerrequisitos son un RDBMS del que extraer datos, un int\u00e9rprete de python y un servidor Couchbase (ya sea en Docker, VM, f\u00edsico, etc.).<\/p>\n<p>Voy a utilizar un ejemplo en l\u00ednea para nuestra base de datos de demostraci\u00f3n. Enlace<a href=\"https:\/\/www.w3resource.com\/sql\/sql-table.php\"> aqu\u00ed<\/a> es la base de datos de ejemplo con tres tablas: clientes, agentes y pedidos.<\/p>\n<p>Migrar datos a Couchbase es realmente f\u00e1cil, vamos a imitar nuestra estructura de tablas utilizando nuestra nueva funci\u00f3n de \u00e1mbitos y colecciones. Para empezar necesitamos un espacio de almacenamiento l\u00f3gico, en este ejemplo estamos utilizando un bucket por base de datos, por lo que s\u00f3lo tenemos que crear un bucket. El esquema se asignar\u00e1 a un \u00e1mbito, as\u00ed que un \u00e1mbito. Por \u00faltimo, cada una de las tablas se asignar\u00e1 a una colecci\u00f3n del mismo nombre, por lo que habr\u00e1 un total de tres colecciones.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10578 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/02\/model.png\" alt=\"\" width=\"768\" height=\"378\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/model.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/model-300x148.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/model-20x10.png 20w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p><b>Creaci\u00f3n de cubos, \u00e1mbitos y colecciones:<\/b><\/p>\n<p>Tenemos muchas opciones disponibles aqu\u00ed. El SDK, REST API, Couchbase CLI (sin olvidar Couchbase shell), y Web GUI. Voy a utilizar la API REST, la belleza aqu\u00ed es que podemos acceder a ella desde la l\u00ednea de comandos, \u00a1y no hay necesidad de instalar nada! Para cualquier persona t\u00edmida de la interfaz REST, la documentaci\u00f3n <a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/manage\/manage-scopes-and-collections\/manage-scopes-and-collections.html\">aqu\u00ed<\/a> explicar\u00e1 otros m\u00e9todos alternativos.<\/p>\n<p>Los pasos siguientes especificar\u00e1n los comandos necesarios para configurar su cubo, \u00e1mbito y colecciones:<\/p>\n<p>Ejecute los dos comandos siguientes para crear su cubo de datos y su \u00e1mbito:<\/p>\n<pre class=\"lang:sh decode:true\">curl -X POST -u Administrator:password https:\/\/127.0.0.1:8091\/pools\/default\/buckets -d name=migration -d bucketType=couchbase -d ramQuotaMB=100\r\ncurl -X POST -u Administrator:password <a href=\"https:\/\/127.0.0.1:8091\/pools\/default\/buckets\/migration\/collections\">https:\/\/127.0.0.1:8091\/pools\/default\/buckets\/migration\/collections<\/a> -d name=reference<\/pre>\n<p>Ahora cree las tres colecciones a las que asignaremos los datos de nuestra tabla:<\/p>\n<pre class=\"lang:sh decode:true\">curl -u Administrator:password -X POST https:\/\/localhost:8091\/pools\/default\/buckets\/migration\/collections\/reference -d name=$TABLE_NAME<\/pre>\n<p>Simplemente cambie la variable $TABLE_NAME seg\u00fan sea necesario para crear las colecciones de agentes, pedidos y clientes respectivamente.<\/p>\n<p>(En el Ap\u00e9ndice encontrar\u00e1 enlaces a las p\u00e1ginas de documentaci\u00f3n de estas API).<\/p>\n<p>Con todo creado, dir\u00edgete a la secci\u00f3n Buckets y haz clic en el enlace \"Scopes &amp; Collections\" junto al nombre del bucket que has creado, el m\u00edo se llama migration. Si expandes el \u00e1mbito que hemos creado, ver\u00e1s las tres colecciones que hemos creado.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10579 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/02\/scopes-collections-view.png\" alt=\"\" width=\"916\" height=\"504\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/scopes-collections-view.png 916w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/scopes-collections-view-300x165.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/scopes-collections-view-768x423.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/scopes-collections-view-20x11.png 20w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Extracci\u00f3n de datos de nuestro RDBMS<\/strong><\/p>\n<p>Ahora que tenemos nuestro cubo, \u00e1mbito y colecciones en su lugar, estamos listos para exportar nuestros datos relacionales. He escrito un <a href=\"https:\/\/github.com\/tallbigsam\/mysql_tsv_export\">gui\u00f3n corto<\/a> que extrae los datos almacenados en la base de datos MySQL de ejemplo a TSV, que es felizmente soportado por nuestras herramientas de importaci\u00f3n, o puede exportar los datos usted mismo. Si ya tiene la base de datos configurada, simplemente ejecute el script y cambie las variables para utilizar el nombre de usuario y la contrase\u00f1a que configur\u00f3. Despu\u00e9s de ejecutar el script, deber\u00eda ver tres archivos .tsv creados que contienen los datos de cada tabla de la base de datos de ejemplo.<\/p>\n<pre class=\"lang:python decode:true\">#!\/usr\/bin\/python3\r\n\r\nimport subprocess\r\nimport json\r\nimport re\r\n\r\nsql_commands='{ \"commands\": { \"agents\": \"SELECT * FROM agents;\", \"customer\": \"SELECT * FROM customer\", \"orders\": \"SELECT * FROM orders;\" } }'\r\ndb_name = \"sample\"\r\nusername = \"root\"\r\npassword = \"rootroot\"\r\n\r\nsql_commands = json.loads(sql_commands)\r\nfor command_name in sql_commands[\"commands\"]:\r\n    print(\"Running command: \" + command_name)\r\n    \r\n    sql_statement = \"--execute={0}\".format(sql_commands[\"commands\"][command_name])\r\n    command = subprocess.run([\"\/usr\/local\/mysql\/bin\/mysql\", db_name, \"--user={0}\".format(username), \"--password={0}\".format(password), sql_statement], capture_output=True)\r\n    with open(command_name+\"_out.tsv\", 'w') as command_output_file:\r\n        command_without_trailing_white_space = re.sub(b\" +\\\\t\", b'\\\\t', command.stdout)\r\n        command_output_file.write(command_without_trailing_white_space.decode('ascii'))<\/pre>\n<p>Aqu\u00ed tienes un ejemplo de la salida TSV, si s\u00f3lo est\u00e1s trabajando en la parte de importaci\u00f3n, sigue adelante y utiliza esto:<\/p>\n<pre class=\"lang:sh decode:true\">AGENT_CODE AGENT_NAME WORKING_AREA COMMISSION PHONE_NO COUNTRY\r\nA007 Ramasundar Bangalore 0.15 077-25814763\r\nA003 Alex London 0.13 075-12458969\r\nA008 Alford New York 0.12 044-25874365\r\nA011 Ravi Kumar Bangalore 0.15 077-45625874\r\nA010 Santakumar Chennai 0.14 007-22388644\r\nA012 Lucida San Jose 0.12 044-52981425\r\nA005 Anderson Brisban 0.13 045-21447739\r\nA001 Subbarao Bangalore 0.14 077-12346674\r\nA002 Mukesh Mumbai 0.11 029-12358964\r\nA006 McDen London 0.15 078-22255588\r\nA004 Ivan Torento 0.15 008-22544166\r\nA009 Benjamin Hampshair 0.11 008-22536178<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Importaci\u00f3n de datos a Couchbase<\/strong><\/p>\n<p>Nuestra herramienta de importaci\u00f3n, cbimport, facilita enormemente la importaci\u00f3n de datos en muchos formatos. Recientemente hemos implementado algunas funcionalidades de importaci\u00f3n en nuestra web gui, haciendo el proceso a\u00fan m\u00e1s accesible. A continuaci\u00f3n se muestra una captura de pantalla de nuestra herramienta de importaci\u00f3n Web Gui. Para llegar aqu\u00ed ingresa a la GUI Web de Couchbase, luego ve a \"Documentos\" -&gt; \"Importar\".<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10580 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/02\/cbimport.png\" alt=\"\" width=\"954\" height=\"614\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/cbimport.png 954w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/cbimport-300x193.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/cbimport-768x494.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/cbimport-20x13.png 20w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/p>\n<p>Aqu\u00ed vamos a importar nuestros TSV utilizando el bot\u00f3n \"Seleccionar archivo para importar\", observe que al cargar un archivo, muchos campos se rellenan por usted. Eche un vistazo a los datos importados y aseg\u00farese de que se corresponden con lo que espera teniendo en cuenta la estructura relacional anterior. S\u00f3lo tenemos que completar unos pocos pasos para importar nuestros datos.<\/p>\n<p>En primer lugar, especifica una colecci\u00f3n a la que importar los datos, por ejemplo, agents_out.tsv se asigna a la colecci\u00f3n 'agents'. Tambi\u00e9n vamos a hacer corresponder las filas individuales de nuestra base de datos relacional anterior con IDs de documentos en Couchbase, de nuevo esto se hace f\u00e1cilmente con nuestra herramienta de importaci\u00f3n utilizando la secci\u00f3n \"Importar con ID de documento\". A lo largo de mis importaciones de datos he utilizado la clave primaria de los datos relacionales como el ID del documento en Couchbase, esto es realmente \u00fatil ya que cada clave en una colecci\u00f3n debe ser \u00fanica. Por ejemplo, en el archivo agents_out.tsv he utilizado la clave primaria \"AGENT_CODE\". Realice este paso para cada uno de los .tsv; agentes, pedidos y clientes.<\/p>\n<p>&nbsp;<\/p>\n<p>Y ah\u00ed lo tienen, para recapitular, hemos hecho lo siguiente:<\/p>\n<ol>\n<li>Exportaci\u00f3n de los datos de nuestra base de datos heredada a TSV<\/li>\n<li>Creado un \u00e1mbito, y colecciones basadas en las tablas que estamos importando<\/li>\n<li>Importar los datos utilizando la herramienta de migraci\u00f3n de datos a una colecci\u00f3n espec\u00edfica, dentro de un \u00e1mbito.<\/li>\n<\/ol>\n<p>Vale, ahora que tengo mis datos en Couchbase, \u00bfnecesito aprender una nueva forma de consultar datos? Todo lo contrario, \u00bfpor qu\u00e9 no te diriges a la GUI web de Couchbase, y consultas algunos de tus datos reci\u00e9n importados usando N1QL? <a href=\"https:\/\/query-tutorial.couchbase.com\/tutorial\/#1\">Es compatible con SQL++ y, si alguna vez ha escrito una consulta SQL, se sentir\u00e1 como en casa.<\/a>La puerta est\u00e1 abierta, \u00a1entra! No s\u00f3lo le facilitaremos la redacci\u00f3n de consultas, sino que incluso le ayudaremos a crear el \u00edndice adecuado con nuestro <a href=\"https:\/\/index-advisor.couchbase.com\/indexadvisor\/#1\">Servicio Index Advisor<\/a>S\u00f3lo tiene que introducir la consulta que desea realizar y el asesor le sugerir\u00e1 un \u00edndice. Incluso soportamos JOIN's:<\/p>\n<pre class=\"lang:tsql decode:true\">SELECT orders.AGENT_CODE, orders.ORD_AMOUNT, agents.AGENT_NAME\r\nFROM `bigdata`.reference.orders as orders\r\nJOIN `bigdata`.reference.agents as agents\r\nON orders.AGENT_CODE = meta(agents).id;<\/pre>\n<p>Este es un gran comienzo en la direcci\u00f3n correcta para la transici\u00f3n de relacional a NoSQL, si quieres aprender m\u00e1s sobre el modelado de tus datos para sacar el m\u00e1ximo provecho de Couchbase, <a href=\"https:\/\/www.couchbase.com\/blog\/es\/a-json-data-modeling-guide\/\">consulte nuestra gu\u00eda de modelado de datos<\/a>.<\/p>\n<p>\u00bfQuiere saber m\u00e1s sobre \u00e1mbitos y colecciones?<a href=\"https:\/\/www.couchbase.com\/blog\/es\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/\"> Recomiendo el blog de Shivani<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>Ap\u00e9ndice:<\/b><\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-import-and-export-databases-in-mysql-or-mariadb\">En el siguiente enlace se explica a los usuarios exactamente c\u00f3mo configurar su base de datos de muestra.<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/hub.docker.com\/_\/couchbase\">Contenedor Docker Couchbase<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/rest-api\/creating-a-scope.html\">7.0 API REST - Documentaci\u00f3n de creaci\u00f3n de \u00e1mbitos<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/rest-api\/rest-bucket-create.html\">7.0 Documentaci\u00f3n de creaci\u00f3n de cubos de la API REST<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/rest-api\/creating-a-collection.html\">7.0 API REST - Documentaci\u00f3n de creaci\u00f3n de colecciones<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>The key outcome of this blog is to teach you how you can easily migrate your relational data over to Couchbase, lowering your TCO and empowering your data platform to respond to the fast paced release cycles we know and [&hellip;]<\/p>","protected":false},"author":76077,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1819],"tags":[],"ppma_author":[9168],"class_list":["post-10577","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-data-modeling"],"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>Hands-on Migration From Relational to Collections - The Couchbase Blog<\/title>\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\/hands-on-migration-from-relational-to-collections\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hands-on Migration From Relational to Collections\" \/>\n<meta property=\"og:description\" content=\"The key outcome of this blog is to teach you how you can easily migrate your relational data over to Couchbase, lowering your TCO and empowering your data platform to respond to the fast paced release cycles we know and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/hands-on-migration-from-relational-to-collections\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-16T17:00:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sam Redman, Solutions Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sam Redman, Solutions Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/\"},\"author\":{\"name\":\"Sam Redman\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408\"},\"headline\":\"Hands-on Migration From Relational to Collections\",\"datePublished\":\"2021-02-16T17:00:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/\"},\"wordCount\":1121,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Data Modeling\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/\",\"name\":\"Hands-on Migration From Relational to Collections - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2021-02-16T17:00:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hands-on Migration From Relational to Collections\"}]},{\"@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\/512e4ed8ed1188a93cb7c3aee277f408\",\"name\":\"Sam Redman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/69dc9b1e46ceb237d29e1e4b626c6bcc\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"caption\":\"Sam Redman\"},\"description\":\"Solutions Engineer at Couchbase. Sam has previously as a developer and an SRE before joining Couchbase.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/sam-redman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hands-on Migration From Relational to Collections - The Couchbase Blog","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\/hands-on-migration-from-relational-to-collections\/","og_locale":"es_MX","og_type":"article","og_title":"Hands-on Migration From Relational to Collections","og_description":"The key outcome of this blog is to teach you how you can easily migrate your relational data over to Couchbase, lowering your TCO and empowering your data platform to respond to the fast paced release cycles we know and [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/hands-on-migration-from-relational-to-collections\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-02-16T17:00:15+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Sam Redman, Solutions Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sam Redman, Solutions Engineer","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/"},"author":{"name":"Sam Redman","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408"},"headline":"Hands-on Migration From Relational to Collections","datePublished":"2021-02-16T17:00:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/"},"wordCount":1121,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Data Modeling"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/","url":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/","name":"Hands-on Migration From Relational to Collections - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2021-02-16T17:00:15+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/hands-on-migration-from-relational-to-collections\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hands-on Migration From Relational to Collections"}]},{"@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\/512e4ed8ed1188a93cb7c3aee277f408","name":"Sam Redman","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/69dc9b1e46ceb237d29e1e4b626c6bcc","url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","caption":"Sam Redman"},"description":"Solutions Engineer at Couchbase. Sam has previously as a developer and an SRE before joining Couchbase.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/sam-redman\/"}]}},"authors":[{"term_id":9168,"user_id":76077,"is_guest":0,"slug":"sam-redman","display_name":"Sam Redman, Solutions Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","author_category":"","last_name":"Redman","first_name":"Sam","job_title":"","user_url":"","description":"Sam Redman es Ingeniero de Soluciones en Couchbase. Sam trabaj\u00f3 anteriormente en entornos de desarrollo y SRE antes de unirse a Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/10577","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\/76077"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=10577"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/10577\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=10577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=10577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=10577"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=10577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}