{"id":1906,"date":"2015-04-21T13:35:46","date_gmt":"2015-04-21T13:35:45","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1906"},"modified":"2015-04-21T13:35:46","modified_gmt":"2015-04-21T13:35:45","slug":"introducing-the-couchbase-kafka-connector","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/introducing-the-couchbase-kafka-connector\/","title":{"rendered":"Presentaci\u00f3n del conector Kafka de Couchbase"},"content":{"rendered":"<p>\u00a1Bienvenido al nuevo conector kafka de Couchbase! Proporciona funcionalidad para dirigir el flujo de eventos desde Couchbase Server (3.0 o posterior) a Kafka. Todav\u00eda est\u00e1 en desarrollo, as\u00ed que \u00fasalo con cuidado y abre issues si te los encuentras. Su rastreador de problemas se encuentra en <a href=\"https:\/\/issues.couchbase.com\/browse\/KAFKAC\">https:\/\/issues.couchbase.com\/browse\/KAFKAC<\/a>.  Muchas gracias a Shibi de PayPal que tuvo <a href=\"https:\/\/github.com\/paypal\/couchbasekafka\">escribir otro conector basado en una interfaz m\u00e1s antigua<\/a>inspir\u00f3 \u00e9sta.<\/p>\n<h2>Conseguirlo<\/h2>\n<p>Puede encontrar el c\u00f3digo fuente del proyecto en github <a href=\"https:\/\/github.com\/couchbase\/couchbase-kafka-connector\">aqu\u00ed<\/a>. Los avances para desarrolladores est\u00e1n disponibles a trav\u00e9s de nuestro propio repositorio maven, los artefactos GA estar\u00e1n disponibles en maven central. Aqu\u00ed est\u00e1n las coordenadas:<\/p>\n<ul>\n<li><b>ID de grupo<\/b>: com.couchbase.client<\/li>\n<li><b>Identificaci\u00f3n del artefacto<\/b>: kafka-connector<\/li>\n<li><b>Versi\u00f3n<\/b>: 1.0.0-dp1<\/li>\n<\/ul>\n<pre>\napply plugin: &#39;java&#39;\n\nrepositories {\n    mavenCentral()\n    maven { url { \"https:\/\/files.couchbase.com\/maven2\" } }\n    mavenLocal()\n}\n\ndependencies {\n    compile(group: &#39;com.couchbase.client&#39;, name: &#39;kafka-connector&#39;, version: &#39;1.0.0-dp1&#39;)\n}\n<\/pre>\n<h2>Utilizaci\u00f3n<\/h2>\n<p>El uso de la librer\u00eda es bastante sencillo. Digamos que queremos recibir todas las modificaciones del servidor Couchbase y enviar a Kafka s\u00f3lo el cuerpo del documento (por defecto el conector serializa el cuerpo del documento y los metadatos a JSON). Para conseguirlo necesitamos definir una clase filtro que permita s\u00f3lo instancias de <tt>MutationMessage<\/tt> para pasar:<\/p>\n<pre>\npackage example;\n\nimport com.couchbase.client.core.message.dcp.MutationMessage;\nimport com.couchbase.kafka.DCPEvent;\nimport com.couchbase.kafka.filter.Filter;\n\npublic class SampleFilter implements Filter {\n    @Override\n    public boolean pass(final DCPEvent dcpEvent) {\n        return dcpEvent.message() instanceof MutationMessage;\n    }\n}\n<\/pre>\n<p>Y una clase codificadora, que toma el valor del documento y lo convierte en una matriz de bytes:<\/p>\n<pre>\npackage example;\n\nimport com.couchbase.client.core.message.dcp.MutationMessage;\nimport com.couchbase.client.deps.io.netty.util.CharsetUtil;\nimport com.couchbase.kafka.DCPEvent;\nimport com.couchbase.kafka.coder.AbstractEncoder;\nimport kafka.utils.VerifiableProperties;\n\npublic class SampleEncoder extends AbstractEncoder {\n    public SampleEncoder(final VerifiableProperties properties) {\n        super(properties);\n    }\n\n    @Override\n    public byte[] toBytes(final DCPEvent dcpEvent) {\n        MutationMessage message = (MutationMessage)dcpEvent.message();\n        return message.content().toString(CharsetUtil.UTF_8).getBytes();\n    }\n}\n<\/pre>\n<p>Eso es esencialmente suficiente para configurar el puente Couchbase-Kafka:<\/p>\n<pre>\npackage example;\n\nimport com.couchbase.kafka.CouchbaseKafkaConnector;\nimport com.couchbase.kafka.CouchbaseKafkaEnvironment;\nimport com.couchbase.kafka.DefaultCouchbaseKafkaEnvironment;\n\npublic class Example {\n    public static void main(String[] args) {\n        DefaultCouchbaseKafkaEnvironment.Builder builder =\n                (DefaultCouchbaseKafkaEnvironment.Builder) DefaultCouchbaseKafkaEnvironment\n                        .builder()\n                        .kafkaFilterClass(\"example.SampleFilter\")\n                        .kafkaValueSerializerClass(\"example.SampleEncoder\")\n                        .dcpEnabled(true);\n        CouchbaseKafkaEnvironment env = builder.build();\n        CouchbaseKafkaConnector connector = CouchbaseKafkaConnector.create(\n                env, \"couchbase1.vagrant\", \"default\", \"\", \"kafka1.vagrant\", \"default\");\n        connector.run();\n    }\n}\n<\/pre>\n<p>En <tt>couchbase1.vagrant<\/tt> y <tt>kafka1.vagrant<\/tt> son las ubicaciones correspondientes de Couchbase Server y Kafka, que pueden configurarse f\u00e1cilmente utilizando scripts de aprovisionamiento de <tt>env\/<\/tt> directorio. Navegue hasta all\u00ed y ejecute <tt>vagabundo arriba<\/tt>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Welcome to the new Couchbase kafka connector! It provides functionality to direct stream of events from Couchbase Server (3.0 or later) to Kafka. It is still under development, so use with care and open issues if you come across them. [&hellip;]<\/p>","protected":false},"author":25,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8995],"class_list":["post-1906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing the Couchbase Kafka Connector - 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\/introducing-the-couchbase-kafka-connector\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the Couchbase Kafka Connector\" \/>\n<meta property=\"og:description\" content=\"Welcome to the new Couchbase kafka connector! It provides functionality to direct stream of events from Couchbase Server (3.0 or later) to Kafka. It is still under development, so use with care and open issues if you come across them. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/introducing-the-couchbase-kafka-connector\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-21T13:35:45+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=\"Sergey Avseyev, SDK Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@avsej\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Avseyev, SDK Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/\"},\"author\":{\"name\":\"Sergey Avseyev, SDK Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e\"},\"headline\":\"Introducing the Couchbase Kafka Connector\",\"datePublished\":\"2015-04-21T13:35:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/\"},\"wordCount\":237,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/\",\"name\":\"Introducing the Couchbase Kafka Connector - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-04-21T13:35:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#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\/introducing-the-couchbase-kafka-connector\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the Couchbase Kafka Connector\"}]},{\"@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\/e9181374f225c90084ec3ba86bdcfa2e\",\"name\":\"Sergey Avseyev, SDK Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/796ab283bd56fe3716a102ebe16daff6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g\",\"caption\":\"Sergey Avseyev, SDK Engineer, Couchbase\"},\"description\":\"Sergey Avseyev is a SDK Engineer at Couchbase. Sergey Avseyev is responsible for development of Kafka connector, and underlying library, which implements DCP, Couchbase replication protocol. Also maintaining PHP SDK for Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/avsej\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/sergey-avseyev\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introducing the Couchbase Kafka Connector - 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\/introducing-the-couchbase-kafka-connector\/","og_locale":"es_MX","og_type":"article","og_title":"Introducing the Couchbase Kafka Connector","og_description":"Welcome to the new Couchbase kafka connector! It provides functionality to direct stream of events from Couchbase Server (3.0 or later) to Kafka. It is still under development, so use with care and open issues if you come across them. [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/introducing-the-couchbase-kafka-connector\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-04-21T13:35:45+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":"Sergey Avseyev, SDK Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@avsej","twitter_misc":{"Written by":"Sergey Avseyev, SDK Engineer, Couchbase","Est. reading time":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/"},"author":{"name":"Sergey Avseyev, SDK Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e"},"headline":"Introducing the Couchbase Kafka Connector","datePublished":"2015-04-21T13:35:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/"},"wordCount":237,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/","name":"Introducing the Couchbase Kafka Connector - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-04-21T13:35:45+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-kafka-connector\/#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\/introducing-the-couchbase-kafka-connector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing the Couchbase Kafka Connector"}]},{"@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\/e9181374f225c90084ec3ba86bdcfa2e","name":"Sergey Avseyev, Ingeniero SDK, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/796ab283bd56fe3716a102ebe16daff6","url":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","caption":"Sergey Avseyev, SDK Engineer, Couchbase"},"description":"Sergey Avseyev es Ingeniero SDK en Couchbase. Sergey Avseyev es responsable del desarrollo del conector Kafka, y la biblioteca subyacente, que implementa DCP, el protocolo de replicaci\u00f3n de Couchbase. Tambi\u00e9n mantiene PHP SDK para Couchbase.","sameAs":["https:\/\/x.com\/avsej"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/sergey-avseyev\/"}]}},"authors":[{"term_id":8995,"user_id":25,"is_guest":0,"slug":"sergey-avseyev","display_name":"Sergey Avseyev, SDK Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","author_category":"","last_name":"Avseyev, SDK Engineer, Couchbase","first_name":"Sergey","job_title":"","user_url":"","description":"Sergey Avseyev es Ingeniero SDK en Couchbase. Sergey Avseyev es responsable del desarrollo del conector Kafka, y la biblioteca subyacente, que implementa DCP, el protocolo de replicaci\u00f3n de Couchbase. Tambi\u00e9n mantiene PHP SDK para Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1906","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\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1906"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1906\/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=1906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1906"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}