{"id":9501,"date":"2020-10-19T09:00:29","date_gmt":"2020-10-19T16:00:29","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9501"},"modified":"2025-06-13T20:08:53","modified_gmt":"2025-06-14T03:08:53","slug":"peer-to-peer-database-sync-with-couchbase-lite","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/peer-to-peer-database-sync-with-couchbase-lite\/","title":{"rendered":"Sincroniza\u00e7\u00e3o de banco de dados ponto a ponto com o Couchbase Lite"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-couchbase-for-mobile-and-edge-computing\/\">Lan\u00e7amento do Couchbase Lite 2.8<\/a> anunciou o suporte para uma solu\u00e7\u00e3o de sincroniza\u00e7\u00e3o de banco de dados peer-to-peer de n\u00edvel empresarial, pronta para uso. O novo recurso permite a sincroniza\u00e7\u00e3o direta entre aplicativos incorporados m\u00f3veis e\/ou n\u00e3o m\u00f3veis habilitados para o Couchbase Lite sem a necessidade de um ponto de controle baseado na nuvem.<\/p>\n<p>Nesta postagem, apresentaremos uma vis\u00e3o geral do recurso e demonstraremos como \u00e9 f\u00e1cil configurar a sincroniza\u00e7\u00e3o ponto a ponto entre dois clientes. Para obter mais detalhes, consulte a se\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-landing-p2psync.html\">documenta\u00e7\u00e3o<\/a> para API espec\u00edfica da plataforma e exemplos de trechos de c\u00f3digo.<\/p>\n<p>Primeiro, alguns casos de uso ...<\/p>\n<h2 id=\"usecases\">Casos de uso<\/h2>\n<p>Os usu\u00e1rios de aplicativos em ambientes desconectados que exigem a capacidade de colaborar uns com os outros s\u00e3o candidatos \u00e0 sincroniza\u00e7\u00e3o de banco de dados ponto a ponto. Aqui est\u00e3o alguns exemplos<\/p>\n<ul>\n<li><strong>Aplicativos de campo<\/strong> :<br \/>\nTrabalhadores de campo em um canteiro de obras, volunt\u00e1rios em uma zona de recupera\u00e7\u00e3o de desastres, mineiros, profissionais de sa\u00fade em cl\u00ednicas m\u00f3veis podem colaborar e coordenar tarefas entre si por meio de uma rede local sem nenhuma conectividade com a Internet.<\/li>\n<li><strong>Viagens<\/strong> :<br \/>\nOs comiss\u00e1rios de bordo que recebem atualiza\u00e7\u00f5es de pedidos de refei\u00e7\u00e3o podem atualizar as informa\u00e7\u00f5es de invent\u00e1rio que s\u00e3o automaticamente sincronizadas com outros comiss\u00e1rios de bordo. Dessa forma, um comiss\u00e1rio de bordo n\u00e3o oferecer\u00e1 uma refei\u00e7\u00e3o depois que a \u00faltima tiver sido oferecida.<\/li>\n<li><strong>Hospitalidade<\/strong> :<br \/>\nOs fluxos de trabalho de pedidos de refei\u00e7\u00f5es em restaurantes podem ser automatizados. Os servidores podem receber e enviar pedidos para a cozinha, verificar o status do pedido, receber pagamentos etc. a partir de dispositivos m\u00f3veis sem sair da mesa do cliente.<\/li>\n<li><strong>Mar\u00edtimo<\/strong> :<br \/>\nOs membros da tripula\u00e7\u00e3o a bordo de navios\/embarca\u00e7\u00f5es podem registrar e sincronizar as m\u00e9tricas do equipamento em tempo real com outros membros da tripula\u00e7\u00e3o, permitindo a tomada de decis\u00f5es em tempo real<\/li>\n<\/ul>\n<h2 id=\"typicaldeployment\">Implementa\u00e7\u00e3o t\u00edpica<\/h2>\n<p>Abaixo \u00e9 mostrada uma implanta\u00e7\u00e3o t\u00edpica usando o Couchbase para sincroniza\u00e7\u00e3o de banco de dados ponto a ponto em ambientes desconectados. Um ambiente desconectado ou a \"borda\" pode operar de forma aut\u00f4noma sem nenhuma conectividade com os servidores backend baseados em nuvem. No entanto, quando h\u00e1 conectividade com a Internet, as altera\u00e7\u00f5es da borda desconectada podem ser <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/learn\/java-android-landing-replications.html\">sincronizado<\/a> com o servidor Couchbase remoto por meio do Sync Gateway.<\/p>\n<p>Os clientes do Couchbase Lite podem ser organizados em diferentes topologias. Pode ser uma topologia em estrela, em que um cliente pode ser designado como o ponto de controle prim\u00e1rio ou ouvinte, e os outros clientes podem se comunicar entre si por meio do ouvinte designado. Como alternativa, os clientes podem ser organizados em uma topologia de malha conectada, em que cada cliente \u00e9 conectado diretamente a todos os outros clientes na mesma rede.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/Screen-Shot-2020-10-13-at-1.42.04-PM-e1602647543430.png\" alt=\"\" \/><\/figure>\n<h2 id=\"peer-to-peerworkflow\">Fluxo de trabalho ponto a ponto<\/h2>\n<p>A sincroniza\u00e7\u00e3o ponto a ponto \u00e9 baseada em Websockets e funciona em redes baseadas em IP. \u00c9 o mesmo protocolo usado para sincronizar com o Sync Gateway remoto. Aqui est\u00e1 um fluxo de trabalho de alto n\u00edvel da sincroniza\u00e7\u00e3o de dados ponto a ponto com o Couchbase Lite. Cada par participante assume a fun\u00e7\u00e3o de um <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/advance\/java-android-p2psync-websocket-using-passive.html\">\"Pares passivos\"<\/a> que \u00e9 an\u00e1logo a um servidor em uma comunica\u00e7\u00e3o cliente-servidor t\u00edpica e\/ou a um <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/advance\/java-android-p2psync-websocket-using-active.html\">\"Par ativo\"<\/a> que \u00e9 an\u00e1logo a um cliente em uma comunica\u00e7\u00e3o cliente-servidor t\u00edpica. Um aplicativo pode assumir a fun\u00e7\u00e3o de um par ativo e passivo.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/peer-to-peer-couchbase-lite-walkthrough.png\" alt=\"\" \/><\/figure>\n<ol>\n<li>O <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Classes\/URLEndpointListener.html\">ouvinte de websockets<\/a> \u00e9 inicializado no Passive Peer com o banco de dados do Couchbase Lite a ser sincronizado. H\u00e1 v\u00e1rias op\u00e7\u00f5es configur\u00e1veis dispon\u00edveis, incluindo a capacidade de especificar a porta, a interface de rede, a identidade TLSI etc.<\/li>\n<li>Uma das op\u00e7\u00f5es configur\u00e1veis no <code>Ouvinte<\/code> \u00e9 a fun\u00e7\u00e3o de retorno de chamada do autenticador a ser invocada quando o ouvinte receber credenciais do par ativo. Essa <code>Autenticador de ouvinte<\/code> deve ser implementada pelo aplicativo e incluir l\u00f3gica para autenticar as credenciais do cliente.<\/li>\n<li>O par passivo anuncia seus servi\u00e7os. Essa etapa \u00e9 tratada inteiramente dentro do aplicativo e o Couchbase Lite n\u00e3o desempenha nenhuma fun\u00e7\u00e3o aqui. Normalmente, os aplicativos aproveitariam estruturas partid\u00e1rias espec\u00edficas da plataforma, como <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsnetservice\">NSNetService<\/a> para essa finalidade. De fato, dependendo da implementa\u00e7\u00e3o, essa etapa pode ser opcional. Por exemplo, o dispositivo pode ser configurado com um endere\u00e7o IP est\u00e1tico ou, se houver suporte a DNS, o cliente pode estar escutando em um URL conhecido.<\/li>\n<li>O par ativo ou cliente procura pares passivos aos quais se conectar. Novamente, essa etapa \u00e9 tratada inteiramente dentro do aplicativo e o Couchbase Lite n\u00e3o desempenha nenhuma fun\u00e7\u00e3o aqui. Normalmente, os aplicativos utilizam estruturas espec\u00edficas da plataforma, como <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsnetservice\">NSNetService<\/a> para essa finalidade. \u00c9 claro que, se o <code>Ouvinte<\/code> estiver escutando em um endere\u00e7o conhecido, ent\u00e3o essa etapa seria opcional.<\/li>\n<li>Depois que o par ativo identifica o par ao qual se conectar, ele precisa estabelecer uma conex\u00e3o de replica\u00e7\u00e3o com o outro ponto de extremidade. O replicador para sincroniza\u00e7\u00e3o ponto a ponto \u00e9 configurado exatamente da mesma forma que seria o caso se ele estivesse estabelecendo a conex\u00e3o com o Sync Gateway remoto.<\/li>\n<li>Como parte do handshake TLS do estabelecimento da conex\u00e3o, os certificados do servidor s\u00e3o autenticados. Isso acontece de forma transparente para o aplicativo.<\/li>\n<li>Depois que o certificado do servidor \u00e9 autenticado, as credenciais do cliente s\u00e3o enviadas ao ouvinte para autentica\u00e7\u00e3o. O Couchbase Lite oferece suporte \u00e0 autentica\u00e7\u00e3o b\u00e1sica e \u00e0 autentica\u00e7\u00e3o baseada no certificado do cliente <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-p2psync-websocket.html#using-tls\">autentica\u00e7\u00e3o<\/a>.<\/li>\n<li>As credenciais recebidas s\u00e3o enviadas para o <code>Autenticador de ouvinte<\/code> onde s\u00e3o validados. Uma vez autenticados, o canal de comunica\u00e7\u00e3o \u00e9 estabelecido entre os pares.<\/li>\n<li>Depois disso, sempre que houver uma altera\u00e7\u00e3o de documento no banco de dados, a altera\u00e7\u00e3o de dados ser\u00e1 automaticamente sincronizada com a outra extremidade. A dire\u00e7\u00e3o da transfer\u00eancia de dados pode ser configurada como unidirecional ou bidirecional.<\/li>\n<\/ol>\n<h2 id=\"attributesofthesynctechnology\">Atributos da tecnologia Sync<\/h2>\n<p>\u00c9 dif\u00edcil fazer a sincroniza\u00e7\u00e3o corretamente. H\u00e1 v\u00e1rias considera\u00e7\u00f5es e aqui est\u00e1 uma folha de dicas sobre como a sincroniza\u00e7\u00e3o ponto a ponto se comporta. Consulte a se\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-landing-p2psync.html\">documenta\u00e7\u00e3o<\/a> para obter detalhes<\/p>\n<table>\n<colgroup>\n<col style=\"text-align: left\" \/>\n<col style=\"text-align: left\" \/> <\/colgroup>\n<thead>\n<tr>\n<th style=\"text-align: left\">Recurso<\/th>\n<th style=\"text-align: left\">Sincroniza\u00e7\u00e3o ponto a ponto do Couchbase Lite<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Seguran\u00e7a<\/td>\n<td style=\"text-align: left\">Suporte imediato \u00e0 criptografia TLS. Autentica\u00e7\u00e3o baseada em certificados. Autentica\u00e7\u00e3o b\u00e1sica. Os aplicativos precisam escrever 0 linhas de c\u00f3digo para obter a criptografia TLS<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Resili\u00eancia da rede<\/td>\n<td style=\"text-align: left\">Repeti\u00e7\u00f5es com retorno exponencial. As replica\u00e7\u00f5es cont\u00ednuas tentam novamente por tempo indeterminado, enquanto as replica\u00e7\u00f5es de uma \u00fanica tentativa desistem ap\u00f3s um determinado n\u00famero de tentativas<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Efici\u00eancia<\/td>\n<td style=\"text-align: left\">Usando a tecnologia Delta Sync, otimize os custos de transfer\u00eancia de dados sincronizando apenas as partes do documento que foram alteradas<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Conflitos de dados<\/td>\n<td style=\"text-align: left\">Integrado. Por padr\u00e3o, os conflitos s\u00e3o resolvidos automaticamente usando pol\u00edticas predefinidas. Al\u00e9m disso, os aplicativos t\u00eam flexibilidade para especificar suas pr\u00f3prias fun\u00e7\u00f5es de mesclagem bidirecional personalizadas para lidar com conflitos<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Facilidade de uso do desenvolvedor<\/td>\n<td style=\"text-align: left\">S\u00e3o necess\u00e1rias apenas algumas linhas de c\u00f3digo para iniciar a sincroniza\u00e7\u00e3o ponto a ponto. Obviamente, h\u00e1 v\u00e1rias op\u00e7\u00f5es configur\u00e1veis para personaliz\u00e1-lo de acordo com suas necessidades<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Suporte multiplataforma<\/td>\n<td style=\"text-align: left\">O Couchbase Lite \u00e9 compat\u00edvel com v\u00e1rias plataformas m\u00f3veis e n\u00e3o m\u00f3veis. A funcionalidade de sincroniza\u00e7\u00e3o de dados ponto a ponto permite a sincroniza\u00e7\u00e3o entre plataformas heterog\u00eaneas - por exemplo, entre um aplicativo para Android e iOS<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Topologias flex\u00edveis<\/td>\n<td style=\"text-align: left\">Como cada par participante pode atuar como ouvinte ou replicador, ou ambos, os clientes do Couchbase Lite que participam da sincroniza\u00e7\u00e3o ponto a ponto podem ser organizados em diferentes topologias, como estrela, malha etc. A escolha depende das necessidades do aplicativo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"gettingstartedcode\">C\u00f3digo de introdu\u00e7\u00e3o<\/h2>\n<p>Voc\u00ea pode dar uma olhada em nosso <a href=\"https:\/\/docs.couchbase.com\/tutorials\/index.html\">p\u00e1ginas de tutoriais<\/a> para ver um aplicativo completo que demonstra os recursos de sincroniza\u00e7\u00e3o ponto a ponto. Mas, aqui, gostaria de compartilhar o c\u00f3digo m\u00ednimo necess\u00e1rio para iniciar a sincroniza\u00e7\u00e3o, para que voc\u00ea possa ver por si mesmo como \u00e9 f\u00e1cil executar o fluxo de trabalho descrito anteriormente. Embora os snippets sejam para iOS, deve ser f\u00e1cil mape\u00e1-los para qualquer outra plataforma Couchbase Lite.<\/p>\n<h3 id=\"passivepeer\">Pares passivos<\/h3>\n<p>O trecho de c\u00f3digo a seguir inicializa o ouvinte no Passive Peer que escuta as conex\u00f5es de entrada de pares<\/p>\n<pre class=\"lang:swift decode:true\"><code>\r\n\/\/ 1: Initialize Listener Configuration with the Couchbase Lite database to be synced\r\nlet listenerConfig = URLEndpointListenerConfiguration(database: db)\r\n\r\n\/\/ 2: Attach authenticator to be used to validate client credentials. \r\n\/\/ In this sample, I have attached an authenticator for validating basic auth credentials \r\nlistenerConfig.authenticator = ListenerPasswordAuthenticator.init { (username, password) -&gt; Bool in \r\nif (self._allowlistedUsers.contains([\"password\" : password, \"name\":username])) { \r\n    return true \r\n  }\r\n return false\r\n}\r\n\r\n\/\/ Optionally, override other config options such as delta sync, TLSIdentity of the server etc.\r\n\/\/ By default, the listener is configured with a self signed cert that is generated by Couchbase LIte \r\n\/\/ This cert is referred to as \"anonymous self signed cert\"\r\n\r\n\/\/ 3: Initialize Listener with the Listener Configuration \r\n_websocketListener = URLEndpointListener(config: listenerConfig)\r\n\r\n\r\n\/\/ 4: Start the Listener. The listener is now listening for incoming connections \r\ntry? websocketListener.start()\r\n\r\n<\/code><\/pre>\n<h3 id=\"activepeer\">Pares ativos<\/h3>\n<p>O trecho de c\u00f3digo a seguir inicializa o replicador para <em>seguro<\/em> sincroniza\u00e7\u00e3o ponto a ponto. \u00c9 a mesma l\u00f3gica do replicador usada ao replicar para o ponto de extremidade remoto<\/p>\n<pre class=\"lang:swift decode:true\"><code>\r\n\/\/ 1: Initialize Replicator Configuration with the Couchbase Lite database to be synced \r\n\/\/ and the URL endpoint corresponding to the websockets listener\r\nlet config = ReplicatorConfiguration.init(database: userDb, target: URLEndpoint.init(url:targetUrl))\r\n\r\n\/\/ 2: Set up authenticator with client credentials. In this case, we are using basic auth\r\nlet authenticator = BasicAuthenticator(username: user, password: password) \r\nconfig.authenticator = authenticator\r\n\r\n\/\/ Optionally, set other config options such as replication mode, conflict resolver etc\r\n\/\/ 3: Initialize replicator with the replicator configuration \r\nreplicatorForUserDb = Replicator.init(config: config)\r\n\r\n\/\/ 4: Set up replicator to only accept self signed certificate for server\/listener\r\n\/\/ This is because we are using the default TLSIdentity on listener side which corresponds to \r\n\/\/ anonymous self signed cert config.acceptOnlySelfSignedServerCertificate = true\r\n\r\n\/\/ 5: Start the replication \r\nreplicatorForUserDb?.start()\r\n<\/code><\/pre>\n<p>\u00c9 isso a\u00ed! Em apenas algumas etapas simples, voc\u00ea pode obter uma sincroniza\u00e7\u00e3o peer-to-peer segura com o Couchbase Lite<\/p>\n<h2 id=\"whataboutpeer-to-peersyncin2.1\">E quanto \u00e0 sincroniza\u00e7\u00e3o ponto a ponto na vers\u00e3o 2.1?<\/h2>\n<p>Se voc\u00ea tem trabalhado com o Couchbase Lite, provavelmente est\u00e1 familiarizado com a fun\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.8\/swift\/learn\/swift-p2psync-custom.html\">funcionalidade de sincroniza\u00e7\u00e3o ponto a ponto<\/a> que foi introduzido em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-general-availability-couchbase-mobile-2-1\/\">2.1 libera\u00e7\u00e3o<\/a> do Couchbase Lite. Na vers\u00e3o 2.1, fornecemos um <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Protocols\/MessageEndpointConnection.html\">MessageEndpointConnection <\/a>defini\u00e7\u00e3o de interface que precisava ser implementada pelo aplicativo. O replicador do Couchbase Lite se comunicava com o aplicativo por meio dessa interface, fornecendo as altera\u00e7\u00f5es de dados que precisavam ser sincronizadas. A forma como os dados eram transferidos para o par receptor dependia totalmente do aplicativo. O fornecimento de uma interface ofereceu aos desenvolvedores de aplicativos a flexibilidade de usar qualquer estrutura de comunica\u00e7\u00e3o de sua escolha e poderia ser usada em qualquer transporte (IP ou n\u00e3o IP).<\/p>\n<p>Na vers\u00e3o 2.8, simplificamos muito a tarefa ao fornecer uma implementa\u00e7\u00e3o pronta para uso para sincroniza\u00e7\u00e3o ponto a ponto em redes IP. Como voc\u00ea ver\u00e1 em breve, s\u00e3o necess\u00e1rias apenas algumas linhas de c\u00f3digo para come\u00e7ar. O <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Protocols\/MessageEndpointConnection.html\">MessageEndpointConnection<\/a> continua a ter suporte. Portanto, se voc\u00ea j\u00e1 tiver implementado sua solu\u00e7\u00e3o de sincroniza\u00e7\u00e3o com o que foi oferecido na vers\u00e3o 2.1, n\u00e3o ser\u00e1 necess\u00e1rio migrar sua solu\u00e7\u00e3o para usar a nova API. Na verdade, essa ainda \u00e9 sua \u00fanica op\u00e7\u00e3o se estiver sincronizando em redes n\u00e3o baseadas em IP.  No entanto, se voc\u00ea estiver sincronizando em redes IP, isso seria incentivado, pois simplificaria muito o c\u00f3digo do aplicativo e reduziria os custos de teste e manuten\u00e7\u00e3o.<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"whatnext\">O que vem a seguir<\/h2>\n<p>O Couchbase \u00e9 a \u00fanica solu\u00e7\u00e3o de sincroniza\u00e7\u00e3o de banco de dados ponto a ponto que permite que os clientes se comuniquem diretamente uns com os outros em ambientes desconectados.<\/p>\n<p>Voc\u00ea pode <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/?family=couchbase-lite\">baixar o Couchbase Lite<\/a> e avaliar a funcionalidade gratuitamente.<\/p>\n<p>Se quiser se aprofundar nos detalhes, veja aqui onde voc\u00ea pode encontrar mais informa\u00e7\u00f5es<br \/>\n&#8211; <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.8\/swift\/learn\/swift-landing-p2psync.html\">Documenta\u00e7\u00e3o: Peer-to-Peer <\/a><br \/>\n&#8211; <a href=\"https:\/\/docs.couchbase.com\/tutorials\/cbl-p2p-sync-websockets\/swift\/cbl-p2p-sync-websockets.html\">Tutoriais: Ponto a ponto<\/a><br \/>\n&#8211; <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/solutions\/peer-to-peer\/\">P\u00e1gina de solu\u00e7\u00f5es: Solu\u00e7\u00f5es Peer-to-Peer<\/a><br \/>\n&#8211; <a href=\"https:\/\/connectonline.influitive.com\/forum\/t\/peer-to-peer-sync-with-couchbase-lite\/260\">V\u00eddeo de conex\u00e3o com demonstra\u00e7\u00e3o: Sincroniza\u00e7\u00e3o ponto a ponto usando o Couchbase Lite<\/a><\/p>\n<p>O <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs do Couchbase<\/a> \u00e9 um \u00f3timo lugar para entrar em contato com perguntas. Deixe um coment\u00e1rio abaixo ou sinta-se \u00e0 vontade para entrar em contato comigo via <a href=\"https:\/\/twitter.com\/rajagp\">Twitter<\/a>\u00a0ou <a href=\"mailto:priya.rajagopal@couchbase.com\">enviar-me um e-mail<\/a><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase Lite 2.8 release announced support for out-of-the-box, enterprise-grade peer-to-peer database sync solution. The new capability allows direct sync between Couchbase Lite enabled mobile and\/or non-mobile embedded apps without the need for a cloud-based control point. In this post, we [&hellip;]<\/p>","protected":false},"author":1423,"featured_media":9502,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2370,1815,1821,7667,1810,7666,2389,9409,2351],"tags":[2358,1536,1909],"ppma_author":[8948],"class_list":["post-9501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-lite","category-couchbase-mobile","category-edge-computing","category-solutions","category-swift","category-xamarin","tag-couchbase-mobile-2-x","tag-ios","tag-swift"],"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>Peer-to-Peer Database Sync with Couchbase Lite - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Couchbase Lite&#039;s enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.\" \/>\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\/pt\/peer-to-peer-database-sync-with-couchbase-lite\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Peer-to-Peer Database Sync with Couchbase Lite\" \/>\n<meta property=\"og:description\" content=\"Couchbase Lite&#039;s enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/peer-to-peer-database-sync-with-couchbase-lite\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-19T16:00:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:08:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Peer-to-Peer-Database-Sync-with-Couchbase-Lite.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\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\/2020\/10\/Peer-to-Peer-Database-Sync-with-Couchbase-Lite.png\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Peer-to-Peer Database Sync with Couchbase Lite\",\"datePublished\":\"2020-10-19T16:00:29+00:00\",\"dateModified\":\"2025-06-14T03:08:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\"},\"wordCount\":1508,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg\",\"keywords\":[\"couchbase mobile 2.x\",\"ios\",\"swift\"],\"articleSection\":[\"Android\",\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Edge computing\",\"Solutions\",\"Swift\",\"Xamarin\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\",\"name\":\"Peer-to-Peer Database Sync with Couchbase Lite - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg\",\"datePublished\":\"2020-10-19T16:00:29+00:00\",\"dateModified\":\"2025-06-14T03:08:53+00:00\",\"description\":\"Couchbase Lite's enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg\",\"width\":1200,\"height\":628,\"caption\":\"peer to peer sync with couchbase lite\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Peer-to-Peer Database Sync with Couchbase Lite\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Peer-to-Peer Database Sync with Couchbase Lite - The Couchbase Blog","description":"Couchbase Lite's enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.","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\/pt\/peer-to-peer-database-sync-with-couchbase-lite\/","og_locale":"pt_BR","og_type":"article","og_title":"Peer-to-Peer Database Sync with Couchbase Lite","og_description":"Couchbase Lite's enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/peer-to-peer-database-sync-with-couchbase-lite\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-10-19T16:00:29+00:00","article_modified_time":"2025-06-14T03:08:53+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Peer-to-Peer-Database-Sync-with-Couchbase-Lite.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Peer-to-Peer-Database-Sync-with-Couchbase-Lite.png","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Peer-to-Peer Database Sync with Couchbase Lite","datePublished":"2020-10-19T16:00:29+00:00","dateModified":"2025-06-14T03:08:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/"},"wordCount":1508,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg","keywords":["couchbase mobile 2.x","ios","swift"],"articleSection":["Android","Best Practices and Tutorials","Couchbase Architecture","Couchbase Lite","Couchbase Mobile","Edge computing","Solutions","Swift","Xamarin"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/","url":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/","name":"Peer-to-Peer Database Sync with Couchbase Lite - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg","datePublished":"2020-10-19T16:00:29+00:00","dateModified":"2025-06-14T03:08:53+00:00","description":"Couchbase Lite's enterprise-grade peer-to-peer database sync solution allows direct collaboration between clients in disconnected environments without the need for a cloud-based control point.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/shutterstock_343020290.jpg","width":1200,"height":628,"caption":"peer to peer sync with couchbase lite"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Peer-to-Peer Database Sync with Couchbase Lite"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Diretora S\u00eanior, Gerenciamento de Produtos","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","first_name":"Priya","last_name":"Rajagopal, Senior Director, Product Management","user_url":"","author_category":"","description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=9501"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9501\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/9502"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=9501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=9501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=9501"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=9501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}