{"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\/es\/fts-performance-improvements-in-6-5-0-part-2\/","title":{"rendered":"Mejoras de rendimiento de FTS en 6.5.0 - Parte 2"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Para todos aquellos que est\u00e1n inquietos ansiosos, perm\u00edtanme revelar el secreto profundo y oscuro de todas las optimizaciones de rendimiento en FTS en 6.5.0 es,<\/span><\/p>\n<p><i><span style=\"font-weight: 400\"><strong>\"<\/strong> Haga menos y menos a menudo <strong>** \"<\/strong><\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Y estoy seguro de que estar\u00e1 de acuerdo conmigo cuando se desplace m\u00e1s abajo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">(Para los que se perdieron - <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/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>Recopilaci\u00f3n dispersa sobre gRPC<\/b><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Normalmente, un \u00edndice FTS se divide en sub\u00edndices y las particiones del \u00edndice se distribuyen entre los nodos de un cl\u00faster de varios nodos. Cualquier consulta de b\u00fasqueda entrante t\u00edpica se dispersa a todos esos nodos\/particiones de \u00edndice remotas y los resultados de la b\u00fasqueda se recogen de diferentes nodos, se fusionan por rango y se env\u00edan de vuelta al usuario por el nodo coordinador o el nodo de gesti\u00f3n de consultas.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Hasta el lanzamiento de la versi\u00f3n 6.5.0, toda la dispersi\u00f3n en FTS se realiza a trav\u00e9s de http\/http2. <\/span><span style=\"font-weight: 400\">Alejarse de esta recopilaci\u00f3n dispersa basada en REST era un tema pendiente desde hace mucho tiempo en el backlog del equipo. Procrastinar nos ha beneficiado en este caso.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Con la aparici\u00f3n de las funciones de la versi\u00f3n 6.5.0, como la integraci\u00f3n de N1QL-FTS, nos hemos dado cuenta de que ha llegado el momento de experimentar con gRPC para la recopilaci\u00f3n interna de datos dispersos. Dado que ya se ha hablado mucho sobre los pros de gRPC en toda la web, me abstendr\u00e9 de repetirlo aqu\u00ed.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Con FTS, nos interesaba sobre todo explorar las capacidades de streaming y multiplexaci\u00f3n de peticiones de gRPC. La transmisi\u00f3n de los resultados de b\u00fasqueda a los clientes ayuda a resolver el caso de uso de servir un resultado de b\u00fasqueda con millones de resultados no clasificados (clasificados de forma constante) de una forma m\u00e1s respetuosa con la memoria.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Desaf\u00edos interesantes fueron,<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obtener las interfaces correctas para permitir que el paquete cbft de nivel superior escriba los resultados de la b\u00fasqueda en el flujo del cliente de forma configurable (p. ej.: lote de aciertos o un solo acierto) a medida que los iteradores de la biblioteca de indexaci\u00f3n recorren los documentos coincidentes en alg\u00fan lugar profundo del motor de almacenamiento.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Definici\u00f3n de los tipos de mensajes protobuf adecuados en el contexto de los tipos de mensajes existentes.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Conseguir el mensaje protobuf adecuado no fue muy sencillo, ya que FTS ya contaba con los tipos de mensaje json establecidos, que estaban estrechamente entretejidos con los tipos Golang internos y todos nuestros clientes los utilizan. Por lo tanto, cualquier nuevo formato de mensaje ten\u00eda que tener en cuenta los tipos de mensajes heredados. Esto introduce un nivel extra de esfuerzos de marshal\/unmarshal entre esos tipos Go y los nuevos tipos protobuf. Y esto, de hecho, activ\u00f3 el bot\u00f3n de p\u00e1nico durante las pruebas iniciales debido a las abolladuras significativas en nuestros gr\u00e1ficos de rendimiento.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Inmediatamente abordamos ese problema reduciendo los gastos generales de an\u00e1lisis del mensaje de b\u00fasqueda heredado del nuevo tipo de mensaje protobuf. La idea era incrustar todo el mensaje de b\u00fasqueda heredado como una porci\u00f3n de byte dentro del nuevo mensaje proto, lo que eliminaba algunos rodeos y creaba mucha menos basura.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">La recolecci\u00f3n dispersa basada en gRPC ha mostrado un <\/span><b>2X <\/b><span style=\"font-weight: 400\">para consultas de t\u00e9rminos de baja frecuencia en nuestras pruebas internas con un cl\u00faster de 3 nodos.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4><b>Consulta de rango num\u00e9rico\u00a0<\/b><\/h4>\n<p><span style=\"font-weight: 400\">La biblioteca de indexaci\u00f3n de textos que utilizamos (<\/span><a href=\"https:\/\/github.com\/blevesearch\/bleve\"><span style=\"font-weight: 400\">bleve<\/span><\/a><span style=\"font-weight: 400\">) almacena los valores de campo num\u00e9rico en diferentes puntos de precisi\u00f3n, es decir, un \u00fanico valor de campo num\u00e9rico se indexa como m\u00faltiples tokens codificados en binario desplazado. Aunque este enfoque aumenta el tama\u00f1o del \u00edndice, a la hora de realizar una consulta, el resultado es un menor n\u00famero de t\u00e9rminos que buscar para un rango num\u00e9rico determinado, lo que agiliza enormemente las consultas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Oportunidad<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Similar al modus operandi de las consultas geogr\u00e1ficas mencionadas en <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/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\"> de esta serie, la implementaci\u00f3n de la consulta de rango num\u00e9rico tambi\u00e9n deriva matem\u00e1ticamente los t\u00e9rminos num\u00e9ricos exactos (t\u00e9rminos candidatos) que se van a buscar. La l\u00f3gica de filtrado de t\u00e9rminos candidatos utilizada para la consulta de rango num\u00e9rico es similar a la de las consultas difusas\/regex. Intentar\u00e1 filtrar los t\u00e9rminos candidatos mediante la intersecci\u00f3n de los dos DFAs, es decir, la intersecci\u00f3n entre el Diccionario de T\u00e9rminos y el del DFA\/FST temporal construido a partir de los rangos num\u00e9ricos creados matem\u00e1ticamente. Sin embargo, a partir de los perfiles del grafo golang flame, este enfoque result\u00f3 ser menos eficiente en memoria y CPU.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Hemos mejorado esta l\u00f3gica de filtrado con una API de b\u00fasqueda de diccionarios de t\u00e9rminos m\u00e1s limpia y ligera que ayud\u00f3 a controlar el uso de memoria y cpu. Y esto elimin\u00f3 esos picos adicionales que aparec\u00edan en los gr\u00e1ficos de llama.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Este cambio ha provocado <\/span><b>77% <\/b><span style=\"font-weight: 400\">Mejoras de rendimiento en las pruebas de rendimiento internas del FTS, que tuvieron un flujo constante de mutaciones entrantes (10.000 conjuntos\/seg).\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Prefijo\/Consultas difusas\/Cartas comod\u00edn\u00a0<\/b><\/h4>\n<h5><b>Oportunidad<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Todos estos tipos de consulta hacen un uso intensivo de los recorridos FST. Las consultas de prefijos aprovechan los iteradores FST basados en rangos, mientras que las consultas comod\u00edn\/fuzzy utilizan los iteradores basados en aut\u00f3matas, es decir, un aut\u00f3mata regex para las consultas comod\u00edn\/regex y un aut\u00f3mata levenshtein para las consultas fuzzy.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Identificamos las estructuras compartibles de forma concurrente en estas consultas y las almacenamos en cach\u00e9 en un <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/scorch-index-type-why-does-it-matter\/\"><span style=\"font-weight: 400\">segmento<\/span><\/a><span style=\"font-weight: 400\"> para mejorar la reutilizaci\u00f3n de las consultas. Este m\u00e9todo redujo en gran medida la cantidad de basura creada y nos ayud\u00f3 a ahorrar ciclos de GC.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Resultado<\/b><\/h5>\n<p><span style=\"font-weight: 400\">La mejora del almacenamiento en cach\u00e9 y la reutilizaci\u00f3n ayudaron a mejorar las cifras de rendimiento de -.<br \/>\n<\/span><span style=\"font-weight: 400\">Comod\u00edn de<\/span><b> 25%<\/b><span style=\"font-weight: 400\">,<\/span><b>\u00a0 <\/b><span style=\"font-weight: 400\">Fuzzy by<\/span><b> 12%<\/b><span style=\"font-weight: 400\">,<\/span> <span style=\"font-weight: 400\">Prefijo<\/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>S\u00f3lo hay tres optimizaciones: \"Haz menos. Hazlo menos a menudo. Hazlo m\u00e1s r\u00e1pido\".<br \/>\n<\/em><em>Las mayores ganancias proceden de la 1, pero dedicamos todo nuestro tiempo a la 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.8 (Yoast SEO v25.8) - 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\/es\/fts-performance-improvements-in-6-5-0-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a\",\"name\":\"Sreekanth Sivasankaran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/es\/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":"FTS performance improvements through gRPC for scatter gather , and with numeric range queries and wildcard\/regex queries in 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\/es\/fts-performance-improvements-in-6-5-0-part-2\/","og_locale":"es_MX","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\/es\/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":"es","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":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fts-performance-improvements-in-6-5-0-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a","name":"Sreekanth Sivasankaran","image":{"@type":"ImageObject","inLanguage":"es","@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 es Ingeniero Principal\/Gerente Superior de Ingenier\u00eda en Couchbase R&amp;D. Dirige el dise\u00f1o y desarrollo de la funcionalidad de b\u00fasqueda distribuida y de alto rendimiento. Cuenta con m\u00e1s de 17 a\u00f1os de experiencia en el desarrollo de productos en diversos \u00e1mbitos como las telecomunicaciones, los tel\u00e9fonos m\u00f3viles, el software empresarial, las tecnolog\u00edas de macrodatos y los sistemas distribuidos.","url":"https:\/\/www.couchbase.com\/blog\/es\/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 es Ingeniero Principal\/Gerente Superior de Ingenier\u00eda en Couchbase R&amp;D. Dirige el dise\u00f1o y desarrollo de la funcionalidad de b\u00fasqueda distribuida y de alto rendimiento. Cuenta con m\u00e1s de 17 a\u00f1os de experiencia en el desarrollo de productos en diversos \u00e1mbitos como las telecomunicaciones, los tel\u00e9fonos m\u00f3viles, el software empresarial, las tecnolog\u00edas de big data y los sistemas distribuidos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/26446"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=7199"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/5952"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=7199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=7199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=7199"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=7199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}