{"id":2034,"date":"2016-02-04T19:35:47","date_gmt":"2016-02-04T19:35:47","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2034"},"modified":"2025-06-13T21:23:10","modified_gmt":"2025-06-14T04:23:10","slug":"prepare-for-performance","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/prepare-for-performance\/","title":{"rendered":"\u00a1Prep\u00e1rate para esto!"},"content":{"rendered":"<h2><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10267 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2016\/02\/prepare-for-performance.png\" alt=\"\" width=\"446\" height=\"182\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepare-for-performance.png 446w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepare-for-performance-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepare-for-performance-20x8.png 20w\" sizes=\"auto, (max-width: 446px) 100vw, 446px\" \/><\/h2>\n<h2>Prep\u00e1rese....<\/h2>\n<p>Uno de los aspectos m\u00e1s impresionantes del uso de N1QL es la posibilidad de utilizar sentencias preparadas. \u00bfQu\u00e9 son las sentencias preparadas? \u00bfPor qu\u00e9 usarlas? \u00bfPara qu\u00e9 sirven? Considere el siguiente ejemplo de la muestra de viajes y el conjunto de datos que se incluyen con cada instalaci\u00f3n de couchbase: Pensemos en usuarios que crean cuentas, inician sesi\u00f3n y buscan vuelos. Podr\u00edamos querer una forma r\u00e1pida de identificar a los usuarios que han utilizado el sistema, pero que nunca han reservado un vuelo. Se trata de un caso de uso com\u00fan para la segmentaci\u00f3n publicitaria y crea una oportunidad para un punto de contacto. Una consulta simplificada podr\u00eda tener este aspecto:<\/p>\n<p><strong>SELECT name FROM `travel-sample` WHERE _type=&#8217;User&#8217; AND ARRAY_LENGTH(flights)=0; <\/strong><\/p>\n<p>Vamos a repasar los pasos necesarios para ejecutar esta consulta desde nuestra aplicaci\u00f3n. Utilizaremos nodejs para nuestro ejemplo, y todos los SDK que utilicen la API 2.0 funcionar\u00e1n de forma id\u00e9ntica.<\/p>\n<ul>\n<li>En primer lugar, tenemos que crear la consulta N1QL a partir de una cadena.<\/li>\n<li>En segundo lugar, serializamos la solicitud y la enviamos a CBQ-ENGINE en el nodo servidor couchbase utilizando HTTP REST.<\/li>\n<li>En tercer lugar, CBQ-ENGINE debe analizar la consulta.<\/li>\n<li>En cuarto lugar, el Optimizador de CBQ-ENGINE debe determinar un plan de ejecuci\u00f3n.<\/li>\n<li>En quinto lugar, CBQ-ENGINE debe crear el plan de ejecuci\u00f3n.<\/li>\n<li>En sexto lugar, CBQ-ENGINE ejecuta el plan.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10270\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2016\/02\/unprepared.png\" alt=\"\" width=\"622\" height=\"32\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/unprepared.png 622w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/unprepared-300x15.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/unprepared-20x1.png 20w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/p>\n<p>Se trata de una cantidad de trabajo considerable para emitir una simple consulta, especialmente en el caso de consultas que se repiten varias veces. Hay casos en tu aplicaci\u00f3n en los que la misma consulta puede ejecutarse miles de veces en una hora. \u00bfC\u00f3mo podemos eliminar la sobrecarga de analizar y crear un plan?<\/p>\n<h2>\u00a1Prep\u00e1rate para acelerar!<\/h2>\n<p>Podemos eliminar la sobrecarga preparando la sentencia para su ejecuci\u00f3n. Utilizamos un par\u00e1metro adicional en nuestra consulta N1QL, adhoc=false.<\/p>\n<p>\u00bfQu\u00e9 significa eso exactamente? Significa que el SDK pasar\u00e1 una consulta a CBQ-ENGINE, dici\u00e9ndole al motor la primera vez que se emita la consulta que \"quiero que generes un plan de ejecuci\u00f3n, que pueda reutilizar, y me lo devuelvas en un formato comprimido\". Despu\u00e9s de esa primera vez, cada vez que la aplicaci\u00f3n llame a esa consulta en particular, el SDK pasar\u00e1 el plan comprimido a CBQ-ENGINE, eliminando todos los pasos de an\u00e1lisis y creaci\u00f3n y pasando directamente a la ejecuci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10271\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2016\/02\/prepared.png\" alt=\"\" width=\"292\" height=\"32\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepared.png 292w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepared-20x2.png 20w\" sizes=\"auto, (max-width: 292px) 100vw, 292px\" \/><\/p>\n<h2>Estar preparado<\/h2>\n<p>\u00bfC\u00f3mo funciona? Cuando se pasa una consulta y el indicador adhoc se establece en false, el SDK almacenar\u00e1 el plan de consulta local comprimido en la cach\u00e9 para reutilizarlo en el futuro; cuando se vuelva a realizar la consulta, el SDK utilizar\u00e1 el plan local comprimido de la cach\u00e9. El SDK utiliza una cach\u00e9 LRU (least recently used) para conservar memoria: el SDK comenzar\u00e1 a eliminar las entradas m\u00e1s antiguas cuando la cach\u00e9 alcance un tama\u00f1o de 5000 consultas.<\/p>\n<p>Todo esto se gestiona internamente dentro del SDK. Como usuario, lo \u00fanico que tienes que hacer es establecer la propiedad adhoc en false.<\/p>\n<h2>Una onza de prevenci\u00f3n<\/h2>\n<p>Algunas buenas pr\u00e1cticas a tener en cuenta al utilizar declaraciones preparadas<\/p>\n<ul>\n<li>Actualmente, las sentencias preparadas son espec\u00edficas de cada instancia del SDK. La cach\u00e9 LRU local de sentencias preparadas es espec\u00edfica para cada instancia del SDK que la aplicaci\u00f3n est\u00e1 utilizando. Actualmente no existe una cach\u00e9 compartida de sentencias entre clientes.<\/li>\n<li>Si su aplicaci\u00f3n es de naturaleza extremadamente ad hoc, las sentencias preparadas son una mala elecci\u00f3n para este tipo de consultas. La sobrecarga de la preparaci\u00f3n anula cualquier ganancia de rendimiento obtenida al poder utilizar repetidamente el mismo plan de ejecuci\u00f3n.<\/li>\n<li>Las sentencias preparadas son planes de ejecuci\u00f3n congelados en el tiempo. Los cambios de topolog\u00eda que muevan, alteren o eliminen \u00edndices invalidar\u00e1n el plan de ejecuci\u00f3n actual. Los SDKs han incorporado una l\u00f3gica de reintento para manejar estos casos.<\/li>\n<li>Si tiene intenci\u00f3n de realizar la misma consulta repetidamente con diferentes par\u00e1metros, utilice consultas parametrizadas en lugar de incrustar los valores de los par\u00e1metros en la cadena de consulta. Esto le permite utilizar el mismo plan con diferentes par\u00e1metros.<\/li>\n<\/ul>\n<p>Para obtener m\u00e1s ejemplos sobre c\u00f3mo utilizar Couchbase en el idioma de su elecci\u00f3n, consulte la p\u00e1gina <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/developer-guide\/intro.html\">Gu\u00eda del desarrollador<\/a>y github <a href=\"https:\/\/github.com\/couchbaselabs\/devguide-examples\">repositorio<\/a>. Descargar <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/\">Couchbase<\/a> \u00a1hoy mismo y prep\u00e1rese!<\/p>","protected":false},"excerpt":{"rendered":"<p>Get Prepared&#8230;. One of the more impressive aspects of using N1QL\u00a0is the ability to use prepared statements. What are prepared statements? Why use them? What&#8217;s the big deal? Consider the following example\u00a0from the travel-sample bucket and dataset that are bundled [&hellip;]<\/p>","protected":false},"author":20,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9417,1822,1812],"tags":[],"ppma_author":[9019],"class_list":["post-2034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","category-node-js","category-n1ql-query"],"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>Prepare for This! - The Couchbase Blog<\/title>\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\/prepare-for-performance\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prepare for This!\" \/>\n<meta property=\"og:description\" content=\"Get Prepared&#8230;. One of the more impressive aspects of using N1QL\u00a0is the ability to use prepared statements. What are prepared statements? Why use them? What&#8217;s the big deal? Consider the following example\u00a0from the travel-sample bucket and dataset that are bundled [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/prepare-for-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-04T19:35:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:23:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepare-for-performance.png\" \/>\n\t<meta property=\"og:image:width\" content=\"446\" \/>\n\t<meta property=\"og:image:height\" content=\"182\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Todd Greenstein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@todd_greenstein\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Todd Greenstein\" \/>\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\/prepare-for-performance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/\"},\"author\":{\"name\":\"Todd Greenstein\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/64b5d1e5969768c5d63c11c696951ed3\"},\"headline\":\"Prepare for This!\",\"datePublished\":\"2016-02-04T19:35:47+00:00\",\"dateModified\":\"2025-06-14T04:23:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/\"},\"wordCount\":661,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"High Performance\",\"Node.js\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/\",\"name\":\"Prepare for This! - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-02-04T19:35:47+00:00\",\"dateModified\":\"2025-06-14T04:23:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prepare for This!\"}]},{\"@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\/64b5d1e5969768c5d63c11c696951ed3\",\"name\":\"Todd Greenstein\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/abfbe093983052aa28595343c19888ce\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f230045f7f6e636cf01abbd35f1cbf66a1206fbe149a0d4f0bbdd992c646257d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f230045f7f6e636cf01abbd35f1cbf66a1206fbe149a0d4f0bbdd992c646257d?s=96&d=mm&r=g\",\"caption\":\"Todd Greenstein\"},\"description\":\"Todd Greenstein is a Solution Architect at Couchbase. Todd is specialize in API design, architecture, data modeling, nodejs and golang development.\",\"sameAs\":[\"https:\/\/x.com\/todd_greenstein\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/todd-greenstein\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Prepare for This! - The Couchbase Blog","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\/prepare-for-performance\/","og_locale":"es_MX","og_type":"article","og_title":"Prepare for This!","og_description":"Get Prepared&#8230;. One of the more impressive aspects of using N1QL\u00a0is the ability to use prepared statements. What are prepared statements? Why use them? What&#8217;s the big deal? Consider the following example\u00a0from the travel-sample bucket and dataset that are bundled [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/prepare-for-performance\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-02-04T19:35:47+00:00","article_modified_time":"2025-06-14T04:23:10+00:00","og_image":[{"width":446,"height":182,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/02\/prepare-for-performance.png","type":"image\/png"}],"author":"Todd Greenstein","twitter_card":"summary_large_image","twitter_creator":"@todd_greenstein","twitter_misc":{"Written by":"Todd Greenstein","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/"},"author":{"name":"Todd Greenstein","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/64b5d1e5969768c5d63c11c696951ed3"},"headline":"Prepare for This!","datePublished":"2016-02-04T19:35:47+00:00","dateModified":"2025-06-14T04:23:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/"},"wordCount":661,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["High Performance","Node.js","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/","url":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/","name":"Prepare for This! - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-02-04T19:35:47+00:00","dateModified":"2025-06-14T04:23:10+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/prepare-for-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Prepare for This!"}]},{"@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\/64b5d1e5969768c5d63c11c696951ed3","name":"Todd Greenstein","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/abfbe093983052aa28595343c19888ce","url":"https:\/\/secure.gravatar.com\/avatar\/f230045f7f6e636cf01abbd35f1cbf66a1206fbe149a0d4f0bbdd992c646257d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f230045f7f6e636cf01abbd35f1cbf66a1206fbe149a0d4f0bbdd992c646257d?s=96&d=mm&r=g","caption":"Todd Greenstein"},"description":"Todd Greenstein is a Solution Architect at Couchbase. Todd is specialize in API design, architecture, data modeling, nodejs and golang development.","sameAs":["https:\/\/x.com\/todd_greenstein"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/todd-greenstein\/"}]}},"authors":[{"term_id":9019,"user_id":20,"is_guest":0,"slug":"todd-greenstein","display_name":"Todd Greenstein","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f230045f7f6e636cf01abbd35f1cbf66a1206fbe149a0d4f0bbdd992c646257d?s=96&d=mm&r=g","author_category":"","last_name":"Greenstein","first_name":"Todd","job_title":"","user_url":"","description":"Todd Greenstein es Arquitecto de Soluciones en Couchbase. Todd est\u00e1 especializado en dise\u00f1o de APIs, arquitectura, modelado de datos y desarrollo en nodejs y golang."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2034","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\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2034"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2034\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2034"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}