{"id":1617,"date":"2014-12-16T19:32:12","date_gmt":"2014-12-16T19:32:12","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1617"},"modified":"2019-03-24T04:56:28","modified_gmt":"2019-03-24T11:56:28","slug":"geocouch-bulk-insertion","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/geocouch-bulk-insertion\/","title":{"rendered":"GeoCouch: Inserci\u00f3n masiva"},"content":{"rendered":"<p>En <a href=\"\/blog\/es\/new-release-geocouch-extension\/\">nuevo lanzamiento<\/a>\u00a0de\u00a0<a href=\"https:\/\/github.com\/couchbase\/geocouch\">GeoCouch<\/a>\u00a0mejora mucho el tiempo de construcci\u00f3n del \u00edndice espacial (hasta 10 veces). Esto se debe a la utilizaci\u00f3n de un nuevo algoritmo de inserci\u00f3n masiva. El \u00edndice espacial (un\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/R-tree\">\u00c1rbol R<\/a>) se implementa como una estructura de datos de s\u00f3lo adici\u00f3n (al igual que los \u00e1rboles B de CouchDB) que se beneficia de la naturaleza de las inserciones masivas al permitir la adici\u00f3n de grandes bloques del \u00edndice de una sola vez.<\/p>\n<p class=\"rtecenter\" style=\"padding: 0px; margin: 0px 0px 1em 0px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-5296\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/insertion-single007-300x248.png\" alt=\"\" width=\"300\" height=\"248\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-single007-300x248.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-single007-20x17.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-single007.png 517w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2 style=\"font-size: 1.7em; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">Antigua aplicaci\u00f3n<\/h2>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">En versiones anteriores de GeoCouch, cada entrada de geometr\u00eda se insertaba una a una. Esto llevaba a una enorme cantidad de peque\u00f1as operaciones de disco, ya que cada adici\u00f3n se escrib\u00eda en el \u00edndice. He aqu\u00ed un resumen del antiguo algoritmo.<\/p>\n<ul style=\"padding: 0px; margin: 0px 1em 0px 2em;\">\n<li style=\"list-style-type: disc; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">Empezar en el nodo ra\u00edz<\/li>\n<li style=\"list-style-type: disc; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">Encontrar el primer hijo cuya caja delimitadora necesite la menor expansi\u00f3n.<\/li>\n<li style=\"list-style-type: disc; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">Recorrer el \u00e1rbol R hasta alcanzar la hoja de destino<\/li>\n<li style=\"list-style-type: disc; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">Insertar el nuevo nodo en un nodo hoja<\/li>\n<li style=\"list-style-type: disc; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">Reescribe todos los nodos de la ruta desde el nodo reci\u00e9n insertado hasta el nodo ra\u00edz<\/li>\n<\/ul>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Los primeros pasos son los b\u00e1sicos requeridos para una inserci\u00f3n en cualquier implementaci\u00f3n de \u00e1rbol R. El problema con este m\u00e9todo es que cuando se utiliza una estructura de datos de s\u00f3lo anexar, se requiere un alto n\u00famero de escrituras ya que todos los nodos desde el nodo insertado hasta el nodo ra\u00edz necesitan ser reescritos y anexados al \u00edndice. Puedes encontrar m\u00e1s informaci\u00f3n sobre la naturaleza de las estructuras de datos \"append-only\" en mi art\u00edculo\u00a0<a href=\"https:\/\/vmx.cx\/couchdb\/tutorial\/indexer.html\">Tutorial de creaci\u00f3n de un nuevo indexador<\/a><\/p>\n<h2 style=\"font-size: 1.7em; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">Aplicaci\u00f3n actual<\/h2>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-5298\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/insertion-bulk008-300x191.png\" alt=\"\" width=\"300\" height=\"191\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-bulk008-300x191.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-bulk008-768x490.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-bulk008-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/insertion-bulk008.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">El \u00edndice espacial se implementa de forma similar a las vistas, el \u00edndice se actualiza cuando se realiza una petici\u00f3n para utilizarlo, en lugar de cuando se inserta un nuevo documento. El resultado es que una vez que se accede al \u00edndice, \u00e9ste necesita ponerse al d\u00eda con el documento insertado m\u00e1s recientemente. En cuanto cambia m\u00e1s de un documento, tiene m\u00e1s sentido procesarlo en bloque y reducir las modificaciones en disco del \u00edndice y mejorar el rendimiento global de la actualizaci\u00f3n.<\/p>\n<h3 style=\"font-size: 17px; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">Carga a granel e inserci\u00f3n a granel<\/h3>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Existe una diferencia entre la carga masiva y la inserci\u00f3n masiva. Por carga se entiende la creaci\u00f3n de una nueva estructura de datos a partir de cero. Mientras que la inserci\u00f3n masiva significa que se insertan varios elementos nuevos en una estructura ya existente. La implementaci\u00f3n de GeoCouch necesita ambas y se basa principalmente en dos documentos. Para la inserci\u00f3n\u00a0<a href=\"https:\/\/www.cs.arizona.edu\/~bkmoon\/papers\/dke06-bulk.pdf\">Inserci\u00f3n masiva de \u00e1rboles R mediante agrupaci\u00f3n por semillas<\/a>\u00a0y para la carga a granel\u00a0<a href=\"https:\/\/ftp.informatik.rwth-aachen.de\/Publications\/CEUR-WS\/Vol-74\/files\/FORUM_18.pdf\">OMT: Algoritmo de carga masiva descendente que minimiza los solapamientos para el \u00e1rbol R<\/a>\u00a0(con peque\u00f1as modificaciones).<\/p>\n<h3 style=\"font-size: 17px; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">El algoritmo<\/h3>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Para quienes no deseen leer la descripci\u00f3n completa, he aqu\u00ed un breve resumen del algoritmo de inserci\u00f3n masiva. La idea b\u00e1sica es crear cl\u00fasteres a partir de toda la actualizaci\u00f3n masiva que coincidan con la estructura de \u00edndices existente en ese momento (es decir, el \u00edndice\u00a0<em style=\"font-style: italic; font-weight: inherit;\">\u00e1rbol de destino<\/em>). A continuaci\u00f3n, esos conglomerados se cargan a granel en \u00e1rboles R insert\u00e1ndolos textualmente en el \u00e1rbol de destino.<\/p>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Echemos un vistazo m\u00e1s de cerca a cada paso. El algoritmo comienza cargando en memoria los niveles superiores del \u00e1rbol de destino (como m\u00e1ximo 3, de lo contrario el consumo de memoria est\u00e1 a punto de explotar), esto es lo que se denomina\u00a0<em style=\"font-style: italic; font-weight: inherit;\">\u00e1rbol semillero<\/em>. A continuaci\u00f3n, las hojas se utilizan para realizar la agrupaci\u00f3n. Cada elemento de la inserci\u00f3n masiva se incorpora al \u00e1rbol semilla con un algoritmo similar al algoritmo normal de inserci\u00f3n de \u00e1rboles R. La diferencia es que los nuevos elementos no se escriben en disco, sino que se mantienen temporalmente en memoria mientras contin\u00faa el resto del proceso de inserci\u00f3n. La diferencia es que los nuevos elementos no se escriben en disco, sino que se mantienen temporalmente en memoria mientras contin\u00faa el resto del proceso de inserci\u00f3n masiva.<\/p>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Una vez procesados todos los elementos, comienza el recorrido del \u00e1rbol de semillas. Descendiendo en\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Depth-first_search\">profundidad primera manera<\/a>\u00a0cuando se alcanza un nodo hoja. Todos los elementos almacenados temporalmente en el nodo actual se cargan a granel en un nuevo \u00e1rbol R (el \u00e1rbol\u00a0<em style=\"font-style: italic; font-weight: inherit;\">\u00e1rbol de origen<\/em>) mediante el algoritmo OMT. Este \u00e1rbol se a\u00f1ade a los nodos hijos originales de la hoja del \u00e1rbol semilla. Pero hay un problema. Un \u00e1rbol R siempre est\u00e1 equilibrado en altura, pero la altura del \u00e1rbol de origen podr\u00eda no caber si se a\u00f1ade tal cual. B\u00e1sicamente hay tres casos:<\/p>\n<ol style=\"padding: 0px; margin: 0px 1em 0px 2em;\">\n<li style=\"list-style-type: decimal; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">El \u00e1rbol de origen encaja: El \u00e1rbol puede insertarse tal cual<\/li>\n<li style=\"list-style-type: decimal; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">El \u00e1rbol fuente es demasiado peque\u00f1o: se crea un nuevo \u00e1rbol semilla. Su nodo ra\u00edz es el nodo hoja del \u00e1rbol semillero actual. Proceder recursivamente.<\/li>\n<li style=\"list-style-type: decimal; list-style-position: outside; list-style-image: initial; padding: 0px; margin: 0px;\">El \u00e1rbol fuente es demasiado grande: utilice los nodos hijos en lugar del nodo ra\u00edz del \u00e1rbol fuente (recursivamente, baje hasta que la altura coincida).<\/li>\n<\/ol>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">El nodo ra\u00edz del \u00e1rbol de origen puede cubrir la mayor parte del \u00e1rea del nodo en el que se inserta, por lo que se realiza un reagrupamiento para mejorar el rendimiento de la consulta. Los hijos de todos los nodos que se cruzan con el nodo del \u00e1rbol de origen y los hijos del \u00e1rbol de origen se reorganizan para minimizar el \u00e1rea que cubren (se utiliza el algoritmo OMT). Una vez finalizado este proceso, los nodos reagrupados se escriben finalmente en el disco.<\/p>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Los nodos padre se escriben en disco cada vez que se completa un sub\u00e1rbol. El resultado es que el proceso de actualizaci\u00f3n masiva del \u00edndice ahorra muchas escrituras f\u00edsicas en disco en comparaci\u00f3n con la estrategia tradicional de inserci\u00f3n de un \u00fanico elemento, en la que todos los nodos padre hasta la ra\u00edz se reescriben en cada inserci\u00f3n.<\/p>\n<h3 style=\"font-size: 17px; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">Retos de la inserci\u00f3n masiva<\/h3>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Aunque los algoritmos b\u00e1sicos son sencillos, algunas personas podr\u00edan preguntarse por qu\u00e9 parte del c\u00f3digo necesario para lograrlo es tan complejo. El mayor reto es mantener la altura del \u00e1rbol R resultante equilibrada y el n\u00famero de hijos por nodo por debajo del n\u00famero m\u00e1ximo. Cuando se inserta en masa, puede haber inserciones que provoquen un desbordamiento (y, por tanto, divisiones) y esto debe llevarse a cabo recursivamente hasta la parte superior del \u00e1rbol.<\/p>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">Otro reto es rastrear en memoria la altura actual del \u00e1rbol de destino, la posici\u00f3n actual dentro del \u00e1rbol de destino\/semilla y la altura prevista del \u00e1rbol de origen que se insertar\u00e1. Esto debe hacerse de forma eficiente para evitar consumir demasiada memoria.<\/p>\n<h2 style=\"font-size: 1.7em; font-weight: bold; padding: 0px; margin: 1em 0px 1em 0px;\">Mejoras futuras<\/h2>\n<p style=\"padding: 0px; margin: 0px 0px 1em 0px;\">La inserci\u00f3n masiva actual mejora mucho el rendimiento y el tama\u00f1o de los archivos en comparaci\u00f3n con la inserci\u00f3n tradicional de un \u00fanico elemento, gracias a una combinaci\u00f3n de reconstrucci\u00f3n y equilibrado eficientes del \u00e1rbol, y a la reducci\u00f3n de las escrituras f\u00edsicas en disco. La implementaci\u00f3n a menudo necesita buscar nodos para obtener su cuadro delimitador, sin necesidad de solicitar otras cosas (como sus hijos). Los cambios en la estructura de datos actual (que son los primeros fragmentos de c\u00f3digo que se escribieron para GeoCouch) podr\u00edan reducir a\u00fan m\u00e1s las b\u00fasquedas.<\/p>","protected":false},"excerpt":{"rendered":"<p>The new release\u00a0of\u00a0GeoCouch\u00a0improves the spatial index building time a lot (up to 10x). This comes from using a new bulk insertion algorithm. The spatial index (an\u00a0R-tree) is implemented as an append-only data structure \u2014 just as CouchDB&#8217;s B-trees are \u2014 [&hellip;]<\/p>","protected":false},"author":32,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8991],"class_list":["post-1617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GeoCouch: Bulk Insertion - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.\" \/>\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\/geocouch-bulk-insertion\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GeoCouch: Bulk Insertion\" \/>\n<meta property=\"og:description\" content=\"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/geocouch-bulk-insertion\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:32:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-24T11:56:28+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=\"Volker Mische, Software Engineer, 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=\"Volker Mische, Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/\"},\"author\":{\"name\":\"Volker Mische, Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b58f2bd342f110c188a5fd7652a9154b\"},\"headline\":\"GeoCouch: Bulk Insertion\",\"datePublished\":\"2014-12-16T19:32:12+00:00\",\"dateModified\":\"2019-03-24T11:56:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/\"},\"wordCount\":1047,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/\",\"name\":\"GeoCouch: Bulk Insertion - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:32:12+00:00\",\"dateModified\":\"2019-03-24T11:56:28+00:00\",\"description\":\"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#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\/geocouch-bulk-insertion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GeoCouch: Bulk Insertion\"}]},{\"@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\/b58f2bd342f110c188a5fd7652a9154b\",\"name\":\"Volker Mische, Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b784e0ed70ddc6a966cca0cd67ea590d\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/36d6008327e7c68a3cb8b871b2232cb728b1097bce985c73052cfcc73479d576?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/36d6008327e7c68a3cb8b871b2232cb728b1097bce985c73052cfcc73479d576?s=96&d=mm&r=g\",\"caption\":\"Volker Mische, Software Engineer, Couchbase\"},\"description\":\"Volker Mische is a Software Engineer, Couchbase. He is in the view-engine team working mostly in Erlang, C\/C++ to improve the geospatial &amp; mapreduce indexing.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/volker-mische\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GeoCouch: Bulk Insertion - The Couchbase Blog","description":"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.","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\/geocouch-bulk-insertion\/","og_locale":"es_MX","og_type":"article","og_title":"GeoCouch: Bulk Insertion","og_description":"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/geocouch-bulk-insertion\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:32:12+00:00","article_modified_time":"2019-03-24T11:56:28+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":"Volker Mische, Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Volker Mische, Software Engineer, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/"},"author":{"name":"Volker Mische, Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b58f2bd342f110c188a5fd7652a9154b"},"headline":"GeoCouch: Bulk Insertion","datePublished":"2014-12-16T19:32:12+00:00","dateModified":"2019-03-24T11:56:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/"},"wordCount":1047,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/","url":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/","name":"GeoCouch: Bulk Insertion - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:32:12+00:00","dateModified":"2019-03-24T11:56:28+00:00","description":"Learn about the new release of GeoCouch improves the spatial index building time a lot (up to 10x) which comes from using a new bulk insertion algorithm.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/geocouch-bulk-insertion\/#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\/geocouch-bulk-insertion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GeoCouch: Bulk Insertion"}]},{"@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\/b58f2bd342f110c188a5fd7652a9154b","name":"Volker Mische, Ingeniero de Software, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b784e0ed70ddc6a966cca0cd67ea590d","url":"https:\/\/secure.gravatar.com\/avatar\/36d6008327e7c68a3cb8b871b2232cb728b1097bce985c73052cfcc73479d576?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36d6008327e7c68a3cb8b871b2232cb728b1097bce985c73052cfcc73479d576?s=96&d=mm&r=g","caption":"Volker Mische, Software Engineer, Couchbase"},"description":"Volker Mische es ingeniero de software en Couchbase. Est\u00e1 en el equipo de view-engine trabajando principalmente en Erlang, C\/C++ para mejorar la indexaci\u00f3n geoespacial y mapreduce.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/volker-mische\/"}]}},"authors":[{"term_id":8991,"user_id":32,"is_guest":0,"slug":"volker-mische","display_name":"Volker Mische, Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/36d6008327e7c68a3cb8b871b2232cb728b1097bce985c73052cfcc73479d576?s=96&d=mm&r=g","author_category":"","last_name":"Mische","first_name":"Volker","job_title":"","user_url":"","description":"Volker Mische es ingeniero de software en Couchbase. Est\u00e1 en el equipo de view-engine trabajando principalmente en Erlang, C\/C++ para mejorar la indexaci\u00f3n geoespacial y mapreduce."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1617","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\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1617"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1617\/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=1617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1617"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}