{"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\/es\/peer-to-peer-database-sync-with-couchbase-lite\/","title":{"rendered":"Sincronizaci\u00f3n de bases de datos Peer-to-Peer con Couchbase Lite"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-couchbase-for-mobile-and-edge-computing\/\">Lanzamiento de Couchbase Lite 2.8<\/a> ha anunciado la compatibilidad con la soluci\u00f3n de sincronizaci\u00f3n de bases de datos peer-to-peer para empresas. La nueva capacidad permite la sincronizaci\u00f3n directa entre aplicaciones m\u00f3viles y no m\u00f3viles integradas con Couchbase Lite sin necesidad de un punto de control basado en la nube.<\/p>\n<p>En este post, ofrecemos una visi\u00f3n general de la funci\u00f3n y vamos a demostrar lo f\u00e1cil que es configurar la sincronizaci\u00f3n peer-to-peer entre dos clientes. Para m\u00e1s detalles, consulte la <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-landing-p2psync.html\">documentaci\u00f3n<\/a> para ver la API espec\u00edfica de la plataforma y fragmentos de c\u00f3digo de ejemplo.<\/p>\n<p>En primer lugar, algunos casos de uso...<\/p>\n<h2 id=\"usecases\">Casos pr\u00e1cticos<\/h2>\n<p>Los usuarios de aplicaciones en entornos desconectados que requieren la capacidad de colaborar entre s\u00ed son candidatos para la sincronizaci\u00f3n de bases de datos peer-to-peer. He aqu\u00ed algunos ejemplos<\/p>\n<ul>\n<li><strong>Aplicaciones de campo<\/strong> :<br \/>\nLos trabajadores sobre el terreno en una obra, los voluntarios en una zona de recuperaci\u00f3n de cat\u00e1strofes, los mineros o los sanitarios en cl\u00ednicas m\u00f3viles pueden colaborar y coordinar tareas entre s\u00ed a trav\u00e9s de una red de \u00e1rea local sin necesidad de conexi\u00f3n a Internet.<\/li>\n<li><strong>Viajar<\/strong> :<br \/>\nLos auxiliares de vuelo que actualizan los pedidos de comida pueden actualizar la informaci\u00f3n de inventario que se sincroniza autom\u00e1ticamente con otros auxiliares durante el vuelo. De este modo, un auxiliar de vuelo no ofrece una comida despu\u00e9s de que se haya ofrecido la \u00faltima.<\/li>\n<li><strong>Hosteler\u00eda<\/strong> :<br \/>\nLos flujos de trabajo de los pedidos de comida en los restaurantes pueden automatizarse. Los camareros pueden tomar y enviar pedidos a la cocina, comprobar el estado de los pedidos, cobrar, etc. desde dispositivos m\u00f3viles sin moverse de la mesa del cliente.<\/li>\n<li><strong>Mar\u00edtimo<\/strong> :<br \/>\nLos miembros de la tripulaci\u00f3n a bordo de los buques pueden registrar y sincronizar en tiempo real las m\u00e9tricas de los equipos con otros miembros de la tripulaci\u00f3n, lo que permite tomar decisiones en tiempo real.<\/li>\n<\/ul>\n<h2 id=\"typicaldeployment\">Despliegue t\u00edpico<\/h2>\n<p>A continuaci\u00f3n se muestra un despliegue t\u00edpico utilizando Couchbase para la sincronizaci\u00f3n de bases de datos peer-to-peer en entornos desconectados. Un entorno desconectado o el \"borde\" puede funcionar de forma aut\u00f3noma sin ninguna conectividad a los servidores backend basados en la nube. Sin embargo, cuando hay conectividad a Internet, los cambios desde el borde desconectado pueden ser <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/learn\/java-android-landing-replications.html\">sincronizado<\/a> con el servidor Couchbase remoto a trav\u00e9s de Sync Gateway.<\/p>\n<p>Los clientes de Couchbase Lite pueden organizarse en diferentes topolog\u00edas. Puede ser una topolog\u00eda en estrella donde un cliente puede ser designado como punto de control primario o escucha y los otros clientes pueden comunicarse entre s\u00ed a trav\u00e9s del escucha designado. Alternativamente, los clientes pueden ser organizados en una topolog\u00eda de malla conectada donde cada cliente est\u00e1 conectado directamente a cada otro cliente en la misma red.<\/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\">Flujo de trabajo entre iguales<\/h2>\n<p>La sincronizaci\u00f3n entre pares se basa en Websockets y funciona en redes basadas en IP. Es el mismo protocolo que se utiliza para sincronizar con el Sync Gateway remoto. Este es un flujo de trabajo de alto nivel de sincronizaci\u00f3n de datos peer-to-peer con Couchbase Lite. Cada par participante toma el papel de un <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/advance\/java-android-p2psync-websocket-using-passive.html\">\"Par pasivo\"<\/a> que es an\u00e1logo a un servidor en una comunicaci\u00f3n t\u00edpica cliente-servidor y\/o un <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/advance\/java-android-p2psync-websocket-using-active.html\">\"Par Activo\"<\/a> que es an\u00e1logo a un cliente en una comunicaci\u00f3n t\u00edpica cliente-servidor. Una aplicaci\u00f3n puede desempe\u00f1ar tanto el papel de par activo como el de par pasivo.<\/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>En <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Classes\/URLEndpointListener.html\">receptor de websockets<\/a> se inicializa en el Peer Pasivo con la base de datos de Couchbase Lite a sincronizar. Hay una serie de opciones configurables disponibles, incluyendo la posibilidad de especificar el puerto, la interfaz de red, TLSIdentity, etc.<\/li>\n<li>Una de las opciones configurables del <code>Oyente<\/code> es la funci\u00f3n de llamada de retorno del autenticador que se invocar\u00e1 cuando el receptor reciba las credenciales del par activo. Este <code>ListenerAuthenticator<\/code> debe ser implementada por la aplicaci\u00f3n e incluir l\u00f3gica para autenticar las credenciales del cliente.<\/li>\n<li>El par pasivo anuncia sus servicios. Este paso se maneja completamente dentro de la aplicaci\u00f3n y Couchbase Lite no juega ning\u00fan papel aqu\u00ed. T\u00edpicamente, las aplicaciones aprovechan marcos de trabajo espec\u00edficos de la plataforma como <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsnetservice\">NSNetService<\/a> para este fin. De hecho, dependiendo del despliegue, este paso puede ser opcional. Por ejemplo, el dispositivo podr\u00eda estar configurado con una direcci\u00f3n IP est\u00e1tica o, si hay soporte DNS, el cliente podr\u00eda estar a la escucha en una URL conocida.<\/li>\n<li>El peer activo o cliente busca peers pasivos a los que conectarse. De nuevo, este paso se maneja completamente dentro de la aplicaci\u00f3n y Couchbase Lite no juega ning\u00fan papel aqu\u00ed. T\u00edpicamente, las aplicaciones aprovechan marcos de trabajo espec\u00edficos de la plataforma como <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsnetservice\">NSNetService<\/a> para este fin. Por supuesto, si el <code>Oyente<\/code> est\u00e1 escuchando en una direcci\u00f3n conocida, entonces este paso ser\u00eda opcional.<\/li>\n<li>Una vez que el par activo identifica el par al que debe conectarse, debe establecer una conexi\u00f3n de replicaci\u00f3n con el otro extremo. El replicador para la sincronizaci\u00f3n entre pares se configura exactamente de la misma forma que si estableciera la conexi\u00f3n con la puerta de enlace de sincronizaci\u00f3n remota.<\/li>\n<li>Como parte del protocolo TLS de establecimiento de la conexi\u00f3n, se autentican los certificados del servidor. Esto ocurre de forma transparente para la aplicaci\u00f3n.<\/li>\n<li>Una vez autenticado el certificado del servidor, las credenciales del cliente se env\u00edan al receptor para su autenticaci\u00f3n. Couchbase Lite soporta tanto la autenticaci\u00f3n b\u00e1sica como la basada en las credenciales del cliente. <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-p2psync-websocket.html#using-tls\">autenticaci\u00f3n<\/a>.<\/li>\n<li>Las credenciales entrantes se env\u00edan a la direcci\u00f3n registrada <code>ListenerAuthenticator<\/code> donde se validan. Una vez autenticados, se establece el canal de comunicaci\u00f3n entre los pares.<\/li>\n<li>A partir de ese momento, cada vez que se produce un cambio de documento en la base de datos, el cambio de datos se sincroniza autom\u00e1ticamente con el otro extremo. La direcci\u00f3n de la transferencia de datos puede ser unidireccional o bidireccional.<\/li>\n<\/ol>\n<h2 id=\"attributesofthesynctechnology\">Atributos de la tecnolog\u00eda Sync<\/h2>\n<p>Sincronizar correctamente es dif\u00edcil. Hay varias consideraciones a tener en cuenta y aqu\u00ed tienes una hoja de trucos sobre c\u00f3mo funciona la sincronizaci\u00f3n entre pares. Consulta la <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/swift\/learn\/swift-landing-p2psync.html\">documentaci\u00f3n<\/a> para m\u00e1s detalles<\/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\">Caracter\u00edstica<\/th>\n<th style=\"text-align: left\">Sincronizaci\u00f3n Peer-to-Peer de Couchbase Lite<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Seguridad<\/td>\n<td style=\"text-align: left\">Compatibilidad inmediata con el cifrado TLS. Autenticaci\u00f3n basada en certificados. Autenticaci\u00f3n b\u00e1sica. Las aplicaciones tienen que escribir 0 l\u00edneas de c\u00f3digo para obtener el cifrado TLS.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Resistencia de la red<\/td>\n<td style=\"text-align: left\">Reintentos con retroceso exponencial. Las r\u00e9plicas continuas reintentan indefinidamente, mientras que las r\u00e9plicas \u00fanicas abandonan tras un n\u00famero determinado de intentos.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Eficacia<\/td>\n<td style=\"text-align: left\">Con la tecnolog\u00eda Delta Sync, optimice los costes de transferencia de datos sincronizando s\u00f3lo las partes del documento que han cambiado.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Conflictos de datos<\/td>\n<td style=\"text-align: left\">Integrado. Por defecto, los conflictos se resuelven autom\u00e1ticamente utilizando pol\u00edticas predefinidas. Adem\u00e1s, las aplicaciones tienen flexibilidad para especificar sus propias funciones personalizadas de fusi\u00f3n bidireccional para tratar los conflictos.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Facilidad de uso para los desarrolladores<\/td>\n<td style=\"text-align: left\">S\u00f3lo hacen falta unas pocas l\u00edneas de c\u00f3digo para poner en marcha la sincronizaci\u00f3n peer-to-peer. Por supuesto, hay una serie de opciones configurables para personalizarlo seg\u00fan tus necesidades<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Soporte multiplataforma<\/td>\n<td style=\"text-align: left\">Couchbase Lite es compatible con varias plataformas m\u00f3viles y no m\u00f3viles. La funcionalidad de sincronizaci\u00f3n de datos peer-to-peer permite la sincronizaci\u00f3n entre plataformas heterog\u00e9neas - por ejemplo entre una aplicaci\u00f3n Android y iOS<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Topolog\u00edas flexibles<\/td>\n<td style=\"text-align: left\">Dado que cada peer participante puede actuar como Listener, Replicator o ambos, los clientes de Couchbase Lite que participan en la sincronizaci\u00f3n peer-to-peer pueden organizarse en diferentes topolog\u00edas como estrella, malla, etc. La elecci\u00f3n depende de las necesidades de la aplicaci\u00f3n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"gettingstartedcode\">C\u00f3digo de inicio<\/h2>\n<p>Puede consultar nuestra <a href=\"https:\/\/docs.couchbase.com\/tutorials\/index.html\">p\u00e1ginas de tutoriales<\/a> para una aplicaci\u00f3n completa que demuestra las capacidades de sincronizaci\u00f3n peer-to-peer. Pero aqu\u00ed, me gustar\u00eda compartir el c\u00f3digo m\u00ednimo necesario para poner en marcha la sincronizaci\u00f3n para que puedas ver por ti mismo lo f\u00e1cil que es poner en marcha el flujo de trabajo descrito anteriormente. Aunque los fragmentos son para iOS, deber\u00eda ser sencillo adaptarlo a cualquier otra plataforma Couchbase Lite.<\/p>\n<h3 id=\"passivepeer\">Par pasivo<\/h3>\n<p>El siguiente fragmento de c\u00f3digo inicializa la escucha en el par pasivo que escucha las conexiones entrantes entre 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\">Par activo<\/h3>\n<p>El siguiente fragmento de c\u00f3digo inicializa el replicador para <em>seguro<\/em> sincronizaci\u00f3n peer-to-peer. Es la misma l\u00f3gica de replicaci\u00f3n que se utiliza cuando se replica a un punto final 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>Ya est\u00e1. En tan s\u00f3lo unos sencillos pasos, puedes conseguir una sincronizaci\u00f3n segura peer-to-peer con Couchbase Lite.<\/p>\n<h2 id=\"whataboutpeer-to-peersyncin2.1\">\u00bfQu\u00e9 pasa con la Sincronizaci\u00f3n entre iguales en 2.1?<\/h2>\n<p>Si ha estado trabajando con Couchbase Lite, probablemente est\u00e9 familiarizado con la funci\u00f3n <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.8\/swift\/learn\/swift-p2psync-custom.html\">Sincronizaci\u00f3n entre pares<\/a> que se introdujo en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-general-availability-couchbase-mobile-2-1\/\">2.1 liberaci\u00f3n<\/a> de Couchbase Lite. En la versi\u00f3n 2.1, proporcionamos un <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Protocols\/MessageEndpointConnection.html\">MessageEndpointConnection <\/a>que deb\u00eda ser implementada por la aplicaci\u00f3n. El replicador de Couchbase Lite se comunicaba con la aplicaci\u00f3n a trav\u00e9s de esta interfaz, proporcionando los cambios de datos que deb\u00edan sincronizarse. C\u00f3mo se transfer\u00edan los datos al par receptor depend\u00eda completamente de la aplicaci\u00f3n. Proporcionar una interfaz ofrec\u00eda a los desarrolladores de aplicaciones la flexibilidad de utilizar cualquier marco de comunicaciones de su elecci\u00f3n y pod\u00eda utilizarse a trav\u00e9s de cualquier transporte (IP o no IP).<\/p>\n<p>En 2.8 hemos simplificado enormemente la tarea proporcionando una implementaci\u00f3n \"out-of-box\" para la sincronizaci\u00f3n peer-to-peer sobre redes IP. Como ver\u00e1s en breve, s\u00f3lo hacen falta unas pocas l\u00edneas de c\u00f3digo para ponerlo en marcha. El sitio <a href=\"https:\/\/docs.couchbase.com\/mobile\/2.8.0\/couchbase-lite-swift\/Protocols\/MessageEndpointConnection.html\">MessageEndpointConnection<\/a> sigue siendo compatible. As\u00ed que si ya has implementado tu soluci\u00f3n de sincronizaci\u00f3n con lo que se ofrec\u00eda en 2.1, no es necesario que migres tu soluci\u00f3n para utilizar la nueva API. De hecho, esa sigue siendo su \u00fanica opci\u00f3n si est\u00e1 sincronizando a trav\u00e9s de redes no basadas en IP.  Sin embargo, si est\u00e1s sincronizando a trav\u00e9s de redes IP, ser\u00eda recomendable ya que simplificar\u00eda enormemente el c\u00f3digo de tu aplicaci\u00f3n y reducir\u00eda los costes de pruebas y mantenimiento.<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"whatnext\">\u00bfQu\u00e9 sigue?<\/h2>\n<p>Couchbase es la \u00fanica soluci\u00f3n de sincronizaci\u00f3n de bases de datos peer-to-peer que permite a los clientes comunicarse directamente entre s\u00ed en entornos desconectados.<\/p>\n<p>Puede <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?family=couchbase-lite\">descargar Couchbase Lite<\/a> y evauar la funcionalidad de forma gratuita.<\/p>\n<p>Si quiere profundizar en los detalles, aqu\u00ed puede encontrar m\u00e1s informaci\u00f3n<br \/>\n&#8211; <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.8\/swift\/learn\/swift-landing-p2psync.html\">Documentaci\u00f3n: Peer-to-Peer <\/a><br \/>\n&#8211; <a href=\"https:\/\/docs.couchbase.com\/tutorials\/cbl-p2p-sync-websockets\/swift\/cbl-p2p-sync-websockets.html\">Tutoriales: Peer-to-Peer<\/a><br \/>\n&#8211; <a href=\"https:\/\/www.couchbase.com\/blog\/es\/solutions\/peer-to-peer\/\">P\u00e1gina de soluciones: Soluciones entre iguales<\/a><br \/>\n&#8211; <a href=\"https:\/\/connectonline.influitive.com\/forum\/t\/peer-to-peer-sync-with-couchbase-lite\/260\">Conectar v\u00eddeo con demostraci\u00f3n: Sincronizaci\u00f3n entre pares con Couchbase Lite<\/a><\/p>\n<p>En <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/\">Foros de Couchbase<\/a> es un buen lugar para plantear preguntas. Por favor, deje un comentario a continuaci\u00f3n o no dude en ponerse en contacto conmigo a trav\u00e9s de <a href=\"https:\/\/twitter.com\/rajagp\">Twitter<\/a>\u00a0o <a href=\"mailto:priya.rajagopal@couchbase.com\">env\u00edame un correo electr\u00f3nico<\/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.9 (Yoast SEO v25.9) - 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\/es\/peer-to-peer-database-sync-with-couchbase-lite\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"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\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/es\/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\/es\/peer-to-peer-database-sync-with-couchbase-lite\/","og_locale":"es_MX","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\/es\/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":"es","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":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/peer-to-peer-database-sync-with-couchbase-lite\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"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\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Directora de Gesti\u00f3n de Productos","image":{"@type":"ImageObject","inLanguage":"es","@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 es directora s\u00e9nior de gesti\u00f3n de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el per\u00edmetro. Lleva m\u00e1s de 20 a\u00f1os dedic\u00e1ndose profesionalmente al desarrollo de software en varios puestos de liderazgo t\u00e9cnico y de producto, con m\u00e1s de 10 a\u00f1os centrados en tecnolog\u00edas m\u00f3viles. Como delegada de est\u00e1ndares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de est\u00e1ndares IPTV. Tiene 22 patentes en las \u00e1reas de redes y seguridad de plataformas.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"Priya Rajagopal es directora s\u00e9nior de gesti\u00f3n de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el per\u00edmetro. Lleva m\u00e1s de 20 a\u00f1os dedic\u00e1ndose profesionalmente al desarrollo de software en varios puestos de liderazgo t\u00e9cnico y de producto, con m\u00e1s de 10 a\u00f1os centrados en tecnolog\u00edas m\u00f3viles. Como delegada de est\u00e1ndares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de est\u00e1ndares IPTV. Tiene 22 patentes en las \u00e1reas de redes y seguridad de plataformas."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9501","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\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=9501"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9501\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/9502"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=9501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=9501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=9501"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=9501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}