{"id":8023,"date":"2020-01-05T21:41:04","date_gmt":"2020-01-06T05:41:04","guid":{"rendered":"http:\/\/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\/pt\/index-planner-for-global-secondary-indexes\/","title":{"rendered":"Planejador de \u00edndices para \u00edndices secund\u00e1rios globais"},"content":{"rendered":"<p style=\"text-align: left\"><span style=\"font-weight: 400\">O aspecto integral de qualquer sistema distribu\u00eddo \u00e9 fornecer perfeitamente recursos de alta disponibilidade (HA) e balanceamento de carga ao usu\u00e1rio. Com pouca ou nenhuma contribui\u00e7\u00e3o do usu\u00e1rio, os \u00edndices secund\u00e1rios globais do Couhbase<sup>1<\/sup><\/span><span style=\"font-weight: 400\">\u00a0(GSI) oferece a seus usu\u00e1rios HA e balanceamento de carga em um cluster couchbase.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">O que \u00e9 o Index Planner?<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">O Index Planner \u00e9 uma biblioteca usada pelo servi\u00e7o de indexa\u00e7\u00e3o do Couchbase para determinar o posicionamento ideal dos \u00edndices. Ela oferece suporte cont\u00ednuo para o posicionamento de \u00edndices com reconhecimento de HA e balanceamento de carga para o servi\u00e7o de indexa\u00e7\u00e3o do Couchbase. O planejador de \u00edndice \u00e9 usado para decidir o posicionamento ideal do \u00edndice em dois casos de uso, (1) <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\"><span style=\"font-weight: 400\">Cria\u00e7\u00e3o de novo \u00edndice<\/span><\/a><span style=\"font-weight: 400\"> e (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\">Rebalanceamento do servi\u00e7o de \u00edndice<\/span><\/a><span style=\"font-weight: 400\"> ou seja, quando os n\u00f3s do indexador s\u00e3o adicionados e\/ou removidos do cluster<sup>2<\/sup><\/span><span style=\"font-weight: 400\">.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Como funciona o Index Planner<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Dado um conjunto de \"n\u00f3s\" que hospedam o servi\u00e7o de indexa\u00e7\u00e3o do Couchbase (que pode ter configura\u00e7\u00f5es de hardware diferentes) e um conjunto de \u00edndices com seus pr\u00f3prios \"par\u00e2metros de carga\", o Index Planner fornece ao usu\u00e1rio o posicionamento ideal<sup>3<\/sup><\/span><span style=\"font-weight: 400\"> desses \u00edndices nesses n\u00f3s indexadores. A coloca\u00e7\u00e3o ideal de centenas de \u00edndices - com valores diferentes de par\u00e2metros de carga - em dezenas de n\u00f3s indexadores requer a explora\u00e7\u00e3o de um espa\u00e7o de solu\u00e7\u00e3o muito grande. Portanto, encontrar deterministicamente \"a\" solu\u00e7\u00e3o ideal requer tempo exponencial. Por isso, em vez de encontrar \"a\" solu\u00e7\u00e3o ideal, o Index Planner usa o m\u00e9todo probabil\u00edstico <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Simulated_annealing\"><span style=\"font-weight: 400\">recozimento simulado<\/span><\/a><span style=\"font-weight: 400\"> para encontrar uma solu\u00e7\u00e3o globalmente ideal aproximada. Experimentalmente, foi comprovado que o recozimento simulado produziu bons resultados para o algoritmo de posicionamento de \u00edndice do servidor couchbase.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Os par\u00e2metros de carga considerados pelo Index Planner s\u00e3o (1) o tamanho do \u00edndice (2) o espa\u00e7o de mem\u00f3ria do \u00edndice (3) a taxa de varredura do \u00edndice (4) a taxa de ingest\u00e3o de dados do \u00edndice etc., s\u00f3 para citar alguns. Todos esses par\u00e2metros de carga ajudam o Index Planner a calcular a carga gerada por cada \u00edndice e, por sua vez, a calcular a carga colocada em cada n\u00f3 do indexador por qualquer posicionamento espec\u00edfico do \u00edndice. No momento da <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">cria\u00e7\u00e3o de \u00edndices<\/a>No entanto, os valores reais dos par\u00e2metros de carga s\u00e3o desconhecidos. Portanto, para fins de cria\u00e7\u00e3o do \u00edndice, o Planejador de \u00edndices \u00e9 executado com \"valores estimados\" desses par\u00e2metros de carga. Durante o rebalanceamento, o Planejador de \u00edndices obt\u00e9m os valores desses par\u00e2metros de carga do <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/rest-api\/rest-index-stats.html\"><span style=\"font-weight: 400\">estat\u00edsticas de \u00edndice<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Exemplo 1:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Vamos considerar um cluster do Couchbase com 3 n\u00f3s indexadores id\u00eanticos - \"N\u00f3 1\", \"N\u00f3 2\" e <\/span><span style=\"font-weight: 400\">\"N\u00f3 3\". Vamos supor que os n\u00f3s N\u00f3 1 e N\u00f3 2 j\u00e1 estejam hospedando um \u00edndice cada - \u00edndice1 e \u00edndice2, respectivamente. Se o usu\u00e1rio adicionar um novo \u00edndice \"index3\", com base na distribui\u00e7\u00e3o de carga atual, o Index Planner colocar\u00e1 o novo \u00edndice no N\u00f3 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\">\u00c9 assim que o Planejador de \u00edndices se encarrega de distribuir os \u00edndices entre todos os n\u00f3s de \u00edndice dispon\u00edveis no cluster. Para oferecer mais recursos de balanceamento de carga e HA, o servi\u00e7o de indexa\u00e7\u00e3o permite que os usu\u00e1rios criem r\u00e9plicas de \u00edndice. Nas se\u00e7\u00f5es a seguir, discutiremos as r\u00e9plicas de \u00edndice.<\/span><\/p>\n<h3 style=\"text-align: left\"><span style=\"font-weight: 400\">Planejador de \u00edndices para coloca\u00e7\u00e3o de r\u00e9plicas de \u00edndices<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Para alta disponibilidade, os usu\u00e1rios s\u00e3o sempre aconselhados a criar um ou mais <\/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 \u00edndice<\/span><\/a><span style=\"font-weight: 400\"> (com base em seus requisitos de HA). O servi\u00e7o de indexa\u00e7\u00e3o do Couchbase implementa a pol\u00edtica de r\u00e9plica mestre-mestre. Portanto, todas as r\u00e9plicas no cluster podem atender \u00e0s consultas recebidas<sup>4<\/sup><\/span><span style=\"font-weight: 400\">. O servi\u00e7o de indexa\u00e7\u00e3o do Couchbase garante que as solicita\u00e7\u00f5es de varredura sejam distribu\u00eddas uniformemente por todas as r\u00e9plicas de \u00edndice.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">O Index Planner \"sempre\" garante que as r\u00e9plicas do mesmo \u00edndice sejam colocadas em n\u00f3s indexadores diferentes. Isso proporciona aos usu\u00e1rios a alta disponibilidade.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Exemplo 2:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">No mesmo cluster do Exemplo 1, vamos supor que os n\u00f3s N\u00f3 1 e N\u00f3 2 j\u00e1 estejam hospedando 2 r\u00e9plicas de \u00edndice cada um e que o N\u00f3 3 n\u00e3o esteja hospedando nenhuma r\u00e9plica de \u00edndice<sup>5<\/sup><\/span><span style=\"font-weight: 400\">. Portanto, se o usu\u00e1rio adicionar um novo \u00edndice \"index3\" com duas r\u00e9plicas (replica0 e replica1), com base na distribui\u00e7\u00e3o de carga atual, o Index Planner colocar\u00e1 uma das r\u00e9plicas do novo \u00edndice no n\u00f3 3, mas a segunda r\u00e9plica N\u00c3O ser\u00e1 colocada no n\u00f3 3, mesmo que isso signifique uma distribui\u00e7\u00e3o de carga relativamente desigual entre os n\u00f3s.<\/span><\/p>\n<p style=\"text-align: left\"><em><span style=\"font-weight: 400\">Observa\u00e7\u00f5es: Cada r\u00e9plica de \u00edndice \u00e9 identificada por seu ID (ou seja, replicaId), que come\u00e7a em zero. Al\u00e9m disso, o usu\u00e1rio pode especificar o n\u00famero necess\u00e1rio de r\u00e9plicas no momento da cria\u00e7\u00e3o do \u00edndice usando o par\u00e2metro \"num_replica\", em que \"num_replica\" = 1 significa que ser\u00e3o criadas 2 inst\u00e2ncias de \u00edndice no total (com replicaId 0 e 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\">Planejador de \u00edndices para conscientiza\u00e7\u00e3o da zona de rack<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">O gerenciador de cluster do Couchbase oferece aos usu\u00e1rios a capacidade de agrupar os n\u00f3s do cluster 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 pode ser mapeado para uma zona de failover no data center.  Por exemplo, todos os n\u00f3s em um \u00fanico \"rack\" no data center podem pertencer a um \u00fanico grupo de servidores.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">O Index Planner \u00e9 \"consciente da zona de rack\" e sempre coloca as r\u00e9plicas do mesmo \u00edndice em grupos de servidores diferentes. Se o n\u00famero de grupos de servidores for menor que o n\u00famero de r\u00e9plicas, os grupos de servidores poder\u00e3o hospedar mais de uma r\u00e9plica.<\/span><\/p>\n<h5 style=\"text-align: left\"><b>Exemplo 3:<\/b><\/h5>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Vamos considerar um cluster do Couchbase com 4 n\u00f3s indexadores id\u00eanticos - \"N\u00f3 1\", \"N\u00f3 2\", \"N\u00f3 3\" e \"N\u00f3 4\". O N\u00f3 1 e o N\u00f3 2 pertencem ao \"Grupo de servidores 1\" e o N\u00f3 3 e o N\u00f3 4 pertencem ao \"Grupo de servidores 2\". Vamos supor que os n\u00f3s N\u00f3 1 e N\u00f3 2 j\u00e1 estejam hospedando um \u00edndice cada: \u00edndice1 - r\u00e9plica0 e \u00edndice2 - r\u00e9plica0, respectivamente. Agora, se o usu\u00e1rio adicionar um novo \u00edndice \"index3\" com 2 r\u00e9plicas (replica0 e replica1) ao cluster. Ent\u00e3o, o Index Planner adicionar\u00e1 uma r\u00e9plica ao N\u00f3 3 ou ao N\u00f3 4 para distribuir a carga. Mas a segunda r\u00e9plica precisa ir para o Grupo de servidores 1, porque o N\u00f3 3 ou N\u00f3 4 - pertencente ao Grupo de servidores 1 - j\u00e1 est\u00e1 hospedando uma r\u00e9plica. O Index Planner faz essa escolha mesmo que isso signifique uma distribui\u00e7\u00e3o de carga relativamente desigual em v\u00e1rios n\u00f3s.<\/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\">Planejador de \u00edndices para distribui\u00e7\u00e3o de parti\u00e7\u00f5es de \u00edndices<\/span><\/h3>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Os usu\u00e1rios do Couchbase podem criar <\/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 obter uma melhor distribui\u00e7\u00e3o de carga - com rela\u00e7\u00e3o \u00e0 constru\u00e7\u00e3o do \u00edndice - e para obter resultados de varredura mais r\u00e1pidos para \u00edndices grandes. Com a ajuda do \u00edndice particionado, os dados do \u00edndice ser\u00e3o distribu\u00eddos entre v\u00e1rias parti\u00e7\u00f5es com base no valor de hash da chave da parti\u00e7\u00e3o. O planejador de \u00edndices \u00e9 sens\u00edvel \u00e0 parti\u00e7\u00e3o e pode distribuir parti\u00e7\u00f5es de \u00edndices em v\u00e1rios n\u00f3s de indexadores, com base na carga de cria\u00e7\u00e3o de \u00edndices e na carga de varredura de \u00edndices.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">O Index Planner distribui parti\u00e7\u00f5es de um \u00edndice entre o maior n\u00famero poss\u00edvel de n\u00f3s indexadores. Isso \u00e9 \u00fatil para distribuir a carga de varredura do \u00edndice, bem como a carga de cria\u00e7\u00e3o do \u00edndice entre esses n\u00f3s de indexador. Mas o Index Planner n\u00e3o garante a distribui\u00e7\u00e3o uniforme das parti\u00e7\u00f5es entre todos os n\u00f3s indexadores dispon\u00edveis. Isso ajuda os usu\u00e1rios a obter uma melhor distribui\u00e7\u00e3o da carga geral no cluster, quando h\u00e1 v\u00e1rios \u00edndices n\u00e3o particionados e particionados com diferentes \"par\u00e2metros de carga\".\u00a0<\/span><\/p>\n<p style=\"text-align: left\"><b>Exemplo 4:<\/b><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Vamos considerar um cluster do Couchbase com 4 n\u00f3s indexadores id\u00eanticos - \"N\u00f3 1\", \"N\u00f3 2\", \"N\u00f3 3\" e \"N\u00f3 4\". Vamos supor que os n\u00f3s N\u00f3 1 j\u00e1 estejam hospedando 2 \u00edndices n\u00e3o particionados. Agora, se o usu\u00e1rio adicionar um \u00edndice particionado<sup>6<\/sup><\/span><span style=\"font-weight: 400\"> \"index3\" (com 4 parti\u00e7\u00f5es), Planejador de \u00edndices <\/span><b>pode<\/b><span style=\"font-weight: 400\"> distribuir as 4 parti\u00e7\u00f5es do novo \u00edndice somente entre o N\u00f3 2, o N\u00f3 3 e o N\u00f3 4. Isso garantir\u00e1 uma melhor distribui\u00e7\u00e3o geral da carga no cluster.<\/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\">Os \u00edndices particionados podem ter r\u00e9plicas. Cada parti\u00e7\u00e3o de um \u00edndice tem seu pr\u00f3prio conjunto de r\u00e9plicas de parti\u00e7\u00e3o. O Index Planner garante que as r\u00e9plicas de parti\u00e7\u00e3o tamb\u00e9m sejam distribu\u00eddas entre os n\u00f3s do indexador e entre diferentes grupos de servidores para garantir a distribui\u00e7\u00e3o de carga necess\u00e1ria e a alta disponibilidade.<\/span><\/p>\n<p style=\"text-align: left\"><i><span style=\"font-weight: 400\">Na pr\u00f3xima parte deste blog, discutiremos como o servi\u00e7o de indexa\u00e7\u00e3o do couchbase usa o Index Planner para v\u00e1rios casos de uso.<\/span><\/i><\/p>\n<hr \/>\n<p style=\"text-align: left\"><span style=\"font-weight: 300\"><sup>1<\/sup> Neste blogpost, o termo \"\u00edndice\" ser\u00e1 usado apenas para os \u00edndices secund\u00e1rios globais do Couchbase.<br \/>\n<sup>2<\/sup> Os \u00edndices que residem nos n\u00f3s n\u00e3o removidos do cluster n\u00e3o s\u00e3o afetados pelo rebalanceamento.<br \/>\n<sup>3<\/sup> O posicionamento ideal significa a melhor distribui\u00e7\u00e3o de carga poss\u00edvel que atende a todos os requisitos de HA.<br \/>\n<sup>4<\/sup> As r\u00e9plicas do Global Secondary Index s\u00e3o criadas e mantidas de forma totalmente independente umas das outras. As consultas de entrada - atendidas por essas r\u00e9plicas - seguem a GSI do Couchbase <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/learn\/services-and-indexes\/indexes\/index-replication.html#index-consistency\">modelo de consist\u00eancia<\/a>.<br \/>\n<sup>5<\/sup> Os usu\u00e1rios podem acabar com esse tipo de distribui\u00e7\u00e3o de \u00edndice quando come\u00e7am com dois n\u00f3s no cluster, criam \u00edndices com duas r\u00e9plicas cada e, em seguida, adicionam um terceiro n\u00f3 ao cluster.<br \/>\n<sup>6<\/sup> Para \u00edndices particionados, os ids de parti\u00e7\u00e3o come\u00e7am em 1. O id de parti\u00e7\u00e3o 0 \u00e9 usado para \u00edndices n\u00e3o 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>\n","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"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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\/pt\/index-planner-for-global-secondary-indexes\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/index-planner-for-global-secondary-indexes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g9b381fdec8caa95228a24342f1abbbbc\",\"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\\\/pt\\\/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\/pt\/index-planner-for-global-secondary-indexes\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/index-planner-for-global-secondary-indexes\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/ce1e7e777f6f5e141aa952f3bba06e838b5cb9bd5dbf9584e9ac998931808950?s=96&d=mm&r=g9b381fdec8caa95228a24342f1abbbbc","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 est\u00e1 trabalhando como gerente de engenharia na Couchbase em \u00edndices secund\u00e1rios globais. Ele tem experi\u00eancia em trabalhar com tecnologias como sistemas distribu\u00eddos, bancos de dados NoSQL distribu\u00eddos, armazenamento em nuvem, virtualiza\u00e7\u00e3o de armazenamento etc.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/amit-kulkarni\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/49228"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=8023"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8023\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/2653"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=8023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=8023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=8023"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=8023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}