Acabei de enviar um e-mail para o nosso comunidade móvel de código aberto compartilhando alguns desenvolvimentos interessantes que fizemos nos últimos meses. Também quero compartilhar isso com o blog, pois tenho certeza de que muitos dos usuários do nosso banco de dados também enfrentam desafios móveis. Acredito que a sincronização é fundamental para os dispositivos conectados, e a sincronização também é uma ponte importante entre os casos de uso de banco de dados tradicionais e o mundo em rede. O modelo de documento JSON é bem adequado aos padrões de sincronização, portanto, espero que a abordagem que estamos compartilhando hoje acrescente mais um motivo para as pessoas experimentarem o NoSQL.

Nossa equipe móvel está desenvolvendo um novo adaptador para sincronizar o Couchbase Server com dispositivos móveis. Recebemos os primeiros comentários de alguns de nossos usuários (obrigado!). Também escrevemos aplicativos de exemplo e o testamos, e realmente gostamos dele. Gostamos tanto que estamos planejando construir o futuro do Couchbase for Mobile em torno dele.

(Os veteranos talvez reconheçam o nome "Couchbase Mobile" como nosso antigo banco de dados móvel de 2011. Agora estamos reaproveitando o nome como um guarda-chuva para nosso esforço abrangente, incluindo os componentes do lado do servidor, bem como o banco de dados móvel nativo).

Anteriormente, nossa tecnologia Syncpoint tentava abordar o gerenciamento de bancos de dados independentes para cada canal de sincronização. Isso era um pouco complicado, devido às limitações inerentes ao modelo de segurança e replicação filtrada do Apache CouchDB.

O Couchbase for Mobile adota uma nova abordagem, usando o recurso de índice incremental do Couchbase Server 2.0 para sincronização, de modo que seus dados permaneçam em armazenamento dimensionável e os canais sejam leves. Os documentos também podem pertencer a vários canais e ficar visíveis para vários usuários, sem fazer cópias redundantes no servidor.

Conversamos com alguns de vocês sobre esse novo modelo de canal leve, e o feedback foi extremamente positivo. A associação ao canal é determinada por uma função de mapa de canal. Aqui está um exemplo de mapeador de canais que permitiria que os documentos fossem marcados com proprietários e membros.

função(doc) {
se (doc.owner_id) {
sincronização("proprietário-"+doc.owner_id);
}
se (doc.membros) {
para (var i = 0; i < doc.membros.comprimento; ++i)
sincronização("Membro..." + doc.membros[i]);
}
}

A outra metade do modelo é a API de autorização do Sync Gateway para declarar quais canais cada usuário pode acessar. Essencialmente, cada conta de usuário no Sync Gateway inclui uma lista de canais aos quais o usuário tem acesso. O usuário só pode ler documentos marcados com um desses canais, e a replicação será automaticamente filtrada para esses canais.

Com base no feedback que recebemos, esse modelo deve ser composto de várias maneiras diferentes. Por exemplo, no exemplo de aplicativos de wiki e bate-papo, cada sala de bate-papo ou wiki diferente corresponde a um canal. Cada sala de bate-papo tem muitas mensagens, e cada wiki pode ter várias páginas. Portanto, nesses aplicativos, um usuário normalmente será membro ou proprietário de alguns canais.

Em outros aplicativos, cada usuário só pode sincronizar a partir de um único canal, com um nome correspondente ao seu nome de usuário. Ou você pode ter um canal para fotos grandes e outro canal para miniaturas menores, e sincronizar o canal de fotos grandes somente quando estiver conectado via WiFi.

Ainda há muito a ser feito antes que o Couchbase for Mobile esteja pronto para o horário nobre. Esperamos lançar nossa versão inicial em apenas alguns meses. O foco será a comprovação do modelo de canal. Nas versões posteriores, nos concentraremos no desempenho e na escalabilidade, bem como na inclusão de quaisquer recursos ausentes identificados pelos primeiros usuários.

Como parte da intensificação de nosso foco em dispositivos móveis, decidimos renomear o TouchDB para Couchbase Lite. Não se trata de uma mudança técnica. Continuaremos a usar o mesmo protocolo CouchSync compatível com versões anteriores, portanto, você pode ter certeza de que não estamos quebrando a compatibilidade com os back-ends de sincronização existentes. E estamos entusiasmados por estar criando o que se tornará a melhor solução de sincronização integrada da categoria.

Se você quiser começar, temos um ponto de partida aqui.

Mal posso esperar para ver o que você está construindo!

Autor

Postado por J. Chris Anderson, cofundador e arquiteto de dispositivos móveis, Couchbase

5 Comentários

  1. Qual é a diferença entre designar um canal e um cliente móvel que executa uma replicação filtrada que sincroniza com um subconjunto dos documentos do servidor?

    1. J Chris Anderson fevereiro 2, 2013 em 3:35 pm

      A principal diferença é que ela é orientada por índices. A replicação filtrada sem índices de canal exige que o filtro seja executado em milhões de documentos potencialmente irrelevantes para cada documento correspondente. Os índices de canal significam que você pode obter um desempenho aceitável mesmo com big data.

      1. BOOM! Isso é exatamente o que eu estava procurando. Os bancos de dados Lite poderão utilizar isso para replicar entre bancos de dados Lite (em breve ou no futuro)?

        1. J Chris Anderson fevereiro 5, 2013 em 1:52 pm

          Atualmente, não temos canais indexados no dispositivo móvel, pois os conjuntos de dados que a maioria das pessoas tem são pequenos o suficiente para que os filtros regulares sejam adequados.

  2. Obrigado pelo artigo, Chris, ele ajuda muito!

Deixar uma resposta