{"id":5584,"date":"2018-08-09T10:08:54","date_gmt":"2018-08-09T17:08:54","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=5584"},"modified":"2019-01-02T05:45:56","modified_gmt":"2019-01-02T13:45:56","slug":"10-other-things-that-developers-must-know-about-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/10-other-things-that-developers-must-know-about-couchbase\/","title":{"rendered":"Otras 10 cosas que los desarrolladores deben saber sobre Couchbase"},"content":{"rendered":"<p>Couchbase Server 5.0 y 5.5 han sido dos grandes lanzamientos. Veamos algunas de las nuevas caracter\u00edsticas que los desarrolladores no pueden perderse:<\/p>\n<h2><strong>1) Subdocumentos<\/strong><\/h2>\n<p>Esta caracter\u00edstica ha estado aqu\u00ed por un tiempo, pero todav\u00eda vale la pena mencionarla. Algunos almacenes Clave-Valor s\u00f3lo permiten traer el documento completo, lo cual es una caracter\u00edstica razonable. Despu\u00e9s de todo, es un Key-Value Store. Sin embargo, si est\u00e1s usando Couchbase como KV, a\u00fan puedes manipular partes del documento especificando la ruta a \u00e9l. Ej:<\/p>\n<p>Dado el siguiente documento:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"name\": \"Douglas Reynholm\",\r\n  \"email\": \"douglas@reynholmindustries.com\",\r\n  \"addresses\": {\r\n    \"billing\": {\r\n      \"line1\": \"123 Any Street\",\r\n      \"line2\": \"Anytown\",\r\n      \"country\": \"United Kingdom\"\r\n    },\r\n    \"delivery\": {\r\n      \"line1\": \"123 Any Street\",\r\n      \"line2\": \"Anytown\",\r\n      \"country\": \"United Kingdom\"\r\n    }\r\n  },\r\n  \"purchases\": {\r\n    \"complete\": [\r\n      339, 976, 442, 666\r\n    ],\r\n    \"abandoned\": [\r\n      157, 42, 999\r\n    ]\r\n  }\r\n}<\/pre>\n<p>Puede manipular partes del documento simplemente especificando la ruta a \u00e9l, como <strong>GET('direcciones.facturaci\u00f3n')<\/strong>\u00a0o <strong>ARRAY_APPEND('compras.abandonadas', 42)<\/strong><\/p>\n<p>Si quiere saber m\u00e1s, consulte este art\u00edculo <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/subdocument-operations.html\">entrada del blog<\/a> o nuestro <a href=\"https:\/\/www.couchbase.com\/blog\/es\/subdoc-explained\/\">documentaci\u00f3n oficial<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>2)Concurso completo<\/h2>\n<p>Evento es claramente una de las caracter\u00edsticas m\u00e1s interesantes en Couchbase 5.5 y ya tenemos un mont\u00f3n de entradas de blog que cubren, como <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-data-platform-action-eventing-functions\/\">aqu\u00ed<\/a> o <a href=\"https:\/\/www.couchbase.com\/blog\/es\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\">aqu\u00ed<\/a>. Para los que a\u00fan no lo conozcan, el Servicio Eventing permite escribir\u00a0<strong>funciones del servidor<\/strong>\u00a0que se activan autom\u00e1ticamente cada vez que se inserta\/actualiza\/elimina un documento. Estas funciones pueden escribirse f\u00e1cilmente utilizando una sintaxis similar a la de JavaScript:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5585\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/eventing.png\" alt=\"\" width=\"544\" height=\"322\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/eventing.png 716w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/eventing-300x178.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/eventing-20x12.png 20w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/p>\n<p>Adem\u00e1s, tambi\u00e9n puede llamar a puntos finales en su aplicaci\u00f3n a trav\u00e9s de curl:<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n  if (doc.resourceType != 'Observation') return;\r\n \r\n  let reference = doc.subject.reference;\r\n  let url = \"https:\/\/localhost:8080\/events\/\" + reference.substr(9);\r\n  let data = JSON.stringify({\r\n    \"reference\": doc.subject.reference,\r\n    \"code\": doc.code.coding[0].code,\r\n    \"recordedAt\": doc.issued,\r\n    \"value\": doc.valueQuantity.value\r\n  });\r\n \r\n  let curl = SELECT CURL($url, {\r\n    \"request\": \"POST\",\r\n    \"header\": [ \"Content-Type: application\/json\", \"accept: application\/json\" ],\r\n    \"data\": $data\r\n  });\r\n \r\n  curl.execQuery();\r\n}\r\n \r\nfunction OnDelete(meta) {}<\/pre>\n<p>&nbsp;<\/p>\n<h2><strong>3)Uniones ANSI<\/strong><\/h2>\n<p><strong>\u00a0<\/strong>Couchbase le permite utilizar <strong>se une a<\/strong> en tus consultas desde hace bastante tiempo, pero hasta ahora s\u00f3lo se pod\u00eda conseguir utilizando nuestra propia sintaxis. Desde Couchbase 5.5 tambi\u00e9n puedes usar la sintaxis ANSI JOIN:<\/p>\n<pre class=\"lang:default decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route\r\n     ON airport.faa = route.sourceairport\r\n        AND route.type = \"route\"\r\nWHERE airport.type = \"airport\"\r\n  AND airport.city = \"San Francisco\"\r\n  AND airport.country = \"United States\";\r\n<\/pre>\n<p>M\u00e1s informaci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/ansi-join-support-n1ql\/\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>4)B\u00fasqueda de texto completo <\/strong><\/h2>\n<p>La mayor\u00eda de las aplicaciones orientadas al usuario necesitan implementar alg\u00fan tipo de b\u00fasqueda avanzada. Este tipo de funci\u00f3n suele requerir que se env\u00eden datos a una herramienta de terceros como Solr o Elastic Search. Sin embargo, a\u00f1adir este tipo de herramientas aumenta el coste y la complejidad de la infraestructura de forma significativa, por no mencionar todo el c\u00f3digo necesario para enviar cambios de objetos\/documentos a estas herramientas.<\/p>\n<p>A partir de Couchbase 5.0, puedes simplemente crear un \u00edndice de b\u00fasqueda de texto completo en la consola web y empezar a hacer b\u00fasquedas de texto completo directamente desde la base de datos:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5586\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-1024x702.png\" alt=\"Full Text Search - Create Indes\" width=\"515\" height=\"353\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-1024x702.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-300x206.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-768x526.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.16.06-PM.png 1027w\" sizes=\"auto, (max-width: 515px) 100vw, 515px\" \/><\/p>\n<p>Resaltar resultados de b\u00fasqueda:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5587\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM-1024x327.png\" alt=\"\" width=\"900\" height=\"287\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM-1024x327.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM-300x96.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM-768x245.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/Screen-Shot-2018-08-09-at-5.19.18-PM.png 1251w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Caliente para hacer una b\u00fasqueda simple a trav\u00e9s de SDK:<\/p>\n<pre class=\"lang:java decode:true\">    @Override\r\n    public List&lt;SearchQueryRow&gt; searchQuery(String word) {\r\n        String indexName = \"movies_index\";\r\n        QueryStringQuery query = SearchQuery.queryString(word);\r\n\r\n        SearchQueryResult result = movieRepository.getCouchbaseOperations().getCouchbaseBucket().query(\r\n                new SearchQuery(indexName, query).highlight().limit(20));\r\n\r\n        List&lt;SearchQueryRow&gt; hits = new ArrayList&lt;&gt;();\r\n        if (result != null &amp;&amp; result.errors().isEmpty()) {\r\n            Iterator&lt;SearchQueryRow&gt; resultIterator = result.iterator();\r\n            while (resultIterator.hasNext()) {\r\n                hits.add(resultIterator.next());\r\n            }\r\n        }\r\n        return hits;\r\n    }<\/pre>\n<p>Puede consultar la documentaci\u00f3n oficial <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.5\/fts\/full-text-intro.html\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>5) Consultas m\u00e1s r\u00e1pidas, agrupaciones por y agregaci\u00f3n pushdown<\/strong><\/h2>\n<p>Independientemente de la base de datos, las operaciones de agregaci\u00f3n (min, max, avg, etc) y GROUP BYs siempre han sido problem\u00e1ticas en t\u00e9rminos de rendimiento. Para hacer frente a este problema, con Couchbase 5.5, puedes aprovechar tus \u00edndices para acelerar este tipo de consultas:<\/p>\n<pre class=\"lang:default decode:true\">SELECT pa\u00eds, estado, ciudad, COUNT(1) AS total\r\nFROM `viajes-muestra\r\nWHERE type = 'hotel' and country is not null\r\nGROUP BY pa\u00eds, estado, ciudad\r\nORDER BY COUNT(1) DESC;<\/pre>\n<p>~90ms - Plan de consulta de la consulta anterior<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5588\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/10204-query-plan-no-pushdown-1024x160.png\" alt=\"\" width=\"900\" height=\"141\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10204-query-plan-no-pushdown-1024x160.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10204-query-plan-no-pushdown-300x47.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10204-query-plan-no-pushdown-768x120.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10204-query-plan-no-pushdown-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10204-query-plan-no-pushdown.png 1238w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>~7ms - La misma consulta anterior pero utilizando un \u00edndice adecuado<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5589\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/10205-query-plan-with-pushdown-1024x153.png\" alt=\"\" width=\"900\" height=\"134\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10205-query-plan-with-pushdown-1024x153.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10205-query-plan-with-pushdown-300x45.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10205-query-plan-with-pushdown-768x115.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10205-query-plan-with-pushdown-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/10205-query-plan-with-pushdown.png 1297w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Puede leer el <a href=\"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/\">art\u00edculo completo aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>6)Control de acceso basado en funciones y certificado X509<\/strong><\/h2>\n<p><strong>\u00a0<\/strong>Las bases de datos son el premio gordo para cualquier intruso malintencionado, por eso nunca est\u00e1 de m\u00e1s a\u00f1adir una capa extra de seguridad. Con Couchbase, <a href=\"https:\/\/www.couchbase.com\/blog\/es\/x-509-certificate-based-authentication\/\">puede autenticar clientes mediante certificados X.509<\/a> y limitar su acceso mediante el control de acceso basado en funciones (RBAC):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5590\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/06602-create-new-user-with-select-authorization.gif\" alt=\"\" width=\"650\" height=\"518\" \/><\/p>\n<p>Tambi\u00e9n puede conceder permisos a trav\u00e9s de N1QL. Veamos c\u00f3mo conceder un permiso SELECT para el usuario <strong>denis<\/strong> en el cubo <strong>alg\u00fan_cubo<\/strong> se ver\u00eda as\u00ed:<\/p>\n<pre class=\"lang:default decode:true\">GRANT ROLE query_select(some_bucket) TO denis;<\/pre>\n<p>M\u00e1s informaci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/using-role-based-access-control-in-n1ql\/\">aqu\u00ed<\/a> o <a href=\"https:\/\/www.couchbase.com\/blog\/es\/authentication-authorization-rbac-part-2\/\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>7)Cifrado de campos<\/strong><\/h2>\n<p>La encriptaci\u00f3n en reposo es una de las formas m\u00e1s b\u00e1sicas de seguridad, y puedes encriptar\/desencriptar campos f\u00e1cilmente utilizando la funci\u00f3n <a href=\"https:\/\/github.com\/couchbase\/java-couchbase-encryption\">Cifrado Java de Couchbase<\/a>:<\/p>\n<pre class=\"lang:java decode:true\">public static class Person {\r\n    @Id\r\n    public String id;\r\n\r\n    @EncryptedField(provider = \"AES\")\r\n    public String password;\r\n\r\n    \/\/The rest will be transported and stored unencrypted\r\n    public String firstName;\r\n    public String lastName;\r\n    public String userName;\r\n    public int age;\r\n  }<\/pre>\n<p>M\u00e1s informaci\u00f3n <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.5\/sdk\/java\/encrypting-using-sdk.html\">aqu\u00ed<\/a> o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.5\/sdk\/encryption.html\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>8) SDK reactivo<\/strong><\/h2>\n<p>Tambi\u00e9n ofrecemos un SDK reactivo, que no es algo f\u00e1cil de encontrar en buena parte de los proveedores de bases de datos. Esto se debe principalmente al hecho de que nuestro propio SDK se implementa de forma reactiva.<\/p>\n<p>La programaci\u00f3n reactiva es realmente importante para el rendimiento y la optimizaci\u00f3n de recursos. Si a\u00fan no est\u00e1s familiarizado con este concepto, te recomiendo encarecidamente <a href=\"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-care-about-reactive-database-access\/\">este art\u00edculo<\/a>que ofrece una r\u00e1pida visi\u00f3n general de por qu\u00e9 deber\u00eda considerar el uso de la programaci\u00f3n reactiva en su capa de persistencia.<\/p>\n<p>Disponemos de un amplio material sobre este tema. Si desea saber m\u00e1s, puede empezar por <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/java\/async-programming.html\">aqu\u00ed<\/a> o <a href=\"https:\/\/www.youtube.com\/watch?v=BS0MWy5QND8&amp;t=711s\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>9) \"Ajuste fino de la velocidad\" mediante SDK<\/strong><\/h2>\n<p>En Couchbase, intentamos que los desarrolladores puedan ajustar su rendimiento incluso a nivel de documento, para que puedan decidir, caso por caso, cu\u00e1l es la mejor compensaci\u00f3n para cada escenario.<\/p>\n<p>Echemos un vistazo, por ejemplo, a c\u00f3mo Couchbase almacena los datos. Por defecto, tan pronto como el servidor reconoce que un nuevo documento debe ser almacenado, ya env\u00eda la respuesta de vuelta al cliente diciendo que su \"petici\u00f3n ha sido recibida con \u00e9xito\" y de forma as\u00edncrona, almacenamos y replicamos el documento.<\/p>\n<p>Este enfoque es muy bueno para la velocidad, pero hay una peque\u00f1a posibilidad de perder datos si el servidor se bloquea cuando el documento est\u00e1 todav\u00eda en la memoria del servidor.  Si quiere evitarlo, puede especificar mediante SDK que desea recibir la confirmaci\u00f3n s\u00f3lo despu\u00e9s de que el documento se haya replicado o almacenado en el disco:<\/p>\n<pre class=\"lang:java decode:true\">movieRepository.getCouchbaseOperations().save(movie, PersistTo.ONE, ReplicateTo.NONE);\r\n\/\/or\r\nmovieRepository.getCouchbaseOperations().save(movie, PersistTo.ONE, ReplicateTo.TWO);\r\n...\r\nmovieRepository.getCouchbaseOperations().save(movie, PersistTo.NONE, ReplicateTo.ONE);\r\n<\/pre>\n<p>\u00bfPor qu\u00e9 permitir algo as\u00ed? Pues porque si puede permitirse la peque\u00f1a posibilidad de perder estos datos si el servidor se bloquea, puede mejorar su rendimiento de forma significativa. No se trata de una decisi\u00f3n de todo o nada, ya que puedes decidir qu\u00e9 partes del sistema merecen ese riesgo.<\/p>\n<p>Tambi\u00e9n puede hacer algo similar con sus consultas. En este caso, si desea esperar a que los \u00edndices\/vistas se actualicen en funci\u00f3n de los \u00faltimos cambios o si le parece bien la peque\u00f1a posibilidad de no devolver la versi\u00f3n m\u00e1s reciente de sus documentos:<\/p>\n<pre class=\"lang:java decode:true\">\/\/You can use ScanConsistency.REQUEST_PLUS, ScanConsistency.NOT_BOUNDED or ScanConsistency.STATEMENT_PLUS\r\nN1qlParams params = N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS).adhoc(true);\r\nParameterizedN1qlQuery query = N1qlQuery.parameterized(queryString, JsonObject.create(), params);\r\nresourceRepository.getCouchbaseOperations().getCouchbaseBucket().query(query);<\/pre>\n<p>Hay algunas otras caracter\u00edsticas en nuestro SDK que tambi\u00e9n se pueden optimizar, y todas estas peque\u00f1as decisiones pueden mejorar significativamente su rendimiento a escala.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>10) Observabilidad del tiempo de respuesta<\/strong><\/h2>\n<p>Ya he mencionado este punto en mi <a href=\"https:\/\/www.couchbase.com\/blog\/es\/10-other-things-that-devops-sys-admins-must-know-about-couchbase\/\">entrada anterior<\/a>pero creo que merece la pena mencionarlo de nuevo. Desde la versi\u00f3n 5.5, hemos introducido una nueva capacidad llamada Observabilidad del Tiempo de Respuesta, que proporcionar\u00e1 a los desarrolladores de sistemas una forma muy sencilla de observar los tiempos de respuesta en relaci\u00f3n con un umbral (ajustable).<\/p>\n<p>Esta funci\u00f3n, que utiliza el formato OpenTracing, registra las peticiones lentas seguidas de un mont\u00f3n de detalles al respecto despu\u00e9s de cada intervalo de tiempo, para que pueda identificar f\u00e1cilmente las operaciones con bajo rendimiento.<\/p>\n<pre class=\"lang:default decode:true\">Apr 04, 2018 9:42:57 AM com.couchbase.client.core.tracing.ThresholdLogReporter logOverThreshold\r\nWARNING: Operations over threshold: [ {\r\n  \"top\" : [ {\r\n    \"server_us\" : 8,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"get:0x6\",\r\n    \"dispatch_us\" : 315,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 576\r\n  }, {\r\n    \"server_us\" : 8,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"get:0x5\",\r\n    \"dispatch_us\" : 319,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 599\r\n  }, {\r\n    \"server_us\" : 8,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"get:0x4\",\r\n    \"dispatch_us\" : 332,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 632\r\n  }, {\r\n    \"server_us\" : 11,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"get:0x3\",\r\n    \"dispatch_us\" : 392,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 762\r\n  }, {\r\n    \"server_us\" : 23,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"get:0x1\",\r\n    \"decode_us\" : 9579,\r\n    \"dispatch_us\" : 947,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 16533\r\n  }, {\r\n    \"server_us\" : 56,\r\n    \"encode_us\" : 12296,\r\n    \"local_id\" : \"41837B87B9B1C5D1\/000000004746B9AA\",\r\n    \"local_address\" : \"127.0.0.1:55011\",\r\n    \"operation_id\" : \"upsert:0x2\",\r\n    \"dispatch_us\" : 1280,\r\n    \"remote_address\" : \"127.0.0.1:11210\",\r\n    \"total_us\" : 20935\r\n  } ],\r\n  \"service\" : \"kv\",\r\n  \"count\" : 6\r\n} ]<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"background: white; vertical-align: baseline; margin: 0in 0in 16.8pt 0in;\">La Observabilidad del Tiempo de Respuesta est\u00e1 activada por defecto, y ya hemos definido un conjunto de umbrales para evitar el registro de peticiones sanas. Si desea ampliar los l\u00edmites de su cl\u00faster, puede incluso establecer umbrales m\u00e1s peque\u00f1os manualmente. Puedes leer m\u00e1s al respecto\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/response-time-observability-with-the-java-sdk\/\"><span style=\"color: windowtext; text-decoration: none;\">aqu\u00ed<\/span><\/a>.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase Server 5.0 and 5.5 were two big releases. Let\u2019s see some of the new cool and old features which developers can\u2019t miss out: 1) Sub Documents This feature has been here for a while, but it\u2019s still worth to [&hellip;]<\/p>","protected":false},"author":8754,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815],"tags":[],"ppma_author":[9059],"class_list":["post-5584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>10 other things that developers must know about Couchbase<\/title>\n<meta name=\"description\" content=\"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.\" \/>\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\/10-other-things-that-developers-must-know-about-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"10 other things that developers must know about Couchbase\" \/>\n<meta property=\"og:description\" content=\"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/10-other-things-that-developers-must-know-about-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-09T17:08:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-01-02T13:45:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@deniswsrosa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/\"},\"author\":{\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\"},\"headline\":\"10 other things that developers must know about Couchbase\",\"datePublished\":\"2018-08-09T17:08:54+00:00\",\"dateModified\":\"2019-01-02T13:45:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/\"},\"wordCount\":1067,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/\",\"name\":\"10 other things that developers must know about Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-08-09T17:08:54+00:00\",\"dateModified\":\"2019-01-02T13:45:56+00:00\",\"description\":\"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#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\/10-other-things-that-developers-must-know-about-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"10 other things that developers must know about 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\/fe3c5273e805e72a5294611a48f62257\",\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"caption\":\"Denis Rosa, Developer Advocate, Couchbase\"},\"description\":\"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.\",\"sameAs\":[\"https:\/\/x.com\/deniswsrosa\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/denis-rosa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Otras 10 cosas que los desarrolladores deben saber sobre Couchbase","description":"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.","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\/10-other-things-that-developers-must-know-about-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"10 other things that developers must know about Couchbase","og_description":"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/10-other-things-that-developers-must-know-about-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-08-09T17:08:54+00:00","article_modified_time":"2019-01-02T13:45:56+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Denis Rosa, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@deniswsrosa","twitter_misc":{"Written by":"Denis Rosa, Developer Advocate, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/"},"author":{"name":"Denis Rosa, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257"},"headline":"10 other things that developers must know about Couchbase","datePublished":"2018-08-09T17:08:54+00:00","dateModified":"2019-01-02T13:45:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/"},"wordCount":1067,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/","name":"Otras 10 cosas que los desarrolladores deben saber sobre Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-08-09T17:08:54+00:00","dateModified":"2019-01-02T13:45:56+00:00","description":"Learn the 10 features that developers must know about the Couchbase Server 5.0 and 5.5 to avoid logging healthy requests.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/10-other-things-that-developers-must-know-about-couchbase\/#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\/10-other-things-that-developers-must-know-about-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"10 other things that developers must know about 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\/fe3c5273e805e72a5294611a48f62257","name":"Denis Rosa, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6","url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","caption":"Denis Rosa, Developer Advocate, Couchbase"},"description":"Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/denis-rosa\/"}]}},"authors":[{"term_id":9059,"user_id":8754,"is_guest":0,"slug":"denis-rosa","display_name":"Denis Rosa, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","first_name":"Denis","last_name":"Rosa, Developer Advocate, Couchbase","user_url":"","author_category":"","description":"Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/5584","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\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=5584"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/5584\/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=5584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=5584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=5584"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=5584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}