{"id":8023,"date":"2020-01-05T21:41:04","date_gmt":"2020-01-06T05:41:04","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8023"},"modified":"2025-06-13T19:27:30","modified_gmt":"2025-06-14T02:27:30","slug":"index-planner-for-global-secondary-indexes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/index-planner-for-global-secondary-indexes\/","title":{"rendered":"Planificador de \u00edndices secundarios globales"},"content":{"rendered":"<p style=\"text-align: left\"><span style=\"font-weight: 400\">Un aspecto integral de cualquier sistema distribuido es proporcionar sin problemas alta disponibilidad (HA) y capacidades de equilibrio de carga a su usuario. Sin apenas intervenci\u00f3n del usuario, los \u00edndices secundarios globales de Couhbase<sup>1<\/sup><\/span><span style=\"font-weight: 400\">\u00a0(GSI) proporciona a sus usuarios tanto HA como equilibrio de carga dentro de un cl\u00faster couchbase.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Qu\u00e9 es Index Planner<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Index Planner es una librer\u00eda utilizada por el servicio de indexaci\u00f3n de Couchbase para determinar la colocaci\u00f3n \u00f3ptima de los \u00edndices. Proporciona soporte para la colocaci\u00f3n de \u00edndices HA-aware y balanceo de carga para el servicio de indexaci\u00f3n Couchbase. El planificador de \u00edndices se utiliza para decidir la ubicaci\u00f3n \u00f3ptima de los \u00edndices en dos casos de uso, (1) <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\"><span style=\"font-weight: 400\">Creaci\u00f3n de nuevos \u00edndices<\/span><\/a><span style=\"font-weight: 400\"> y (2) <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/learn\/clusters-and-availability\/rebalance.html#rebalancing-the-index-service\"><span style=\"font-weight: 400\">Reequilibrio del Servicio de \u00cdndices<\/span><\/a><span style=\"font-weight: 400\"> es decir, cuando se a\u00f1aden o eliminan nodos indexadores del cl\u00faster.<sup>2<\/sup><\/span><span style=\"font-weight: 400\">.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">C\u00f3mo funciona Index Planner<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Dado un conjunto de \"nodos\" que alojan el servicio de indexaci\u00f3n de Couchbase (pueden tener diferentes configuraciones de hardware), y un conjunto de \u00edndices con sus propios \"par\u00e1metros de carga\", Index Planner proporciona al usuario la colocaci\u00f3n \u00f3ptima<sup>3<\/sup><\/span><span style=\"font-weight: 400\"> de estos \u00edndices en estos nodos indexadores. Colocar de forma \u00f3ptima cientos de \u00edndices -con diferentes valores de los par\u00e1metros de carga- en decenas de nodos indexadores requiere explorar un espacio de soluciones muy amplio. Por tanto, encontrar \"la\" soluci\u00f3n \u00f3ptima de forma determinista requiere un tiempo exponencial. Por lo tanto, en lugar de encontrar \"la\" soluci\u00f3n \u00f3ptima, Index Planner utiliza m\u00e9todos probabil\u00edsticos. <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Simulated_annealing\"><span style=\"font-weight: 400\">recocido simulado<\/span><\/a><span style=\"font-weight: 400\"> para encontrar una soluci\u00f3n globalmente \u00f3ptima aproximada. Experimentalmente, se ha demostrado que el recocido simulado da buenos resultados para el algoritmo de colocaci\u00f3n de \u00edndices del servidor couchbase.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Los par\u00e1metros de carga que tiene en cuenta el Planificador de \u00cdndices son (1) el tama\u00f1o del \u00edndice (2) la huella de memoria del \u00edndice (3) la tasa de escaneado del \u00edndice (4) la tasa de ingesti\u00f3n de datos del \u00edndice, etc., por nombrar s\u00f3lo algunos. Todos estos par\u00e1metros de carga ayudan al Planificador de \u00cdndices a calcular la carga generada por cada \u00edndice y, a su vez, a calcular la carga que supone para cada nodo indexador la colocaci\u00f3n de un \u00edndice espec\u00edfico. En el momento de <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">creaci\u00f3n de \u00edndices<\/a>Los valores reales de los par\u00e1metros de carga son desconocidos. Por lo tanto, a efectos de la creaci\u00f3n de \u00edndices, el Planificador de \u00edndices se ejecuta con \"valores estimados\" de estos par\u00e1metros de carga. Durante el reequilibrio, el Planificador de \u00edndices obtiene los valores de estos par\u00e1metros de carga del <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/rest-api\/rest-index-stats.html\"><span style=\"font-weight: 400\">\u00edndice de estad\u00edsticas<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Ejemplo 1:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Consideremos un cluster Couchbase con 3 nodos indexadores id\u00e9nticos - \"Nodo 1\", \"Nodo 2\" y <\/span><span style=\"font-weight: 400\">\"Nodo 3\". Supongamos que los nodos Nodo 1 y Nodo 2 ya alojan 1 \u00edndice cada uno - index1 e index2 respectivamente. Si el usuario a\u00f1ade un nuevo \u00edndice \"index3\", bas\u00e1ndose en la distribuci\u00f3n de carga actual, Index Planner colocar\u00e1 el nuevo \u00edndice en el Nodo 3.<\/span><\/p>\n<p style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8025\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/01\/Index-Planner-Blog_-Example-1-300x111.png\" alt=\"Index Planner for Global Secondary Indexes: Example 1\" width=\"884\" height=\"327\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-1-300x111.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-1-768x283.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-1-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-1.png 959w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">De este modo, el planificador de \u00edndices se encarga de distribuir los \u00edndices entre todos los nodos de \u00edndice disponibles en el cl\u00faster. Para proporcionar m\u00e1s capacidades de equilibrio de carga y proporcionar HA, el servicio de indexaci\u00f3n permite a los usuarios crear r\u00e9plicas de \u00edndices. En las siguientes secciones hablaremos de las r\u00e9plicas de \u00edndices.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Planificador de \u00edndices para la colocaci\u00f3n de r\u00e9plicas de \u00edndices<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Para una alta disponibilidad, se aconseja siempre a los usuarios que creen uno o varios <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/index-replication.html\"><span style=\"font-weight: 400\">r\u00e9plicas de \u00edndices<\/span><\/a><span style=\"font-weight: 400\"> (en funci\u00f3n de sus requisitos de HA). El servicio de indexaci\u00f3n de Couchbase implementa la pol\u00edtica de r\u00e9plica maestro-maestro. As\u00ed, todas las r\u00e9plicas del cluster pueden servir consultas entrantes<sup>4<\/sup><\/span><span style=\"font-weight: 400\">. El servicio de indexaci\u00f3n de Couchbase se asegura de que las peticiones de escaneo se distribuyan uniformemente entre todas las r\u00e9plicas del \u00edndice.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Index Planner \"siempre\" se asegura de que las r\u00e9plicas del mismo \u00edndice se coloquen en diferentes nodos indexadores. Esto proporciona a los usuarios una alta disponibilidad.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Ejemplo 2:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">En el mismo cluster del Ejemplo 1, supongamos que los nodos Nodo 1 y Nodo 2 ya alojan 2 r\u00e9plicas de \u00edndice cada uno, y que el Nodo 3 no aloja ninguna r\u00e9plica de \u00edndice<sup>5<\/sup><\/span><span style=\"font-weight: 400\">. As\u00ed, si el usuario a\u00f1ade un nuevo \u00edndice \"index3\" con dos r\u00e9plicas (r\u00e9plica0 y r\u00e9plica1), bas\u00e1ndose en la distribuci\u00f3n de carga actual, Index Planner colocar\u00e1 una de las r\u00e9plicas del nuevo \u00edndice en el nodo Nodo 3, pero la segunda r\u00e9plica NO se colocar\u00e1 en el Nodo 3 - incluso si esto significa una distribuci\u00f3n de carga relativamente desigual entre los nodos.<\/span><\/p>\n<p style=\"text-align: left\"><em><span style=\"font-weight: 400\">Notas: Cada r\u00e9plica de \u00edndice se identifica por su id (es decir, replicaId) que empieza por cero. Adem\u00e1s, el usuario puede especificar el n\u00famero necesario de r\u00e9plicas en el momento de la creaci\u00f3n del \u00edndice utilizando el par\u00e1metro \"num_replica\", donde \"num_replica\" = 1 significa que se crear\u00e1n un total de 2 instancias de \u00edndice (con replicaId 0 y replicaId 1).<\/span><\/em><\/p>\n<p style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8026\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/01\/Index-Planner-Blog_-Example-2-300x146.png\" alt=\"Index Planner for Global Secondary Indexes: Example 2\" width=\"884\" height=\"430\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-2-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-2-768x374.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-2-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-2.png 960w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Planificador de \u00edndices para el conocimiento de las zonas de estanter\u00edas<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">El gestor de cl\u00fasteres de Couchbase ofrece a los usuarios la posibilidad de agrupar los nodos del cl\u00faster para formar <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/manage-groups\/manage-groups.html\"><span style=\"font-weight: 400\">Grupos de servidores<\/span><\/a><span style=\"font-weight: 400\">. Cada grupo de servidores puede asignarse a una zona de conmutaci\u00f3n por error en el centro de datos.  Por ejemplo, todos los nodos de un \u00fanico \"rack\" del centro de datos pueden pertenecer a un \u00fanico grupo de servidores.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Index Planner es \"rack zone aware\" y siempre coloca las r\u00e9plicas de un mismo \u00edndice en diferentes grupos de servidores. Si el n\u00famero de grupos de servidores es inferior al n\u00famero de r\u00e9plicas, los grupos de servidores pueden alojar m\u00e1s de 1 r\u00e9plica.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Ejemplo 3:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Consideremos un cluster Couchbase con 4 nodos indexadores id\u00e9nticos - \"Nodo 1\", \"Nodo 2\", \"Nodo 3\" y \"Nodo 4\". El Nodo 1 y el Nodo 2 pertenecen al \"Grupo de Servidores 1\" y el Nodo 3 y el Nodo 4 pertenecen al \"Grupo de Servidores 2\". Supongamos que los nodos Nodo 1 y Nodo 2 ya alojan 1 \u00edndice cada uno: \u00edndice1 - r\u00e9plica0 e \u00edndice2 - r\u00e9plica0 respectivamente. Ahora, si el usuario a\u00f1ade un nuevo \u00edndice \"index3\" con 2 r\u00e9plicas (r\u00e9plica0 y r\u00e9plica1) al cluster. Entonces, Index Planner a\u00f1adir\u00e1 una r\u00e9plica al Nodo 3 o Nodo 4 para distribuir la carga. Pero, la segunda r\u00e9plica tiene que ir al Grupo de Servidores 1, porque el Nodo 3 o Nodo 4 - perteneciente al Grupo de Servidores 1 - ya est\u00e1 alojando una r\u00e9plica. Index Planner toma esta decisi\u00f3n aunque suponga una distribuci\u00f3n de la carga relativamente desigual entre varios nodos.<\/span><\/p>\n<p style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8027\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/01\/Index-Planner-Blog_-Example-3-300x146.png\" alt=\"Index Planner for Global Secondary Indexes: Example 3\" width=\"884\" height=\"430\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-3-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-3-768x374.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-3-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-3.png 960w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Planificador de \u00edndices para la distribuci\u00f3n de particiones de \u00edndices<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Los usuarios de Couchbase pueden crear <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/n1ql\/n1ql-language-reference\/index-partitioning.html\"><span style=\"font-weight: 400\">\u00edndice particionado<\/span><\/a><span style=\"font-weight: 400\"> para obtener una mejor distribuci\u00f3n de la carga -con respecto a la construcci\u00f3n del \u00edndice- y para obtener resultados de escaneo m\u00e1s r\u00e1pidos para \u00edndices grandes. Con la ayuda de un \u00edndice particionado, los datos del \u00edndice se distribuir\u00e1n entre varias particiones en funci\u00f3n del valor hash de la clave de partici\u00f3n. El planificador de \u00edndices es consciente de las particiones y puede distribuir las particiones de \u00edndices entre varios nodos indexadores, bas\u00e1ndose en la carga de creaci\u00f3n de \u00edndices y en la carga de escaneado de \u00edndices.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">El planificador de \u00edndices distribuye las particiones de un \u00edndice entre tantos nodos indexadores como sea posible. Esto es \u00fatil para distribuir la carga de escaneo del \u00edndice as\u00ed como la carga de construcci\u00f3n del \u00edndice entre esos nodos indizadores. Sin embargo, Index Planner no garantiza una distribuci\u00f3n uniforme de las particiones entre todos los nodos indexadores disponibles. Esto ayuda a los usuarios a conseguir una mejor distribuci\u00f3n de la carga total en el cluster, cuando hay m\u00faltiples \u00edndices particionados y no particionados con diferentes \"par\u00e1metros de carga\".\u00a0<\/span><\/p>\n<p style=\"text-align: left\"><b>Ejemplo 4:<\/b><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Consideremos un cluster Couchbase con 4 nodos indexadores id\u00e9nticos - \"Nodo 1\", \"Nodo 2\", \"Nodo 3\" y \"Nodo 4\". Supongamos que los nodos \"Nodo 1\" ya alojan 2 \u00edndices no particionados. Ahora, si el usuario a\u00f1ade un \u00edndice particionado<sup>6<\/sup><\/span><span style=\"font-weight: 400\"> \"index3\" (con 4 particiones), Planificador de \u00edndices <\/span><b>mayo<\/b><span style=\"font-weight: 400\"> distribuir las 4 particiones del nuevo \u00edndice s\u00f3lo entre el Nodo 2, Nodo 3 y Nodo 4. Esto garantizar\u00e1 una mejor distribuci\u00f3n general de la carga en el cl\u00faster.<\/span><\/p>\n<p style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8028\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/01\/Index-Planner-Blog_-Example-4-300x146.png\" alt=\"Index Planner for Global Secondary Indexes: Example 4\" width=\"884\" height=\"430\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-4-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-4-768x374.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-4-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/01\/Index-Planner-Blog_-Example-4.png 960w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Los \u00edndices particionados pueden tener r\u00e9plicas. Cada partici\u00f3n de un \u00edndice tiene su propio conjunto de r\u00e9plicas de partici\u00f3n. Index Planner se asegura de que las r\u00e9plicas de partici\u00f3n tambi\u00e9n se distribuyan entre los nodos indexadores y entre diferentes grupos de servidores para garantizar la distribuci\u00f3n de carga necesaria y una alta disponibilidad.<\/span><\/p>\n<p style=\"text-align: left\"><i><span style=\"font-weight: 400\">En la siguiente parte de este blog, vamos a discutir c\u00f3mo couchbase servicio de indexaci\u00f3n utiliza Index Planner para diversos casos de uso.<\/span><\/i><\/p>\n<hr \/>\n<p style=\"text-align: left\"><span style=\"font-weight: 300\"><sup>1<\/sup> En este blogpost, el t\u00e9rmino \"\u00edndice\" se utilizar\u00e1 s\u00f3lo para los \u00cdndices Secundarios Globales de Couchbase.<br \/>\n<sup>2<\/sup> Los \u00edndices que residen en los nodos no eliminados del cl\u00faster no se ven afectados por el reequilibrio.<br \/>\n<sup>3<\/sup> Una colocaci\u00f3n \u00f3ptima significa la mejor distribuci\u00f3n posible de la carga que cumpla todos los requisitos de HA.<br \/>\n<sup>4<\/sup> Las r\u00e9plicas del \u00cdndice Secundario Global se construyen y mantienen de forma completamente independiente. Las consultas entrantes - servidas por estas r\u00e9plicas - se adhieren al Couchbase GSI <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/learn\/services-and-indexes\/indexes\/index-replication.html#index-consistency\">modelo de coherencia<\/a>.<br \/>\n<sup>5<\/sup> Los usuarios pueden acabar con este tipo de distribuci\u00f3n de \u00edndices cuando empiezan con dos nodos en el cl\u00faster, crean \u00edndices con 2 r\u00e9plicas cada uno y luego a\u00f1aden un tercer nodo al cl\u00faster.<br \/>\n<sup>6<\/sup> Para los \u00edndices particionados, los identificadores de partici\u00f3n empiezan por 1. El identificador de partici\u00f3n 0 se utiliza para los \u00edndices no particionados.<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Integral aspect of any distributed system is to seamlessly provide high availability (HA) and load balancing capabilities to its user. With little to no input from user, Couhbase\u2019s Global Secondary Indexes1\u00a0(GSI) provides its users with both &#8211; HA and Load [&hellip;]<\/p>","protected":false},"author":49228,"featured_media":2653,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[1505],"ppma_author":[9101],"class_list":["post-8023","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","tag-index"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Server - Index Planner for Global Secondary Indexes<\/title>\n<meta name=\"description\" content=\"Index planner for Couchbase&#039;s global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.\" \/>\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\/index-planner-for-global-secondary-indexes\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Index Planner for Global Secondary Indexes\" \/>\n<meta property=\"og:description\" content=\"Index planner for Couchbase&#039;s global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/index-planner-for-global-secondary-indexes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-06T05:41:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:27:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\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\/index-planner-for-global-secondary-indexes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/\"},\"author\":{\"name\":\"Amit Kulkarni\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/76beaf20748818542ed2b7a6bfcd524c\"},\"headline\":\"Index Planner for Global Secondary Indexes\",\"datePublished\":\"2020-01-06T05:41:04+00:00\",\"dateModified\":\"2025-06-14T02:27:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/\"},\"wordCount\":1300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg\",\"keywords\":[\"Index\"],\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/\",\"name\":\"Couchbase Server - Index Planner for Global Secondary Indexes\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg\",\"datePublished\":\"2020-01-06T05:41:04+00:00\",\"dateModified\":\"2025-06-14T02:27:30+00:00\",\"description\":\"Index planner for Couchbase's global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg\",\"width\":1000,\"height\":500,\"caption\":\"Couchbase NoSql\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index Planner for Global Secondary Indexes\"}]},{\"@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":"Couchbase Server - Index Planner for Global Secondary Indexes","description":"Index planner for Couchbase's global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.","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\/index-planner-for-global-secondary-indexes\/","og_locale":"es_MX","og_type":"article","og_title":"Index Planner for Global Secondary Indexes","og_description":"Index planner for Couchbase's global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/index-planner-for-global-secondary-indexes\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-01-06T05:41:04+00:00","article_modified_time":"2025-06-14T02:27:30+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.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\/index-planner-for-global-secondary-indexes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/"},"author":{"name":"Amit Kulkarni","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/76beaf20748818542ed2b7a6bfcd524c"},"headline":"Index Planner for Global Secondary Indexes","datePublished":"2020-01-06T05:41:04+00:00","dateModified":"2025-06-14T02:27:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/"},"wordCount":1300,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg","keywords":["Index"],"articleSection":["Couchbase Server"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/","url":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/","name":"Couchbase Server - Index Planner for Global Secondary Indexes","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg","datePublished":"2020-01-06T05:41:04+00:00","dateModified":"2025-06-14T02:27:30+00:00","description":"Index planner for Couchbase's global secondary indexes - a tool to find optimal placement for the indexes and the index replicas across multiple nodes.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/shutterstock_483254356.jpg","width":1000,"height":500,"caption":"Couchbase NoSql"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Index Planner for Global Secondary Indexes"}]},{"@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\/8023","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=8023"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/8023\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/2653"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=8023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=8023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=8023"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=8023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}