{"id":9765,"date":"2021-08-10T00:00:34","date_gmt":"2021-08-10T07:00:34","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9765"},"modified":"2025-06-13T18:43:33","modified_gmt":"2025-06-14T01:43:33","slug":"cost-based-optimization-with-couchbase-json-database","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/cost-based-optimization-with-couchbase-json-database\/","title":{"rendered":"Aumente a efici\u00eancia da consulta com a otimiza\u00e7\u00e3o baseada em custo no Couchbase"},"content":{"rendered":"<p><strong>Os usu\u00e1rios de bancos de dados de todos os tipos esperam uma otimiza\u00e7\u00e3o baseada em custos<\/strong> para suas consultas.<\/p>\n<p>Esse \u00e9 um recurso padr\u00e3o de todos os bancos de dados relacionais tradicionais (RDBMS), mas ainda n\u00e3o existe um otimizador baseado em custo (CBO) para bancos de dados de documentos NoSQL. Isto \u00e9, at\u00e9 agora.<\/p>\n<p>A otimiza\u00e7\u00e3o baseada em custos para consultas do Couchbase foi lan\u00e7ada como Developer Preview no Couchbase 6.5, e <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-7-0-release\/?ref=blog\" target=\"_blank\" rel=\"noopener\">agora est\u00e1 pronto para disponibilidade geral com o Couchbase 7.0<\/a>.<\/p>\n<p>Vamos dar uma olhada mais de perto nos novos recursos de CBO do Couchbase Server 7.0.<\/p>\n<h2>A maneira antiga: Otimiza\u00e7\u00e3o baseada em regras<\/h2>\n<p>\u00c9 imposs\u00edvel discutir a otimiza\u00e7\u00e3o baseada em custos sem fazer refer\u00eancia \u00e0 abordagem anterior da otimiza\u00e7\u00e3o de consultas a bancos de dados: a otimiza\u00e7\u00e3o baseada em regras (RBO).<\/p>\n<p>Com a otimiza\u00e7\u00e3o baseada em regras, o otimizador de consultas considera o uso de <em>qualquer<\/em> que fornece um caminho para recuperar o resultado da consulta. No entanto, quando o otimizador recebe mais de um caminho para processar a consulta, ou seja, quando a consulta pode usar v\u00e1rios \u00edndices, ele pode acabar usando <em>todos<\/em> \u00edndices.<\/p>\n<p>Com a otimiza\u00e7\u00e3o baseada em custos, o otimizador de consultas calcula o custo do uso de cada \u00edndice e, em seguida, decide o plano de execu\u00e7\u00e3o com o menor custo.<\/p>\n<h2>O que \u00e9 otimiza\u00e7\u00e3o baseada em custos?<\/h2>\n<p>A otimiza\u00e7\u00e3o baseada em custos permite que o otimizador de consultas do banco de dados escolha o melhor plano (de menor custo) para processar uma consulta.<\/p>\n<p>Isso \u00e9 mais importante sempre que uma consulta tiver mais de um caminho de execu\u00e7\u00e3o em potencial, ou seja, mais de um \u00edndice qualificado. A cada caminho de plano de consulta \u00e9 atribu\u00eddo um custo total para todas as opera\u00e7\u00f5es que a consulta precisa executar. Esses custos dependem particularmente da seletividade dos predicados especificados. Para chegar ao valor de seletividade de um predicado, as estat\u00edsticas dos campos do predicado precisam ter sido pr\u00e9-computadas.<\/p>\n<p>Observe que o valor do custo \u00e9 uma unidade arbitr\u00e1ria de c\u00e1lculo estat\u00edstico: ele n\u00e3o equivale ao custo do recurso ou ao uso da CPU.<\/p>\n<h2>Otimiza\u00e7\u00e3o baseada em custos versus otimiza\u00e7\u00e3o baseada em regras<\/h2>\n<p>A otimiza\u00e7\u00e3o de consultas com base no custo sempre oferece um caminho de execu\u00e7\u00e3o melhor quando o otimizador \u00e9 apresentado a mais de uma op\u00e7\u00e3o. As estat\u00edsticas computadas garantem que o otimizador esteja equipado com o conhecimento sobre a distribui\u00e7\u00e3o de dados e, consequentemente, sobre a efici\u00eancia de um plano de consulta em rela\u00e7\u00e3o a outro.<\/p>\n<p>Por exemplo, imagine <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog\" target=\"_blank\" rel=\"noopener\">uma cole\u00e7\u00e3o do Couchbase<\/a> que cont\u00e9m informa\u00e7\u00f5es sobre os clientes e seus endere\u00e7os, com um \u00edndice sobre <code>ix1(c\u00f3digo postal)<\/code> e <code>ix2(cidade)<\/code>. Estatisticamente, h\u00e1 mais CEPs do que cidades nos Estados Unidos. Mas isso n\u00e3o significa necessariamente que usar o c\u00f3digo de endere\u00e7amento postal seja uma forma de se obter um resultado positivo. <code>ix1(c\u00f3digo postal)<\/code> tem um custo menor (e, portanto, melhor desempenho) do que o \u00edndice <code>ix2(cidade)<\/code> \u00edndice. Por qu\u00ea? Porque ainda n\u00e3o sabemos se os clientes do sistema est\u00e3o distribu\u00eddos uniformemente em todas as cidades e c\u00f3digos postais dos EUA. \u00c9 prov\u00e1vel que n\u00e3o sejam.<\/p>\n<p>Nesse cen\u00e1rio, s\u00e3o as estat\u00edsticas coletadas previamente pelo otimizador baseado em custo que o ajudam a decidir o caminho de consulta de menor custo em tempo de execu\u00e7\u00e3o.<\/p>\n<p>Com a otimiza\u00e7\u00e3o baseada em regras, se uma consulta tiver predicados de cidade e CEP, o otimizador de consultas usar\u00e1 os dois \u00edndices com a varredura de interse\u00e7\u00e3o. No entanto, o CBO usa apenas um \u00edndice - o que tiver o menor custo com base nos dados da cole\u00e7\u00e3o.<\/p>\n<h2>Como habilitar a otimiza\u00e7\u00e3o baseada em custo no Couchbase<\/h2>\n<p>H\u00e1 duas etapas importantes que voc\u00ea precisa seguir para usar a otimiza\u00e7\u00e3o baseada em custo no Couchbase Server 7.0:<\/p>\n<p><strong>1. Ativar o recurso CBO<\/strong><\/p>\n<p>Atualmente, o otimizador baseado em custo est\u00e1 ativado por padr\u00e3o no Couchbase 7.0.<\/p>\n<p>No entanto, voc\u00ea pode desativ\u00e1-lo com o comando <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/n1ql\/?ref=blog\" target=\"_blank\" rel=\"noopener\">N1QL<\/a> Valor do controle de recursos em Configura\u00e7\u00f5es-&gt;Configura\u00e7\u00f5es de consulta. Se voc\u00ea planeja usar a otimiza\u00e7\u00e3o baseada em custo, certifique-se de que ela esteja ativada.<\/p>\n<p><strong>2. Coletar estat\u00edsticas<\/strong><\/p>\n<p>Al\u00e9m de ter o otimizador baseado em custo ativado em seu cluster, voc\u00ea tamb\u00e9m deve ter coletado estat\u00edsticas sobre os campos subjacentes dos \u00edndices usados por suas consultas. Aqui est\u00e1 um exemplo de consulta sobre como fazer isso:<\/p>\n<pre class=\"lang:default decode:true\">UPDATE STATISTICS FOR&lt;keyspace&gt; (&lt;index_expr1&gt;,..) \r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Por exemplo, usando o <code>amostra de viagem<\/code> essa consulta acima teria a seguinte apar\u00eancia:<\/p>\n<pre>UPDATE STATISTICS FOR `travel-sample`._default.hotel (city);\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Voc\u00ea tamb\u00e9m pode coletar as estat\u00edsticas de acordo com o nome do \u00edndice:<\/p>\n<pre>UPDATE STATISTICS FOR `travel-sample`._default.route.def_route_schedule_utc;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Observe que voc\u00ea tamb\u00e9m pode desativar o otimizador baseado em custos usando a op\u00e7\u00e3o <code>cbo_flag<\/code> em sua API, ou excluindo as estat\u00edsticas com <code>UPDATE STATISTICS  DELETE (,...)<\/code>.<\/p>\n<h2>O balde do sistema CBO<\/h2>\n<p>Quando tiver ativado a otimiza\u00e7\u00e3o baseada em custo e coletado estat\u00edsticas, voc\u00ea notar\u00e1 um Bucket adicional em seu cluster chamado <code>N1QL_SYSTEM_BUCKET.N1QL_SYSTEM_SCOPE.N1QL_CBO_STAT<\/code>. O acesso direto a esse Bucket \u00e9 restrito aos administradores do sistema.<\/p>\n<p>Usando o <code>ESTAT\u00cdSTICAS DE ATUALIZA\u00c7\u00c3O<\/code> voc\u00ea pode adicionar mais estat\u00edsticas ao Bucket ou excluir as estat\u00edsticas com o comando <code>Estat\u00edsticas de atualiza\u00e7\u00e3o para  DELETE<\/code>.<\/p>\n<h2>Otimizador baseado em custo em a\u00e7\u00e3o<\/h2>\n<p>Vamos dar uma olhada mais de perto em como a otimiza\u00e7\u00e3o baseada em custo funciona no Couchbase 7.0 usando o <code>`amostra de viagem`<\/code> no cen\u00e1rio a seguir.<\/p>\n<h3>Sele\u00e7\u00e3o aprimorada de \u00edndices com otimiza\u00e7\u00e3o baseada em custos<\/h3>\n<p>Digamos que voc\u00ea tenha definido dois \u00edndices para o <code>`travel-sample`._default.airport<\/code> Cole\u00e7\u00e3o.<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX def_airport_city_country ON airport(city,country); \r\nCREATE INDEX def_airport_faa ON airport(faa);\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>E voc\u00ea tem uma pergunta abaixo:<\/p>\n<pre class=\"lang:default decode:true\">SELECT * FROM airport WHERE city = \"New York\" AND faa = \"JFK\";\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Se a otimiza\u00e7\u00e3o baseada em custo acima n\u00e3o fosse usada, o plano de execu\u00e7\u00e3o do otimizador baseado em regras para a consulta acima seria:<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9766\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM.png\" alt=\"rules-based optimization execution plan for Couchbase N1QL query\" width=\"2206\" height=\"478\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM.png 2206w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-300x65.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-1024x222.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-768x166.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-1536x333.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-2048x444.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.49.53-PM-1320x286.png 1320w\" sizes=\"auto, (max-width: 2206px) 100vw, 2206px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Observe que, como os predicados de consulta est\u00e3o em ambos os <code>cidade<\/code> e <code>faa<\/code> ambos os \u00edndices s\u00e3o usados na varredura de interse\u00e7\u00e3o. Saiba mais sobre varreduras de interse\u00e7\u00e3o neste artigo: <a href=\"https:\/\/dzone.com\/articles\/performance-ingredients-for-nosql-intersect-scans\/?ref=hello-from-couchbase\" target=\"_blank\" rel=\"noopener\">Ingredientes de desempenho para NoSQL: Varreduras de interse\u00e7\u00e3o no N1QL<\/a>.<\/p>\n<p>Em seguida, voc\u00ea habilita a otimiza\u00e7\u00e3o baseada em custo para a consulta ao banco de dados. Como a CBO j\u00e1 est\u00e1 ativada por padr\u00e3o, tudo o que voc\u00ea precisa fazer \u00e9 coletar as estat\u00edsticas.<\/p>\n<pre class=\"lang:default decode:true\">UPDATE STATISTICS FOR airport(city, faa);\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Depois que as estat\u00edsticas forem coletadas, execute o comando <code>SELECIONAR<\/code> perguntar novamente.<\/p>\n<p>Voc\u00ea ver\u00e1 que o plano de execu\u00e7\u00e3o muda para usar apenas o <code>aeroporto.faa<\/code> \u00edndice. Essa altera\u00e7\u00e3o ocorre porque as estat\u00edsticas est\u00e3o informando ao otimizador que o \u00edndice <code>faa<\/code> tem uma seletividade melhor em compara\u00e7\u00e3o com o campo <code>cidade<\/code> campo. Portanto, o <code>aeroporto.faa<\/code> \u00e9 o \u00edndice mais eficiente a ser usado pela consulta.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9767\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM.png\" alt=\"Couchbase cost-based optimization execution plan for N1QL query\" width=\"2234\" height=\"284\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM.png 2234w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-300x38.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-1024x130.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-768x98.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-1536x195.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-2048x260.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.51.17-PM-1320x168.png 1320w\" sizes=\"auto, (max-width: 2234px) 100vw, 2234px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>Um JOIN melhor com otimiza\u00e7\u00e3o baseada em custos<\/h3>\n<p>Vejamos outro exemplo de otimiza\u00e7\u00e3o de consulta baseada em custo que ilustra como o otimizador baseado em custo escolhe um tipo de JOIN melhor entre <code>aeroporto<\/code> e <code>rota<\/code>.<\/p>\n<p>Primeiro, criamos um \u00edndice para rastrear o aeroporto de origem:<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_route_sourceairport` ON `travel-sample`.`_default`.`route`(`sourceairport`)\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>E ent\u00e3o usamos a consulta abaixo:<\/p>\n<pre class=\"lang:default decode:true\">SELECT DISTINCT route.destinationairport FROM airport JOIN route ON airport.faa = route.sourceairport;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Com o antigo otimizador baseado em regras, o plano de execu\u00e7\u00e3o da consulta acima teria a seguinte apar\u00eancia:<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9768\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM.png\" alt=\"rules-based optimization execution plan for database JOIN\" width=\"2482\" height=\"522\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM.png 2482w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-300x63.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-1024x215.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-768x162.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-1536x323.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-2048x431.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.53.30-PM-1320x278.png 1320w\" sizes=\"auto, (max-width: 2482px) 100vw, 2482px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Observe que o plano de execu\u00e7\u00e3o do RBO acima usa um loop aninhado para unir a cole\u00e7\u00e3o de aeroportos \u00e0 cole\u00e7\u00e3o de rotas.<\/p>\n<p>Em seguida, voc\u00ea precisa ativar a otimiza\u00e7\u00e3o baseada em custo para a consulta. Como a CBO j\u00e1 est\u00e1 ativada por padr\u00e3o, tudo o que voc\u00ea precisa fazer \u00e9 coletar as estat\u00edsticas do campo na Collection.<\/p>\n<pre class=\"lang:default decode:true\">UPDATE STATISTICS FOR route(sourceairport);\r\nUPDATE STATISTICS FOR airport(faa);\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Com as estat\u00edsticas de otimiza\u00e7\u00e3o baseadas em custo dispon\u00edveis nos dois campos subjacentes para os \u00edndices, o otimizador passa a usar um <code>HASH<\/code> para a cole\u00e7\u00e3o JOIN.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9769\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM.png\" alt=\"Couchbase CBO optimizer query execution plan using a HASH for the Collection JOIN\" width=\"2484\" height=\"466\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM.png 2484w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-300x56.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-1024x192.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-768x144.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-1536x288.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-2048x384.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.54.58-PM-1320x248.png 1320w\" sizes=\"auto, (max-width: 2484px) 100vw, 2484px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Solu\u00e7\u00e3o de problemas do otimizador baseado em custo no Couchbase<\/h2>\n<ol>\n<li>A otimiza\u00e7\u00e3o baseada em custo \u00e9 ativada por padr\u00e3o no Couchbase 7.0. No entanto, as estat\u00edsticas precisam estar presentes nos campos espec\u00edficos do seu Bucket\/Collections para que o otimizador baseado em custo funcione de forma eficaz.<\/li>\n<li>Voc\u00ea pode desativar a otimiza\u00e7\u00e3o baseada em custo no n\u00edvel do cluster usando o campo Controle de recursos N1QL adicionando 16 ao valor. \u00c9 um conjunto com x10 bits.<\/li>\n<li>As estat\u00edsticas de CBO n\u00e3o s\u00e3o atualizadas automaticamente pelo Servi\u00e7o de Consulta. Voc\u00ea deve coletar estat\u00edsticas regularmente ou ap\u00f3s uma altera\u00e7\u00e3o significativa no conte\u00fado da sua cole\u00e7\u00e3o. Recomendo a coleta de estat\u00edsticas ap\u00f3s um grande upload de dados; caso contr\u00e1rio, uma execu\u00e7\u00e3o semanal deve ser suficiente.<\/li>\n<li>A otimiza\u00e7\u00e3o baseada em custos s\u00f3 \u00e9 considerada para uma consulta se as estat\u00edsticas estiverem dispon\u00edveis para <em>todos os \u00edndices que estavam sendo considerados pelo otimizador<\/em>. Voc\u00ea pode coletar as estat\u00edsticas de todos os \u00edndices em um determinado espa\u00e7o-chave usando o seguinte:\n<pre class=\"lang:default decode:true\">UPDATE STATISTICS FOR &lt;collection&gt; INDEX((SELECT RAW name from system:indexes \r\n    WHERE state='online' AND keyspace_id='&lt;collection_name&gt;' AND bucket_id='&lt;bucket_name&gt;' AND scope_id='&lt;scope_name&gt;'))\r\n<\/pre>\n<\/li>\n<\/ol>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Mais recursos<\/h2>\n<p>Para saber mais sobre o otimizador baseado em custo para JSON - e sobre a vers\u00e3o 7.0 do Couchbase em geral - confira os seguintes recursos:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/why-cost-based-optimizer-for-nosql-n1ql-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Menos \u00e9 mais: Por que usar um otimizador baseado em custos?<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/cost-based-optimizer-for-couchbase-n1ql-sql-for-json\/?ref=blog\" target=\"_blank\" rel=\"noopener\">O otimizador baseado em custo para a linguagem de consulta N1QL<\/a><\/li>\n<li><a href=\"https:\/\/people.eecs.berkeley.edu\/~brewer\/cs262\/3-selinger79.pdf?ref=hello-from-couchbase\" target=\"_blank\" rel=\"noopener\">Sele\u00e7\u00e3o do caminho de acesso em um sistema de gerenciamento de banco de dados relacional<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener\">O que h\u00e1 de novo no Couchbase Server 7.0<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/release-notes\/relnotes.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Notas de vers\u00e3o do Couchbase 7.0<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 30px\" aria-hidden=\"true\"><\/div>\n<div style=\"text-align: center\"><strong>Deseja conhecer a otimiza\u00e7\u00e3o baseada em custos com o Couchbase?<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Introdu\u00e7\u00e3o ao Couchbase 7.0<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Database users of every kind have come to expect cost-based optimization for their queries. It&#8217;s a standard feature of all traditional relational databases (RDBMS), but there hasn&#8217;t yet been a cost-based optimizer (CBO) for NoSQL document databases. That is, until [&hellip;]<\/p>","protected":false},"author":26326,"featured_media":11680,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1816,1812],"tags":[8562,9361,2312,1261,1725,1385,9301],"ppma_author":[8919],"class_list":["post-9765","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-server","category-n1ql-query","tag-cost-based-optimization","tag-cost-based-optimizer","tag-document-database","tag-json","tag-nosql-database","tag-rdbms","tag-relational-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cost-Based Query Optimization Example to Boost Efficiency<\/title>\n<meta name=\"description\" content=\"Cost-based optimization for Couchbase queries is ready for general availability with Couchbase 7.0. Take a closer look at the new CBO features.\" \/>\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\/cost-based-optimization-with-couchbase-json-database\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Boost Query Efficiency with Cost-Based Optimization in Couchbase\" \/>\n<meta property=\"og:description\" content=\"Cost-based optimization for Couchbase queries is ready for general availability with Couchbase 7.0. Take a closer look at the new CBO features.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/cost-based-optimization-with-couchbase-json-database\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-10T07:00:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:43:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/cost-based-optimization-database-queries-couchbase-social.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"418\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/cost-based-optimization-database-queries-couchbase-social.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\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\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"Boost Query Efficiency with Cost-Based Optimization in Couchbase\",\"datePublished\":\"2021-08-10T07:00:34+00:00\",\"dateModified\":\"2025-06-14T01:43:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\"},\"wordCount\":1249,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg\",\"keywords\":[\"Cost Based Optimization\",\"cost-based optimizer\",\"document database\",\"JSON\",\"NoSQL Database\",\"RDBMS\",\"relational database\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\",\"name\":\"Cost-Based Query Optimization Example to Boost Efficiency\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg\",\"datePublished\":\"2021-08-10T07:00:34+00:00\",\"dateModified\":\"2025-06-14T01:43:33+00:00\",\"description\":\"Cost-based optimization for Couchbase queries is ready for general availability with Couchbase 7.0. Take a closer look at the new CBO features.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Learn how cost-based optimization in the Couchbase 7.0 release improves database query efficiency\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Boost Query Efficiency with Cost-Based Optimization in Couchbase\"}]},{\"@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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cost-Based Query Optimization Example to Boost Efficiency","description":"A otimiza\u00e7\u00e3o baseada em custo para consultas do Couchbase est\u00e1 pronta para disponibilidade geral com o Couchbase 7.0. D\u00ea uma olhada mais de perto nos novos recursos de CBO.","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\/cost-based-optimization-with-couchbase-json-database\/","og_locale":"pt_BR","og_type":"article","og_title":"Boost Query Efficiency with Cost-Based Optimization in Couchbase","og_description":"Cost-based optimization for Couchbase queries is ready for general availability with Couchbase 7.0. Take a closer look at the new CBO features.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/cost-based-optimization-with-couchbase-json-database\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-08-10T07:00:34+00:00","article_modified_time":"2025-06-14T01:43:33+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/cost-based-optimization-database-queries-couchbase-social.jpg","type":"image\/jpeg"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/cost-based-optimization-database-queries-couchbase-social.jpg","twitter_misc":{"Written by":"Binh Le","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"Boost Query Efficiency with Cost-Based Optimization in Couchbase","datePublished":"2021-08-10T07:00:34+00:00","dateModified":"2025-06-14T01:43:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/"},"wordCount":1249,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg","keywords":["Cost Based Optimization","cost-based optimizer","document database","JSON","NoSQL Database","RDBMS","relational database"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/","url":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/","name":"Cost-Based Query Optimization Example to Boost Efficiency","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg","datePublished":"2021-08-10T07:00:34+00:00","dateModified":"2025-06-14T01:43:33+00:00","description":"A otimiza\u00e7\u00e3o baseada em custo para consultas do Couchbase est\u00e1 pronta para disponibilidade geral com o Couchbase 7.0. D\u00ea uma olhada mais de perto nos novos recursos de CBO.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/cost-based-optimization-database-queries-couchbase.jpg","width":1200,"height":628,"caption":"Learn how cost-based optimization in the Couchbase 7.0 release improves database query efficiency"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Boost Query Efficiency with Cost-Based Optimization in Couchbase"}]},{"@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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le \u00e9 gerente de produto principal do servi\u00e7o Couchbase Query. Antes da Couchbase, ele trabalhou na Oracle e liderou a equipe de gerenciamento de produtos para Sales Cloud Analytics e CRM OnDemand. Binh \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o pela Universidade de Brighton, no Reino Unido.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","author_category":"","last_name":"Le","first_name":"Binh","job_title":"","user_url":"","description":"Binh Le \u00e9 gerente de produto principal do servi\u00e7o de consulta do Couchbase. Antes da Couchbase, ele trabalhou na Oracle e liderou a equipe de gerenciamento de produtos para Sales Clould Analytics e CRM OnDemand. Binh \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o pela Universidade de Brighton, no Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9765","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\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=9765"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9765\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/11680"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=9765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=9765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=9765"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=9765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}