{"id":7199,"date":"2019-07-11T03:17:08","date_gmt":"2019-07-11T10:17:08","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7199"},"modified":"2021-07-13T00:45:25","modified_gmt":"2021-07-13T07:45:25","slug":"fts-performance-improvements-in-6-5-0-part-2","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/fts-performance-improvements-in-6-5-0-part-2\/","title":{"rendered":"Aprimoramentos de desempenho do FTS na vers\u00e3o 6.5.0 - Parte 2"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Para todos aqueles que est\u00e3o ansiosos, vou revelar o segredo obscuro de todas as otimiza\u00e7\u00f5es de desempenho do FTS na vers\u00e3o 6.5.0,<\/span><\/p>\n<p><i><span style=\"font-weight: 400\"><strong>\"<\/strong> Fa\u00e7a menos e com menos frequ\u00eancia <strong>** \"<\/strong><\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">E tenho certeza de que voc\u00ea concordar\u00e1 comigo ao rolar a p\u00e1gina mais abaixo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">(Para aqueles que perderam - <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\"><span style=\"font-weight: 400\">Parte 1<\/span><\/a><span style=\"font-weight: 400\">)<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Coletar dispers\u00e3o sobre gRPC<\/b><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Normalmente, um \u00edndice FTS \u00e9 particionado em sub\u00edndices e as parti\u00e7\u00f5es de \u00edndice s\u00e3o colocadas em n\u00f3s em um cluster de v\u00e1rios n\u00f3s. Qualquer consulta de pesquisa de entrada t\u00edpica \u00e9 ent\u00e3o espalhada por todos esses n\u00f3s\/parti\u00e7\u00f5es de \u00edndice remoto e os resultados da pesquisa s\u00e3o reunidos de diferentes n\u00f3s, mesclados por classifica\u00e7\u00e3o e enviados de volta ao usu\u00e1rio pelo n\u00f3 de coordena\u00e7\u00e3o ou de tratamento da consulta.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">At\u00e9 o lan\u00e7amento da vers\u00e3o 6.5.0, toda a coleta de dispers\u00e3o no FTS ocorre por http\/http2. <\/span><span style=\"font-weight: 400\">Afastar-se dessa coleta de dispers\u00e3o baseada em REST era um item pendente h\u00e1 muito tempo no backlog da equipe. A procrastina\u00e7\u00e3o foi ben\u00e9fica para n\u00f3s aqui.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Com o surgimento dos recursos da vers\u00e3o 6.5.0, como a integra\u00e7\u00e3o N1QL-FTS, percebemos que era o momento certo para experimentar o gRPC para a coleta de dispers\u00e3o interna. Como j\u00e1 se falou muito sobre os pr\u00f3s do gRPC em toda a Web, vou me abster de repetir aqui.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Com o FTS, est\u00e1vamos interessados principalmente em explorar os recursos de streaming e multiplexa\u00e7\u00e3o de solicita\u00e7\u00f5es do gRPC. A transmiss\u00e3o de volta dos resultados da pesquisa para os clientes ajuda a abordar o caso de uso de servir um resultado de pesquisa com milh\u00f5es de resultados n\u00e3o classificados (com classifica\u00e7\u00e3o constante) de uma forma mais amig\u00e1vel \u00e0 mem\u00f3ria.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Os desafios interessantes foram,<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obter as interfaces corretas para permitir que o pacote cbft de n\u00edvel mais alto grave os resultados da pesquisa no fluxo do cliente de maneira configur\u00e1vel (por exemplo, lote de ocorr\u00eancias ou uma \u00fanica ocorr\u00eancia) \u00e0 medida que os iteradores da biblioteca de indexa\u00e7\u00e3o percorrem os documentos correspondentes em algum lugar dentro do mecanismo de armazenamento.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Defini\u00e7\u00e3o dos tipos corretos de mensagens protobuf no contexto dos tipos de mensagens existentes.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Obter a mensagem protobuf correta n\u00e3o foi muito simples, pois o FTS j\u00e1 tinha os tipos de mensagem json estabelecidos, que estavam intimamente ligados aos tipos internos da Golang, e todos os nossos clientes os utilizam. Portanto, qualquer formato de mensagem mais recente tinha que levar em considera\u00e7\u00e3o os tipos de mensagem herdados. Isso introduz um n\u00edvel extra de esfor\u00e7os de marshal\/unmarshal entre esses tipos Go e os novos tipos protobuf. E isso, de fato, acionou o bot\u00e3o de p\u00e2nico durante os testes iniciais, devido aos significativos danos em nossos gr\u00e1ficos de desempenho.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Resolvemos imediatamente esse problema cortando as despesas gerais de an\u00e1lise da mensagem de pesquisa herdada do novo tipo de mensagem protobuf. A ideia era incorporar toda a mensagem de pesquisa legada como uma fatia de byte dentro da nova mensagem proto, o que eliminou alguns desvios e gerou muito menos lixo.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">A coleta de dispers\u00e3o baseada em gRPC mostrou um <\/span><b>2X <\/b><span style=\"font-weight: 400\">melhoria da taxa de transfer\u00eancia para consultas de termos de baixa frequ\u00eancia em nossos benchmarks internos com um cluster de 3 n\u00f3s.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4><b>Consulta de intervalo num\u00e9rico\u00a0<\/b><\/h4>\n<p><span style=\"font-weight: 400\">A biblioteca de indexa\u00e7\u00e3o de texto que usamos (<\/span><a href=\"https:\/\/github.com\/blevesearch\/bleve\"><span style=\"font-weight: 400\">sangrar<\/span><\/a><span style=\"font-weight: 400\">) armazena os valores do campo num\u00e9rico em diferentes pontos de precis\u00e3o, ou seja, um \u00fanico valor de campo num\u00e9rico \u00e9 indexado como v\u00e1rios tokens codificados em bin\u00e1rio deslocado. Embora essa abordagem aumente o tamanho do \u00edndice, no momento da consulta isso resultar\u00e1 em menos termos a serem pesquisados para um determinado intervalo num\u00e9rico e, portanto, torna essas consultas muito mais r\u00e1pidas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Oportunidade<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Semelhante ao modus operandi das consultas geogr\u00e1ficas mencionadas em <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\"><span style=\"font-weight: 400\">Parte 1<\/span><\/a><span style=\"font-weight: 400\"> desta s\u00e9rie, a implementa\u00e7\u00e3o da consulta de intervalo num\u00e9rico tamb\u00e9m deriva os termos num\u00e9ricos exatos (termos candidatos) a serem pesquisados matematicamente. A l\u00f3gica de filtragem de termos candidatos \u00e0 pesquisa usada para a consulta de intervalo num\u00e9rico \u00e9 semelhante \u00e0 das consultas fuzzy\/regex. Ela tentar\u00e1 filtrar os termos candidatos por meio da interse\u00e7\u00e3o dos dois DFAs, ou seja, a interse\u00e7\u00e3o entre o dicion\u00e1rio de termos e o DFA\/FST tempor\u00e1rio criado a partir dos intervalos num\u00e9ricos criados matematicamente. No entanto, com base no perfil do gr\u00e1fico de chama do Golang, essa abordagem se mostrou menos eficiente em termos de mem\u00f3ria e CPU.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Aprimoramos essa l\u00f3gica de filtragem com uma API de pesquisa de dicion\u00e1rio de termos mais limpa e mais leve, o que ajudou a controlar o uso da mem\u00f3ria e da CPU. E isso removeu os picos extras que apareciam nos gr\u00e1ficos de chamas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Essa mudan\u00e7a trouxe <\/span><b>77% <\/b><span style=\"font-weight: 400\">melhorias na taxa de transfer\u00eancia em testes de desempenho interno do FTS que tinham um fluxo constante de muta\u00e7\u00f5es recebidas (10 mil conjuntos\/segundos).\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Consultas de prefixo\/fuzzy\/cart\u00e3o selvagem\u00a0<\/b><\/h4>\n<h5><b>Oportunidade<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Todos esses tipos de consulta fazem uso intenso de travessias FST. As consultas de prefixo aproveitam os iteradores FST baseados em intervalo, enquanto as curingas\/fuzzy usam os iteradores baseados em aut\u00f4matos, ou seja, um aut\u00f4mato regex para consultas curingas\/regex e um aut\u00f4mato levenshtein para as consultas fuzzy.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Identificamos as estruturas compartilh\u00e1veis simultaneamente entre essas consultas e as armazenamos em cache em um <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/scorch-index-type-why-does-it-matter\/\"><span style=\"font-weight: 400\">segmento<\/span><\/a><span style=\"font-weight: 400\"> para melhorar a reutiliza\u00e7\u00e3o entre as consultas. Esse m\u00e9todo reduziu bastante a quantidade de lixo criado e nos ajudou a economizar nos ciclos de GC.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">O melhor armazenamento em cache e a reutiliza\u00e7\u00e3o ajudaram a melhorar os n\u00fameros de taxa de transfer\u00eancia para -<br \/>\n<\/span><span style=\"font-weight: 400\">Wildcard por<\/span><b> 25%<\/b><span style=\"font-weight: 400\">,<\/span><b>\u00a0 <\/b><span style=\"font-weight: 400\">Fuzzy por<\/span><b> 12%<\/b><span style=\"font-weight: 400\">,<\/span> <span style=\"font-weight: 400\">Prefixo<\/span> <span style=\"font-weight: 400\">por<\/span><b> 9%.<\/b><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong>**<\/strong> <em>H\u00e1 apenas tr\u00eas otimiza\u00e7\u00f5es: \"Fa\u00e7a menos. Fa\u00e7a com menos frequ\u00eancia. Fa\u00e7a mais r\u00e1pido\".<br \/>\n<\/em><em>Os maiores ganhos v\u00eam de 1, mas gastamos todo o nosso tempo em 3.- Michael Fromberger}<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>For all those who are restlessly eager, let me reveal the deep dark secret of all the performance optimisations in FTS in 6.5.0 is, \u201c Do less And Do it less often **\u00a0 \u201d And I am sure you would [&hellip;]<\/p>","protected":false},"author":26446,"featured_media":5952,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2165],"tags":[2378],"ppma_author":[9075],"class_list":["post-7199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-full-text-search","tag-6-5"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FTS Performance Improvements in 6.5.0 \u2013 Part 2 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"FTS performance improvements through gRPC for scatter gather , and with numeric range queries and wildcard\/regex queries in 6.5.0\" \/>\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\/fts-performance-improvements-in-6-5-0-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FTS Performance Improvements in 6.5.0 \u2013 Part 2\" \/>\n<meta property=\"og:description\" content=\"FTS performance improvements through gRPC for scatter gather , and with numeric range queries and wildcard\/regex queries in 6.5.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/fts-performance-improvements-in-6-5-0-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-11T10:17:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-13T07:45:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/116-hero-liquid-water-drop.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"386\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sreekanth Sivasankaran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sreekanth Sivasankaran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\"},\"author\":{\"name\":\"Sreekanth Sivasankaran\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a\"},\"headline\":\"FTS Performance Improvements in 6.5.0 \u2013 Part 2\",\"datePublished\":\"2019-07-11T10:17:08+00:00\",\"dateModified\":\"2021-07-13T07:45:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\"},\"wordCount\":861,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"keywords\":[\"6.5\"],\"articleSection\":[\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\",\"name\":\"FTS Performance Improvements in 6.5.0 \u2013 Part 2 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"datePublished\":\"2019-07-11T10:17:08+00:00\",\"dateModified\":\"2021-07-13T07:45:25+00:00\",\"description\":\"FTS performance improvements through gRPC for scatter gather , and with numeric range queries and wildcard\/regex queries in 6.5.0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"width\":1024,\"height\":386},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FTS Performance Improvements in 6.5.0 \u2013 Part 2\"}]},{\"@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\/7bbda3cf57beae8bd9cba686c0c6fe7a\",\"name\":\"Sreekanth Sivasankaran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"caption\":\"Sreekanth Sivasankaran\"},\"description\":\"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/sreekanth-sivasankaran\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FTS Performance Improvements in 6.5.0 \u2013 Part 2 - The Couchbase Blog","description":"Melhorias no desempenho do FTS por meio do gRPC para coleta de dispers\u00e3o e com consultas de intervalo num\u00e9rico e consultas curinga\/regex na vers\u00e3o 6.5.0","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\/fts-performance-improvements-in-6-5-0-part-2\/","og_locale":"pt_BR","og_type":"article","og_title":"FTS Performance Improvements in 6.5.0 \u2013 Part 2","og_description":"FTS performance improvements through gRPC for scatter gather , and with numeric range queries and wildcard\/regex queries in 6.5.0","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/fts-performance-improvements-in-6-5-0-part-2\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-07-11T10:17:08+00:00","article_modified_time":"2021-07-13T07:45:25+00:00","og_image":[{"width":1024,"height":386,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/116-hero-liquid-water-drop.jpg","type":"image\/jpeg"}],"author":"Sreekanth Sivasankaran","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sreekanth Sivasankaran","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/"},"author":{"name":"Sreekanth Sivasankaran","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a"},"headline":"FTS Performance Improvements in 6.5.0 \u2013 Part 2","datePublished":"2019-07-11T10:17:08+00:00","dateModified":"2021-07-13T07:45:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/"},"wordCount":861,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","keywords":["6.5"],"articleSection":["Couchbase Server","Full-Text Search"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/","url":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/","name":"FTS Performance Improvements in 6.5.0 \u2013 Part 2 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","datePublished":"2019-07-11T10:17:08+00:00","dateModified":"2021-07-13T07:45:25+00:00","description":"Melhorias no desempenho do FTS por meio do gRPC para coleta de dispers\u00e3o e com consultas de intervalo num\u00e9rico e consultas curinga\/regex na vers\u00e3o 6.5.0","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","width":1024,"height":386},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FTS Performance Improvements in 6.5.0 \u2013 Part 2"}]},{"@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\/7bbda3cf57beae8bd9cba686c0c6fe7a","name":"Sreekanth Sivasankaran","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7","url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","caption":"Sreekanth Sivasankaran"},"description":"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/sreekanth-sivasankaran\/"}]}},"authors":[{"term_id":9075,"user_id":26446,"is_guest":0,"slug":"sreekanth-sivasankaran","display_name":"Sreekanth Sivasankaran","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","author_category":"","last_name":"Sivasankaran","first_name":"Sreekanth","job_title":"","user_url":"","description":"Sreekanth Sivasankaran \u00e9 engenheiro principal\/gerente s\u00eanior de engenharia da Couchbase R&amp;D. Ele lidera o projeto e o desenvolvimento da funcionalidade de pesquisa distribu\u00edda e de alto desempenho. Ele tem mais de 17 anos de experi\u00eancia em desenvolvimento de produtos em v\u00e1rios dom\u00ednios, como telecomunica\u00e7\u00f5es, telefones celulares, software corporativo, tecnologias de big data e sistemas distribu\u00eddos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7199","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\/26446"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7199"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/5952"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7199"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}