{"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\/es\/cost-based-optimization-with-couchbase-json-database\/","title":{"rendered":"Aumente la eficacia de las consultas con la optimizaci\u00f3n basada en costes en Couchbase"},"content":{"rendered":"<p><strong>Los usuarios de bases de datos de todo tipo esperan una optimizaci\u00f3n basada en los costes.<\/strong> para sus consultas.<\/p>\n<p>Es una caracter\u00edstica est\u00e1ndar de todas las bases de datos relacionales tradicionales (RDBMS), pero todav\u00eda no ha habido un optimizador basado en costes (CBO) para las bases de datos de documentos NoSQL. Hasta ahora.<\/p>\n<p>La optimizaci\u00f3n basada en costes para las consultas de Couchbase se lanz\u00f3 como Vista previa para desarrolladores en Couchbase 6.5, y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-server-7-0-release\/?ref=blog\" target=\"_blank\" rel=\"noopener\">ya est\u00e1 listo para su disponibilidad general con Couchbase 7.0<\/a>.<\/p>\n<p>Echemos un vistazo m\u00e1s de cerca a las nuevas caracter\u00edsticas CBO de Couchbase Server 7.0.<\/p>\n<h2>A la antigua usanza: Optimizaci\u00f3n basada en reglas<\/h2>\n<p>Es imposible hablar de la optimizaci\u00f3n basada en costes sin referirse al enfoque anterior de la optimizaci\u00f3n de consultas a bases de datos: la optimizaci\u00f3n basada en reglas (RBO).<\/p>\n<p>Con la optimizaci\u00f3n basada en reglas, el optimizador de consultas considera el uso de <em>cualquier<\/em> que proporciona una ruta para recuperar el resultado de la consulta. Sin embargo, cuando al optimizador se le presenta m\u00e1s de una ruta para procesar la consulta -es decir, cuando la consulta podr\u00eda utilizar varios \u00edndices- podr\u00eda acabar utilizando <em>todos<\/em> \u00edndices.<\/p>\n<p>Con la optimizaci\u00f3n basada en el coste, el optimizador de consultas calcula el coste de utilizar cada \u00edndice y, a continuaci\u00f3n, decide el plan de ejecuci\u00f3n con el coste m\u00e1s bajo.<\/p>\n<h2>\u00bfQu\u00e9 es la optimizaci\u00f3n basada en costes?<\/h2>\n<p>La optimizaci\u00f3n basada en los costes permite al optimizador de consultas de la base de datos elegir el mejor plan (de menor coste) para procesar una consulta.<\/p>\n<p>Esto es m\u00e1s importante cuando una consulta tiene m\u00e1s de una ruta de ejecuci\u00f3n potencial, es decir, m\u00e1s de un \u00edndice cualificado. A cada ruta del plan de consulta se le asigna un coste total para todas las operaciones que debe realizar la consulta. Estos costes dependen en particular de la selectividad de los predicados especificados. Para obtener el valor de selectividad de un predicado, es necesario haber calculado previamente las estad\u00edsticas de los campos del predicado.<\/p>\n<p>Tenga en cuenta que el valor del coste es una unidad arbitraria de c\u00e1lculo estad\u00edstico: no equivale al coste de los recursos ni al uso de la CPU.<\/p>\n<h2>Optimizaci\u00f3n basada en costes frente a optimizaci\u00f3n basada en reglas<\/h2>\n<p>La optimizaci\u00f3n de consultas basada en los costes siempre proporciona una ruta de ejecuci\u00f3n mejor cuando al optimizador se le presenta m\u00e1s de una opci\u00f3n. Las estad\u00edsticas calculadas garantizan que el optimizador conozca la distribuci\u00f3n de los datos y, por tanto, la eficacia de un plan de consulta frente a otro.<\/p>\n<p>Por ejemplo, imagine <a href=\"https:\/\/www.couchbase.com\/blog\/es\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog\" target=\"_blank\" rel=\"noopener\">una colecci\u00f3n Couchbase<\/a> que contiene informaci\u00f3n sobre los clientes y sus direcciones, con un \u00edndice en <code>ix1(c\u00f3digo postal)<\/code> y <code>ix2(ciudad)<\/code>. Estad\u00edsticamente, hay m\u00e1s c\u00f3digos postales que ciudades en EE.UU. Pero eso no significa necesariamente que el uso de la <code>ix1(c\u00f3digo postal)<\/code> tiene un coste menor (y por tanto un mejor rendimiento) que el \u00edndice <code>ix2(ciudad)<\/code> \u00edndice. \u00bfPor qu\u00e9? Porque a\u00fan no sabemos si los clientes del sistema est\u00e1n distribuidos uniformemente por todas las ciudades y c\u00f3digos postales de Estados Unidos. Lo m\u00e1s probable es que no lo est\u00e9n.<\/p>\n<p>En este caso, son las estad\u00edsticas recopiladas previamente por el optimizador basado en costes las que le ayudan a decidir la ruta de consulta de menor coste en tiempo de ejecuci\u00f3n.<\/p>\n<p>Con la optimizaci\u00f3n basada en reglas, si una consulta tiene predicados tanto de ciudad como de c\u00f3digo postal, el optimizador de consultas utiliza ambos \u00edndices con la exploraci\u00f3n de intersecci\u00f3n. Sin embargo, el CBO s\u00f3lo utiliza un \u00edndice, el que tenga el menor coste en funci\u00f3n de los datos de la colecci\u00f3n.<\/p>\n<h2>C\u00f3mo activar la optimizaci\u00f3n basada en costes en Couchbase<\/h2>\n<p>Hay dos pasos importantes que debe seguir para utilizar la optimizaci\u00f3n basada en costes en Couchbase Server 7.0:<\/p>\n<p><strong>1. Activar la funci\u00f3n CBO<\/strong><\/p>\n<p>Actualmente el optimizador basado en costes est\u00e1 activado por defecto en Couchbase 7.0.<\/p>\n<p>Sin embargo, puede desactivarlo con la opci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/n1ql\/?ref=blog\" target=\"_blank\" rel=\"noopener\">N1QL<\/a> Valor de Control de Caracter\u00edsticas en Configuraci\u00f3n-&gt;Configuraci\u00f3n de Consultas. Si planea utilizar la optimizaci\u00f3n basada en costes, aseg\u00farese de que est\u00e1 activada.<\/p>\n<p><strong>2. Recopilar estad\u00edsticas<\/strong><\/p>\n<p>Adem\u00e1s de tener activado el optimizador basado en costes en su cl\u00faster, tambi\u00e9n debe haber recopilado estad\u00edsticas sobre los campos subyacentes para los \u00edndices utilizados por sus consultas. Aqu\u00ed tienes un ejemplo de consulta sobre c\u00f3mo hacerlo:<\/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 ejemplo, utilizando el <code>viaje-muestra<\/code> la consulta anterior tendr\u00eda el siguiente aspecto:<\/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>Tambi\u00e9n puede recopilar las estad\u00edsticas seg\u00fan el nombre del \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>Tenga en cuenta que tambi\u00e9n puede desactivar el optimizador basado en costes utilizando la opci\u00f3n <code>cbo_flag<\/code> en su API, o borrando las estad\u00edsticas con <code>UPDATE ESTAD\u00cdSTICAS  DELETE (,..)<\/code>.<\/p>\n<h2>El cubo del sistema CBO<\/h2>\n<p>Cuando haya activado la optimizaci\u00f3n basada en costes y haya recopilado estad\u00edsticas, observar\u00e1 que hay un Bucket adicional en su cluster llamado <code>N1QL_SYSTEM_BUCKET.N1QL_SYSTEM_SCOPE.N1QL_CBO_STAT<\/code>. El acceso directo a este cubo est\u00e1 restringido a los administradores del sistema.<\/p>\n<p>Utilizaci\u00f3n de la <code>ACTUALIZAR ESTAD\u00cdSTICAS<\/code> puede a\u00f1adir m\u00e1s estad\u00edsticas al cubo o eliminar las estad\u00edsticas con <code>ACTUALIZAR ESTAD\u00cdSTICAS PARA  BORRAR<\/code>.<\/p>\n<h2>Optimizador basado en costes en acci\u00f3n<\/h2>\n<p>Veamos con m\u00e1s detalle c\u00f3mo funciona la optimizaci\u00f3n basada en costes en Couchbase 7.0 utilizando la funci\u00f3n <code>`viaje-muestra<\/code> en el siguiente escenario.<\/p>\n<h3>Mejor selecci\u00f3n de \u00edndices con optimizaci\u00f3n basada en los costes<\/h3>\n<p>Supongamos que ha definido dos \u00edndices para el archivo <code>`travel-sample`._default.airport<\/code> Colecci\u00f3n.<\/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>Y usted tiene una pregunta a continuaci\u00f3n:<\/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>Si no se utilizara la optimizaci\u00f3n basada en costes anterior, el plan de ejecuci\u00f3n del optimizador basado en reglas para la consulta anterior ser\u00eda:<\/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>Obs\u00e9rvese que, dado que los predicados de consulta est\u00e1n tanto en el <code>ciudad<\/code> y <code>faa<\/code> ambos \u00edndices se utilizan en la b\u00fasqueda de intersecci\u00f3n. Obtenga m\u00e1s informaci\u00f3n sobre las exploraciones de intersecci\u00f3n en este art\u00edculo: <a href=\"https:\/\/dzone.com\/articles\/performance-ingredients-for-nosql-intersect-scans\/?ref=hello-from-couchbase\" target=\"_blank\" rel=\"noopener\">Ingredientes de rendimiento para NoSQL: Exploraciones de intersecci\u00f3n en N1QL<\/a>.<\/p>\n<p>A continuaci\u00f3n, active la optimizaci\u00f3n basada en costes para la consulta de la base de datos. Como la CBO ya est\u00e1 activada por defecto, lo \u00fanico que hay que hacer es recopilar las estad\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>Una vez recopiladas las estad\u00edsticas, ejecute el programa <code>SELECCIONE<\/code> pregunta de nuevo.<\/p>\n<p>Ver\u00e1 que el plan de ejecuci\u00f3n pasa a utilizar \u00fanicamente el comando <code>aeropuerto.faa<\/code> \u00edndice. Este cambio se debe a que las estad\u00edsticas est\u00e1n indicando al optimizador que el <code>faa<\/code> tiene una mejor selectividad en comparaci\u00f3n con el <code>ciudad<\/code> campo. Por lo tanto, el <code>aeropuerto.faa<\/code> es el \u00edndice m\u00e1s eficaz para la 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>Una mejor JOIN con optimizaci\u00f3n basada en los costes<\/h3>\n<p>Veamos otro ejemplo de optimizaci\u00f3n de consulta basada en costes que ilustra c\u00f3mo el optimizador basado en costes elige un mejor tipo de JOIN entre <code>aeropuerto<\/code> y <code>ruta<\/code>.<\/p>\n<p>En primer lugar, creamos un \u00edndice para rastrear el aeropuerto de origen:<\/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>Y a continuaci\u00f3n utilizamos la siguiente consulta:<\/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>Con el antiguo optimizador basado en reglas, el plan de ejecuci\u00f3n de la consulta anterior tendr\u00eda el siguiente aspecto:<\/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 el plan de ejecuci\u00f3n RBO anterior utiliza un bucle anidado para UNIR la colecci\u00f3n de aeropuertos a la colecci\u00f3n de rutas.<\/p>\n<p>A continuaci\u00f3n, debe activar la optimizaci\u00f3n basada en costes para la consulta. Como la CBO ya est\u00e1 activada por defecto, todo lo que tiene que hacer es recopilar las estad\u00edsticas del campo en la Colecci\u00f3n.<\/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>Con las estad\u00edsticas de optimizaci\u00f3n basadas en costes disponibles en los dos campos subyacentes para los \u00edndices, el optimizador pasa a utilizar un <code>HASH<\/code> para la colecci\u00f3n 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>Soluci\u00f3n de problemas del optimizador basado en costes en Couchbase<\/h2>\n<ol>\n<li>La optimizaci\u00f3n basada en costes est\u00e1 activada por defecto en Couchbase 7.0. Sin embargo, las estad\u00edsticas deben estar presentes en los campos espec\u00edficos de su Bucket\/Collections antes de que el optimizador basado en costes funcione eficazmente.<\/li>\n<li>Puede desactivar la optimizaci\u00f3n basada en costes a nivel de cl\u00faster utilizando el campo Control de funciones N1QL a\u00f1adiendo 16 al valor. Se trata de un conjunto con x10 bits.<\/li>\n<li>El servicio de consulta no actualiza autom\u00e1ticamente las estad\u00edsticas CBO. Las estad\u00edsticas deben recopilarse peri\u00f3dicamente o despu\u00e9s de un cambio significativo en el contenido de la colecci\u00f3n. Recomiendo recopilar las estad\u00edsticas despu\u00e9s de una gran carga de datos; de lo contrario, una ejecuci\u00f3n semanal deber\u00eda ser suficiente.<\/li>\n<li>La optimizaci\u00f3n basada en los costes s\u00f3lo se tiene en cuenta para una consulta si las estad\u00edsticas est\u00e1n disponibles para <em>todos los \u00edndices considerados por el optimizador<\/em>. Puede recopilar las estad\u00edsticas de todos los \u00edndices de un espacio de claves determinado de la siguiente forma:\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>M\u00e1s recursos<\/h2>\n<p>Para obtener m\u00e1s informaci\u00f3n sobre el optimizador basado en costes para JSON, y sobre la versi\u00f3n 7.0 de Couchbase en general, consulta los siguientes recursos:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/why-cost-based-optimizer-for-nosql-n1ql-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Menos es m\u00e1s: \u00bfPor qu\u00e9 utilizar un optimizador basado en costes?<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/cost-based-optimizer-for-couchbase-n1ql-sql-for-json\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Optimizador basado en costes para el lenguaje 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\">Selecci\u00f3n de rutas de acceso en un sistema de gesti\u00f3n de bases de datos relacionales<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Novedades de 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 la versi\u00f3n de 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>\u00bfQuieres probar la optimizaci\u00f3n basada en costes con Couchbase?<a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Introducci\u00f3n a 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.0 (Yoast SEO v26.0) - 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\/es\/cost-based-optimization-with-couchbase-json-database\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/es\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cost-Based Query Optimization Example to Boost Efficiency","description":"La optimizaci\u00f3n basada en costes para consultas Couchbase est\u00e1 lista para su disponibilidad general con Couchbase 7.0. Echa un vistazo a las nuevas funciones 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\/es\/cost-based-optimization-with-couchbase-json-database\/","og_locale":"es_MX","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\/es\/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":"es","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":"La optimizaci\u00f3n basada en costes para consultas Couchbase est\u00e1 lista para su disponibilidad general con Couchbase 7.0. Echa un vistazo a las nuevas funciones de CBO.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/cost-based-optimization-with-couchbase-json-database\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"es","@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\/es\/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 es director de producto principal del servicio de consultas de Couchbase. Antes de Couchbase, trabaj\u00f3 en Oracle y dirigi\u00f3 el equipo de gesti\u00f3n de productos para Sales Clould Analytics y CRM OnDemand. Binh es licenciado en Inform\u00e1tica por la Universidad de Brighton, Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9765","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\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=9765"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9765\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11680"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=9765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=9765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=9765"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=9765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}