{"id":12435,"date":"2021-12-14T11:00:16","date_gmt":"2021-12-14T19:00:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12435"},"modified":"2023-05-26T13:31:24","modified_gmt":"2023-05-26T20:31:24","slug":"support-for-concurrent-index-creation-in-indexing-service","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/support-for-concurrent-index-creation-in-indexing-service\/","title":{"rendered":"Soporte para la creaci\u00f3n concurrente de \u00edndices en el servicio de indexaci\u00f3n"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Las aplicaciones modernas se implementan como un conjunto de un gran n\u00famero de microservicios. Cada uno de estos microservicios puede ejecutarse independientemente de muchos otros microservicios. Tales aplicaciones esperan que las bases de datos subyacentes soporten multi-tenancy. Couchbase Server 7.0 ha introducido <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/\"><span style=\"font-weight: 400\">\u00c1mbitos y colecciones<\/span><\/a><span style=\"font-weight: 400\"> para soportar la multitenencia y <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/indexing-service-optimizations-with-couchbase-collections\/\"><span style=\"font-weight: 400\">facilitar el modelado de datos<\/span><\/a><span style=\"font-weight: 400\"> para las aplicaciones actuales. Los \u00e1mbitos y las colecciones proporcionan a los usuarios una separaci\u00f3n l\u00f3gica de los datos dentro de un cubo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Cada microservicio de una aplicaci\u00f3n puede ahora crear independientemente \u00cdndices Secundarios Globales necesarios para ese microservicio. En versiones anteriores de Couchbase Server s\u00f3lo se permit\u00eda una solicitud de creaci\u00f3n de \u00edndice en el cl\u00faster. Para reforzar el soporte para multi-tenancy, en Couchbase Server 7.0, el flujo de trabajo de creaci\u00f3n de \u00edndices ha sido mejorado para permitir m\u00faltiples peticiones de creaci\u00f3n de \u00edndices concurrentes. En este blog, vamos a discutir <\/span><i><span style=\"font-weight: 400\">c\u00f3mo se ha mejorado la experiencia del usuario al crear varios \u00edndices simult\u00e1neamente.<\/span><\/i><\/p>\n<h2><span style=\"font-weight: 400\">Flujo de trabajo de creaci\u00f3n de \u00edndices mejorado<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Entendamos primero el flujo de trabajo de creaci\u00f3n de \u00edndices en un cluster Couchbase. <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\"><span style=\"font-weight: 400\">Creaci\u00f3n de \u00edndices<\/span><\/a><span style=\"font-weight: 400\"> ocurre en dos fases (1) Creaci\u00f3n de metadatos del \u00edndice y (2) Construcci\u00f3n del \u00edndice. En la primera fase, el servicio de \u00edndices de Couchbase determina la mejor ubicaci\u00f3n posible para el nuevo \u00edndice, con la ayuda de <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/index-planner-for-global-secondary-indexes\/\"><span style=\"font-weight: 400\">planificador de \u00edndices<\/span><\/a><span style=\"font-weight: 400\">y se conservan los metadatos del \u00edndice. En la segunda fase, los nodos anfitriones determinados en la primera fase iniciar\u00e1n un flujo con el servicio de datos para la \"construcci\u00f3n del \u00edndice\". Los usuarios pueden especificar el <em>aplazar_construcci\u00f3n<\/em> durante la creaci\u00f3n del \u00edndice para que s\u00f3lo se ejecute la primera fase y la segunda pueda activarse posteriormente mediante la opci\u00f3n <\/span><em><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/build-index.html\"><span style=\"font-weight: 400\">construir \u00edndice<\/span><\/a><\/em><span style=\"font-weight: 400\"> mando.<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">En las secciones siguientes, el significado de <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">creaci\u00f3n de \u00edndices<\/a> se limita s\u00f3lo a la primera fase.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Para conseguir la mejor colocaci\u00f3n de \u00edndices posible, s\u00f3lo debe ejecutarse una instancia del planificador de \u00edndices a la vez. Por lo tanto, el servicio de \u00edndice - que ejecuta versiones anteriores del servidor Couchbase - rechaza cualquier nueva solicitud de creaci\u00f3n de \u00edndice entrante si hay una solicitud de creaci\u00f3n de \u00edndice en curso. <\/span><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12440 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/IndexCreation6.png\" alt=\"\" width=\"580\" height=\"360\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation6.png 580w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation6-300x186.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation6-20x12.png 20w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Este comportamiento ha sido mejorado en Couchbase Server 7.0, donde el servicio de \u00edndice acepta todas las peticiones entrantes de creaci\u00f3n de \u00edndice, incluso si hay una creaci\u00f3n de \u00edndice en curso. <\/span><b>El servicio de \u00edndices pone en cola las solicitudes de creaci\u00f3n de \u00edndices, procesa las solicitudes en cola en segundo plano y s\u00f3lo despu\u00e9s de crear el \u00edndice devuelve la respuesta a la persona que lo solicita.<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12439 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/IndexCreation7.png\" alt=\"\" width=\"606\" height=\"392\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation7.png 606w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation7-300x194.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreation7-20x13.png 20w\" sizes=\"auto, (max-width: 606px) 100vw, 606px\" \/><\/p>\n<p><i><span style=\"font-weight: 400\">Tenga en cuenta que la creaci\u00f3n de \u00edndices era una solicitud de bloqueo antes de Couchbase Server 7.0 y sigue siendo de bloqueo en las nuevas versiones tambi\u00e9n.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Los usuarios pueden supervisar los \u00edndices que est\u00e1n en cola para su creaci\u00f3n en segundo plano a trav\u00e9s de la interfaz web, como se muestra en la siguiente captura de pantalla. Tenga en cuenta que el \u00edndice <em>estado<\/em> es <em>creaci\u00f3n programada<\/em>.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12441 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/ScheduledIndexes_UI-cropped.png\" alt=\"\" width=\"3352\" height=\"1514\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped.png 3352w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-300x136.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-1024x463.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-768x347.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-1536x694.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-2048x925.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_UI-cropped-1320x596.png 1320w\" sizes=\"auto, (max-width: 3352px) 100vw, 3352px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Los usuarios tambi\u00e9n pueden supervisar el estado del \u00edndice mediante programaci\u00f3n utilizando N1QL, como se muestra en la siguiente captura de pantalla.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12442 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/ScheduledIndexes_n1ql-cropped.png\" alt=\"\" width=\"2598\" height=\"1629\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped.png 2598w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-300x188.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-1024x642.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-768x482.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-1536x963.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-2048x1284.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/ScheduledIndexes_n1ql-cropped-1320x828.png 1320w\" sizes=\"auto, (max-width: 2598px) 100vw, 2598px\" \/><\/p>\n<h2><span style=\"font-weight: 400\">Experiencia de usuario mejorada<\/span><\/h2>\n<p><span style=\"font-weight: 400\">En las versiones anteriores, los usuarios ten\u00edan que reintentar la creaci\u00f3n del \u00edndice cuando hab\u00eda otro \u00edndice en curso de creaci\u00f3n. Si la creaci\u00f3n del \u00edndice se realiza mediante programaci\u00f3n, el programa necesita un mecanismo de reintento. Con Couchbase server 7.0, el programa de usuario no necesita confiar en el mecanismo de reintento mientras se crea un \u00edndice, ya que el servicio de \u00edndices realizar\u00e1 los reintentos necesarios en segundo plano. N\u00f3tese que el servicio de \u00edndices no s\u00f3lo realiza \"simples reintentos\". Internamente prioriza las peticiones bas\u00e1ndose en la marca de tiempo de la petici\u00f3n para que la convergencia de las peticiones de creaci\u00f3n de \u00edndices sea m\u00e1s r\u00e1pida y mucho m\u00e1s fiable.<\/span><\/p>\n<p><span style=\"font-weight: 400\">El servicio de \u00edndices serializa las creaciones de \u00edndices en el cl\u00faster con la ayuda de un mecanismo de bloqueo distribuido globalmente. As\u00ed, para la creaci\u00f3n de un \u00edndice, todos los nodos del servicio de \u00edndices necesitan alcanzar un consenso antes de permitir la creaci\u00f3n del \u00edndice.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Veamos ahora el siguiente escenario\/ejemplo para comprender c\u00f3mo se mejora la convergencia con la participaci\u00f3n del servicio de \u00edndices.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Supongamos que dos aplicaciones de usuario (o microservicios) intentan crear \u00edndices de forma concurrente. Las dos aplicaciones pueden conectarse a dos nodos de servicio de consulta diferentes para la creaci\u00f3n de \u00edndices. El nodo de servicio de consulta ejecuta un cliente de servicio de \u00edndice que es responsable de adquirir el bloqueo distribuido globalmente y determinar la colocaci\u00f3n del \u00edndice ejecutando el planificador de \u00edndices. <\/span><\/p>\n<h3>Cronolog\u00eda de la creaci\u00f3n de \u00edndices en la versi\u00f3n pre-7.0 de Couchbase<\/h3>\n<p><span style=\"font-weight: 400\">Consideremos una posible l\u00ednea de tiempo de los eventos que ocurren en el cluster (con Couchbase Server versi\u00f3n &lt; 7.0) como se muestra en el diagrama de abajo.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12444 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/IndexCreationRaceCondition1.png\" alt=\"\" width=\"774\" height=\"360\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceCondition1.png 774w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceCondition1-300x140.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceCondition1-768x357.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceCondition1-20x9.png 20w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><\/p>\n<p><b>Calendario:<\/b><\/p>\n<p><b>T0:<\/b> <span style=\"font-weight: 400\">Ambas aplicaciones lanzan peticiones de creaci\u00f3n de \u00edndices simult\u00e1neamente y las peticiones son recibidas por los clientes del servicio de \u00edndices.<\/span><\/p>\n<p><b>T1:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 1 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> al nodo \u00edndice 1. Nodo \u00edndice 1 <\/span><b>acepta<\/b><span style=\"font-weight: 400\"> la solicitud.<\/span><\/p>\n<p><b>T2:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 2 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> al nodo \u00edndice 2. Nodo \u00edndice 2 <\/span><b>acepta<\/b><span style=\"font-weight: 400\"> la solicitud.<\/span><\/p>\n<p><b>T3:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 1 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> al nodo \u00edndice 2. Nodo \u00edndice 2 <\/span><b>rechaza<\/b><span style=\"font-weight: 400\"> la solicitud puesto que ya ha aceptado la solicitud del cliente 2.<\/span><\/p>\n<p><b>T4:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 2 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> al nodo \u00edndice 1. Nodo \u00edndice 1 <\/span><b>rechaza<\/b><span style=\"font-weight: 400\"> la solicitud puesto que ya ha aceptado la solicitud del cliente 1.<\/span><\/p>\n<p><span style=\"font-weight: 400\">N\u00f3tese que en este ejemplo, en Couchbase Server versi\u00f3n &lt; 7.0, ambas peticiones ser\u00e1n rechazadas por Couchbase y los scripts de usuario necesitar\u00e1n reintentarlo. Si los scripts de usuario reintentan inmediatamente o despu\u00e9s de un periodo de tiempo determinado, el siguiente intento puede llevar a un escenario\/tiempo similar y ambas peticiones pueden ser rechazadas en el siguiente intento.<\/span><\/p>\n<h3>Cola de creaci\u00f3n de \u00edndices con Couchbase 7.0<\/h3>\n<p><span style=\"font-weight: 400\">Con Couchbase Server 7.0 el comportamiento mejorado, y una l\u00ednea de tiempo similar a nuestro ejemplo, se muestra en el diagrama de abajo. Observa que la responsabilidad de crear un \u00edndice es asumida por los creadores de \u00edndices en segundo plano, mientras que el hilo de la aplicaci\u00f3n de usuario sigue esperando a que termine la creaci\u00f3n del \u00edndice. El hilo de usuario obtendr\u00e1 una respuesta s\u00f3lo cuando se haya creado el \u00edndice.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12443 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/IndexCreationRaceConditionFix1.png\" alt=\"\" width=\"878\" height=\"352\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceConditionFix1.png 878w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceConditionFix1-300x120.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceConditionFix1-768x308.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/IndexCreationRaceConditionFix1-20x8.png 20w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/p>\n<p><b>Calendario:<\/b><\/p>\n<p><b>T0:<\/b> <span style=\"font-weight: 400\">Dos hilos creadores de \u00edndices en segundo plano activan la creaci\u00f3n de \u00edndices simult\u00e1neamente y las solicitudes son recibidas por los clientes del servicio de \u00edndices.<\/span><\/p>\n<p><b>T1:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 1 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> (con prioridad P1) al nodo de \u00edndice 1. Nodo \u00edndice 1 <\/span><b>acepta<\/b><span style=\"font-weight: 400\"> la solicitud.<\/span><\/p>\n<p><b>T2:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 2 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> (con prioridad P2) al nodo de \u00edndice 2. Nodo \u00edndice 2 <\/span><b>acepta<\/b><span style=\"font-weight: 400\"> la solicitud.<\/span><\/p>\n<p><b>T3:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 1 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> (con prioridad P1) al nodo de \u00edndice 2. Nodo \u00edndice 2 <\/span><b>acepta<\/b><span style=\"font-weight: 400\"> la solicitud, ya que tiene mayor prioridad que la solicitud aceptada anteriormente.<\/span><\/p>\n<p><b>T4:<\/b> <span style=\"font-weight: 400\">El cliente de servicio de \u00edndice 2 env\u00eda el <\/span><i><span style=\"font-weight: 400\">Cerradura<\/span><\/i><span style=\"font-weight: 400\"> (con prioridad P2) al nodo de \u00edndice 1. Nodo \u00edndice 1 <\/span><b>rechaza<\/b><span style=\"font-weight: 400\"> la solicitud porque ya ha aceptado la solicitud con mayor prioridad del cliente 2.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tenga en cuenta que el mecanismo de bloqueo distribuido utiliza un <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Two-phase_commit_protocol\"><span style=\"font-weight: 400\">protocolo de confirmaci\u00f3n en dos fases<\/span><\/a><span style=\"font-weight: 400\"> de modo que la solicitud previamente aceptada (con prioridad P2) en el nodo de \u00edndice 2 fallar\u00e1 durante la fase de confirmaci\u00f3n y ser\u00e1 reintentada por el creador del \u00edndice en segundo plano.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tambi\u00e9n hay que tener en cuenta que las prioridades de las peticiones se basan en marcas de tiempo generadas con una granularidad de nanosegundos. Esto elimina la mayor parte de la contenci\u00f3n de bloqueos distribuidos. Sin embargo, existe la posibilidad de que dos solicitudes tengan exactamente la misma marca de tiempo. Para manejar este caso, el servicio de \u00edndice utiliza un backoff aleatorio para reducir a\u00fan m\u00e1s la contenci\u00f3n de bloqueo distribuido.\u00a0<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Modern applications are implemented as a set of a large number of microservices. Each such microservice may run independently of many other microservices. Such applications expect underlying databases to support multi-tenancy. Couchbase Server 7.0 has introduced Scopes and Collections to [&hellip;]<\/p>","protected":false},"author":49228,"featured_media":12579,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1821,8905,1816,2453,9381,9336],"tags":[8907,9197,1696,2103,9349,1641],"ppma_author":[9101],"class_list":["post-12435","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-couchbase-architecture","category-couchbase-global-secondary-index","category-couchbase-server","category-global-secondary-index","category-indexing","category-scopes-and-collections","tag-couchbase-server-7-0","tag-distributed-databases","tag-indexing","tag-microservices","tag-multi-tenancy","tag-secondary-indexing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Support for Concurrent Index Creation in Indexing Service - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"In this blog, we will discuss how the user experience of creating multiple indexes concurrently has been improved.\" \/>\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\/support-for-concurrent-index-creation-in-indexing-service\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Support for Concurrent Index Creation in Indexing Service\" \/>\n<meta property=\"og:description\" content=\"In this blog, we will discuss how the user experience of creating multiple indexes concurrently has been improved.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/support-for-concurrent-index-creation-in-indexing-service\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-14T19:00:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-26T20:31:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Amit Kulkarni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Amit Kulkarni\" \/>\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\/support-for-concurrent-index-creation-in-indexing-service\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/\"},\"author\":{\"name\":\"Amit Kulkarni\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/76beaf20748818542ed2b7a6bfcd524c\"},\"headline\":\"Support for Concurrent Index Creation in Indexing Service\",\"datePublished\":\"2021-12-14T19:00:16+00:00\",\"dateModified\":\"2023-05-26T20:31:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/\"},\"wordCount\":1131,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg\",\"keywords\":[\"Couchbase Server 7.0\",\"distributed databases\",\"Indexing\",\"microservices\",\"multi-tenancy\",\"Secondary Indexing\"],\"articleSection\":[\"Application Design\",\"Couchbase Architecture\",\"Couchbase Global Secondary Index\",\"Couchbase Server\",\"Global Secondary Index\",\"Indexing\",\"Scopes and Collections\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/\",\"name\":\"Support for Concurrent Index Creation in Indexing Service - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg\",\"datePublished\":\"2021-12-14T19:00:16+00:00\",\"dateModified\":\"2023-05-26T20:31:24+00:00\",\"description\":\"In this blog, we will discuss how the user experience of creating multiple indexes concurrently has been improved.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Support for Concurrent Index Creation in Indexing Service\"}]},{\"@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\/76beaf20748818542ed2b7a6bfcd524c\",\"name\":\"Amit Kulkarni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9b381fdec8caa95228a24342f1abbbbc\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g\",\"caption\":\"Amit Kulkarni\"},\"description\":\"Amit Kulkarni is working as a Engineering Manager at Couchbase on Global Secondary Indexes. He has experience in working on technologies like Distributed Systems, Distributed NoSQL Databases, Cloud Storage, Storage Virtualisation etc.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/amit-kulkarni\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Support for Concurrent Index Creation in Indexing Service - The Couchbase Blog","description":"En este blog, hablaremos de c\u00f3mo se ha mejorado la experiencia del usuario a la hora de crear varios \u00edndices simult\u00e1neamente.","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\/support-for-concurrent-index-creation-in-indexing-service\/","og_locale":"es_MX","og_type":"article","og_title":"Support for Concurrent Index Creation in Indexing Service","og_description":"In this blog, we will discuss how the user experience of creating multiple indexes concurrently has been improved.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/support-for-concurrent-index-creation-in-indexing-service\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-12-14T19:00:16+00:00","article_modified_time":"2023-05-26T20:31:24+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg","type":"image\/jpeg"}],"author":"Amit Kulkarni","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Amit Kulkarni","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/"},"author":{"name":"Amit Kulkarni","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/76beaf20748818542ed2b7a6bfcd524c"},"headline":"Support for Concurrent Index Creation in Indexing Service","datePublished":"2021-12-14T19:00:16+00:00","dateModified":"2023-05-26T20:31:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/"},"wordCount":1131,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg","keywords":["Couchbase Server 7.0","distributed databases","Indexing","microservices","multi-tenancy","Secondary Indexing"],"articleSection":["Application Design","Couchbase Architecture","Couchbase Global Secondary Index","Couchbase Server","Global Secondary Index","Indexing","Scopes and Collections"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/","url":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/","name":"Support for Concurrent Index Creation in Indexing Service - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg","datePublished":"2021-12-14T19:00:16+00:00","dateModified":"2023-05-26T20:31:24+00:00","description":"En este blog, hablaremos de c\u00f3mo se ha mejorado la experiencia del usuario a la hora de crear varios \u00edndices simult\u00e1neamente.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/charles-deluvio-Lks7vei-eAg-unsplash-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/support-for-concurrent-index-creation-in-indexing-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Support for Concurrent Index Creation in Indexing Service"}]},{"@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\/76beaf20748818542ed2b7a6bfcd524c","name":"Amit Kulkarni","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9b381fdec8caa95228a24342f1abbbbc","url":"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g","caption":"Amit Kulkarni"},"description":"Amit Kulkarni trabaja como Director de Ingenier\u00eda en Couchbase en \u00cdndices Secundarios Globales. Tiene experiencia en tecnolog\u00edas como sistemas distribuidos, bases de datos NoSQL distribuidas, almacenamiento en la nube, virtualizaci\u00f3n del almacenamiento, etc.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/amit-kulkarni\/"}]}},"authors":[{"term_id":9101,"user_id":49228,"is_guest":0,"slug":"amit-kulkarni","display_name":"Amit Kulkarni","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g","author_category":"","last_name":"Kulkarni","first_name":"Amit","job_title":"","user_url":"","description":"Amit Kulkarni trabaja como Director de Ingenier\u00eda en Couchbase en \u00cdndices Secundarios Globales. Tiene experiencia en tecnolog\u00edas como sistemas distribuidos, bases de datos NoSQL distribuidas, almacenamiento en la nube, virtualizaci\u00f3n del almacenamiento, etc."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12435","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\/49228"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12435"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12435\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/12579"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12435"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}