Temos o prazer de anunciar a disponibilidade geral do Couchbase Mobile 3.1, que inclui o Couchbase Lite e o Sync Gateway para soluções de computação móvel e de borda. Esta é uma versão significativa que introduz o suporte de nuvem a borda para escopos e coleções no Couchbase Mobile para implantações autogerenciadas. Lançado em Serviço Couchbase 7.0A solução Scopes and Collections oferece a capacidade de isolar dados logicamente e de aplicar o gerenciamento independente do ciclo de vida do aplicativo em vários níveis de granularidade.
Com a versão 3.1 do Couchbase Lite e do Sync Gateway, os desenvolvedores podem aproveitar os benefícios de escopos e coleções em seus aplicativos móveis e de borda. Nesta publicação, discutirei os benefícios do uso de escopos e coleções no contexto de alguns casos de uso típicos. Embora a publicação se concentre em um recurso importante da versão 3.1, para saber mais sobre outros aprimoramentos e correções de bugs, leia nossas notas de versão específicas da plataforma.
Esta postagem pressupõe que você esteja familiarizado com os fundamentos do Couchbase Mobile. Se você for novo no Couchbase Mobile, consulte o artigo visão geral.
Faça o download hoje mesmo!
Veja como você pode começar a avaliar os novos recursos do Couchbase Lite e do Sync Gateway 3.1:
Casos de uso de escopos e coleções
Provavelmente, é melhor discutir os benefícios de escopos e coleções no contexto de alguns casos de uso do mundo real. Para cada um dos casos de uso discutidos, exploramos soluções em nível de balde/banco de dados e, em seguida, apresentamos uma solução com escopos e coleções.
Organização de dados simplificada
A capacidade de os desenvolvedores estruturarem os dados em compartimentos semelhantes a tabelas em um banco de dados relacional, de modo que os dados relacionados sejam agrupados em contêineres separados, o que é especialmente útil para desenvolvedores que estão migrando de um mundo relacional.
Aqui estão dois exemplos para ilustrar o problema:
Exemplo
Considere um aplicativo de pedido de campo com dados relacionados a produtos e dados relacionados a pedidos. Existem dois aplicativos móveis habilitados para o Couchbase Lite, um para produtos e outro para pedidos. Produtos documentos relacionados são sincronizados com o aplicativo móvel Products, enquanto pedidos os documentos relacionados são sincronizados com o Aplicativo móvel de pedidos. Um usuário do aplicativo no aplicativo móvel de produtos só pode ler dados relacionados a produtos, enquanto um usuário do aplicativo no aplicativo móvel de pedidos pode ler e gravar dados relacionados a pedidos.
Solução: Baseada em baldes
-
- Os dados de produtos e pedidos são em um único balde.
- O balde tem uma dúzia de tipos de documentos. A tipo de documento é usado para agrupar logicamente documentos relacionados a produtos e pedidos.
- Os usuários do aplicativo são definidos no nível do bucket.
- Uma função Sync é definida no nível do bucket e é complicada. As regras de controle de acesso são baseadas em tipo de documento e canais definido para tipo de documento controlar qual usuário pode acessar qual subconjunto de documentos.
- O aplicativo Products tem um somente puxar replicação para documentos de produtos, enquanto o aplicativo Orders tem push-pull replicação para documentos relacionados a pedidos.
Solução: Baseada em escopo/coleções
Use escopos e coleções para organizar os dados e simplificar as políticas de controle de acesso.
- Segregar produtos e pedidos de documentos relacionados em dois escopos em um único intervalo.
- Em vez de um tipo de documento campo, agrupar logicamente documentos de um tipo específico em sua própria coleção.
- Os usuários do aplicativo são então segregados por escopo, portanto, os usuários no escopo de produtos só podem acessar os documentos de produtos e os usuários no escopo de pedidos podem acessar os documentos de pedidos.
- A função de sincronização é simplificada ao ser definido no nível da coleção.
- O aplicativo Products tem um somente puxar replicação para o escopo dos produtos e o aplicativo Orders tem push-pull replicação para escopo de pedidos.
Exemplo
Considere um aplicativo de assistência médica com 30 categorias de dados, incluindo pacientes, visitas, procedimentos, seguradoras, doenças, diagnósticos etc.
Os pacientes têm acesso a seus registros médicos por meio de um aplicativo móvel Couchbase Lite. Alguns dos documentos (por exemplo, seguradoras) não devem ser sincronizados com o aplicativo móvel. Alguns dos documentos (por exemplo, perfil) podem ser atualizados pelos pacientes por meio do aplicativo móvel, enquanto outros (como diagnóstico) são somente de leitura.
Solução: Baseada em baldes
-
- Os dados correspondentes ao aplicativo de assistência médica são mantidos em um bucket correspondente.
- O balde tem mais de 30 tipos de documentos. O tipo de documento O campo é usado para agrupar logicamente documentos relacionados.
- Uma função Sync é definida no nível do bucket e é complicada. As regras de controle de acesso são baseadas em tipo de documento e canais definidos para tipo de documento controlar qual usuário pode acessar qual subconjunto de documentos.
Os filtros de importação estão no nível do balde e são complicados. Usar tipo de documento para filtrar documentos que não precisam ser sincronizados.
Solução: Baseada em escopo/coleções
Use escopos e coleções para organizar os dados e simplificar as políticas de controle de acesso.
- Em vez de um tipo de documento campo, agrupar logicamente cada documento de um tipo específico em sua própria coleção.
- A função Sync é simplificada e definida no nível da coleção. Toda coleção está implicitamente associada a um canal e, portanto, é muito mais simples especificar o acesso de leitura/gravação às coleções.
- A função de filtro de importação é simplificada e definida no nível da coleção. Filtrar coleções de documentos que não precisam ser importados.
Aplicativos dimensionáveis de vários locatários
A capacidade de oferecer suporte a aplicativos multilocatários que não precisam de isolamento rigoroso de recursos, mas que ainda assim exigem gerenciamento independente do ciclo de vida dos dados.
Exemplo
Considere um ISV hospedando um aplicativo de eventos para 20 locatários corporativos. Cada locatário tem um Aplicativo Couchbase Lite que pode sincronizar dados de eventos pertencentes ao locatário. Cada locatário tem um conjunto distinto de usuários de aplicativos que podem acessar dados específicos do locatário. Os usuários de aplicativos autenticados podem sincronizar dados por meio do aplicativo Couchbase Lite correspondente ao seu locatário. Os locatários não exigem isolamento estrito de recursos.
Solução: Baseada em baldes
- Cada locatárioOs dados da empresa estão em seu próprio balde.
- Cada compartimento tem dezenas de tipos de documentos. Os tipo de documento é usado para agrupar logicamente documentos relacionados.
- À medida que a solução é dimensionada para mais locatários, mais baldes e, posteriormente, mais clusters são adicionados. Isso é caro e não é dimensionável.
- Cada locatário tem um conjunto distinto de usuários de aplicativos registrados no nível do bucket.
- As replicações de clientes do Couchbase Lite são configuradas para sincronizar dados do bucket do locatário correspondente.
Solução: Baseada em escopo/coleções
Escopos e coleções oferece uma alternativa dimensionável para dar suporte a aplicativos multilocatários com gerenciamento independente do ciclo de vida dos dados.
- Cada locatário tem seu próprio escopocontidos em um único eventos balde.
- Cada locatário o aplicativo cliente sincroniza os dados associado ao escopo do locatário.
- Cada o locatário tem um conjunto distinto de usuários de aplicativos registrados no nível do escopo.
- Quando os locatários são adicionados ou removidos, um escopo é adicionado ou removido do bucket. Um locatário pode ser colocado off-line sem afetar outros locatários.
Alta densidade de aplicativos na borda
Essa é a capacidade de oferecer suporte a implementações de nuvem para borda em grande escala com vários aplicativos na borda. Cada borda é atendida usando uma arquitetura de aplicativos baseada em microsserviços. Os microsserviços precisam de acoplamento frouxo para que possam ser desenvolvidos, implantados e dimensionados de forma independente. Os dados específicos de um microsserviço são privados para o microsserviço.
Exemplo
Considere um implantação de aplicativos ship-to-shore, com 20 navios cada um executando clusters do Couchbase Mobilee um cluster do Couchbase Mobile na nuvem. O cluster do Couchbase Mobile em cada navio poderes 50 aplicativos. Cada um dos aplicativos é construído usando uma arquitetura de microsserviços. Os aplicativos executados em cada navio sincronizam a viagem e os documentos relacionados ao navio com os clusters em terra usando replicação inter-Sync Gateway. Cada aplicativo tem um conjunto distinto de usuários.
Solução: Baseada em baldes
- Cada um dos microsserviços correspondente aos 50 aplicativos de borda em execução em cada navio está em sua própria caçamba. O número de aplicativos atendidos por um cluster é limitado pelo número de buckets no cluster.
- Replicações do Inter-Sync Gateway entre os buckets no cluster a bordo do navio e o cluster de nuvem correspondente mantém os navios e a costa em sincronia. O resultado é um mínimo de uma replicação ship-to-shore para cada microsserviço.
- A configuração em cada navio é caro. O custo é de multiplicado pelo número de navios e não muito escalável.
Solução: Baseada em escopos/coleções
Os escopos e coleções permitem a consolidação de baldes e uma alternativa mais escalável e econômica à solução baseada em baldes.
- Cada aplicativo está associado a um escopo e cada O microsserviço está associado à sua própria coleção. O resultado é a capacidade de hospedar um grande número de aplicativos em poucos clusters.
- A replicação do Inter-Sync Gateway entre os escopos no cluster no navio e no cluster de nuvem correspondente mantém os navios e a costa em sincronia. Em vez de uma replicação para cada microsserviço, a replicação pode ser configurada no nível do aplicativo.
Organização e isolamento de dados no Couchbase Lite
A capacidade dos desenvolvedores de organizar e isolar logicamente os dados em uma única instância do banco de dados Couchbase Lite.
Exemplo
Considere um Couchbase Lite aplicativo de campo usado por funcionários de uma empresa de serviços públicos para gerenciar suas tarefas em campo. O aplicativo de campo sincroniza regularmente dados como projetos, mapas de infraestrutura etc. por meio do Sync Gateway. O aplicativo O aplicativo de campo tem uma funcionalidade semelhante a um "bloco de rascunho" que permite aos funcionários fazer anotações rápidas que podem ser apagadas sem afetar outros documentos. Esses as notas são temporárias e somente locais, não devem ser sincronizadas com um servidor remoto.
Solução: Baseada em baldes
- A solução baseada em balde requer dois bancos de dados separados do Couchbase Lite dentro do aplicativo; um para dados somente locais e outro para dados sincronizados.
- Um replicador é configurado com o banco de dados do Couchbase Lite que contém os dados a serem sincronizados.
- O nível de isolamento do banco de dados significa que não são possíveis consultas em dados somente locais e de sincronização.
Solução: Baseada em escopo/coleções
Os escopos e as coleções permitem o isolamento lógico dos dados em um único banco de dados do Couchbase Lite.
- Em vez de dois bancos de dados do Couchbase Lite, o caso de uso pode ser suportado por dentro do mesmo banco de dados do Couchbase Lite, de modo que o os dados somente locais estão em um escopo e os dados que podem ser sincronizados estão em outro escopo.
- Os dados são logicamente isolados uns dos outros e os aplicativos podem consultar os dados locais e sincronizados.
- As consultas são simplificadas pois podem ser aplicados a um escopo, evitando a necessidade de filtros. Também é fácil eliminar todos os documentos em um escopo local, conforme necessário.
- O replicador está configurado para sincronizar os dados associados ao sincronização escopo via Sync Gateway.
Isolamento de metadados do gateway de sincronização
A capacidade de separar os dados do aplicativo em compartimentos dos metadados do sistema mantidos pelo Sync Gateway para suas operações internas.
Exemplo
Considere um aplicativo de gerenciamento de estoque da loja que permite que os funcionários da loja obtenham dados de estoque da loja de seu aplicativo móvel incorporado Couchbase Lite. Os gerentes de loja usam um aplicativo da Web de back-end baseado no Couchbase Server SDK para fazer interface com o Couchbase Server para gerenciar dados de inventário.
Todas as atualizações feitas por meio do aplicativo Web são sincronizadas com o aplicativo móvel Couchbase Lite.
Solução: Baseada em baldes
- Os metadados de sincronização não podem ser isolados dos dados do aplicativo usando a abordagem baseada em bucket.
- O Sync Gateway mantém os metadados de sincronização e outras configurações de banco de dados no bucket junto com os dados do aplicativo. Esses dados devem ser usados exclusivamente pelo Sync Gateway para suas operações.
- Existem nenhum controle RBAC que restrinja o acesso aos metadados de sincronização o que é um risco. Isso aumenta a carga sobre o aplicativo baseado em SDK para garantir que ele não modifique os metadados de sincronização.
- Consultas para os dados do aplicativo precisam ser filtrados adequadamente para remover os metadados de sincronização e, assim aumentando a complexidade do aplicativo SDK.
Solução: Baseada em escopo/coleções
Os escopos e as coleções são a única opção para isolar os metadados do gateway de sincronização.
- Dados do sistema usado pelo Sync Gateway é mantido em Escopo/coleção padrão, onde é logicamente isolado dos dados do aplicativo em escopos/coleções definidos pelo usuário.
- Elimina o risco de o aplicativo baseado em SDK excluir inadvertidamente os metadados de sincronização usando controles RBAC de escopo para restringir o acesso ao escopo _default contendo metadados de sincronização.
- O aplicativo baseado em SDK é simplificado. A separação dos metadados do sistema em seu próprio escopo simplifica a implementação - as consultas não precisam de filtros, e o ciclo de vida dos dados do aplicativo pode ser gerenciado com mais facilidade.
Suporte Cloud-to-Edge para escopos e coleções
Com essa versão, os escopos e as coleções estão disponíveis de ponta a ponta em todo o Couchbase Mobile pilha. Para obter detalhes, consulte a seção documentação.
A figura abaixo é um resumo:
-
-
- Os dados no Couchbase Server são organizados em escopos e coleções.
- Um banco de dados do Sync Gateway está associado a um único escopo. O banco de dados pode ser associado a uma ou mais coleções dentro do escopo, incluindo todas as coleções dentro do escopo.
- Um cliente do Couchbase Lite pode configurar uma ou mais réplicas para um ou mais endpoints de banco de dados do Sync Gateway. Cada replicação pode sincronizar uma ou todas as coleções associadas a esse escopo.
- O cliente Couchbase Lite também pode persistir localmente os dados em um escopo que não é sincronizado com o Sync Gateway remoto.
- Um cluster do Sync Gateway pode sincronizar um ou mais escopos com outro cluster do Sync Gateway por meio de replicação inter-Sync Gateway protocolo.
- Um cliente Couchbase Lite pode sincronizar um ou mais escopos diretamente com outros clientes Couchbase Lite em uma rede local por meio de Couchbase Lite Peer-to-Peer protocolo. Isso pode ser feito sem a necessidade de um ponto de controle baseado em nuvem.
-
Compatibilidade
As implantações do Couchbase Mobile que estão sendo atualizadas para a versão 3.1 podem continuar a usar o modelo baseado em bucket até que estejam prontas para atualizar para escopos e coleções. Isso também permite que as implementações continuem a usar um modelo baseado em bucket para aplicativos existentes, mas possam aproveitar os benefícios de escopos e coleções para novos aplicativos.
Recursos
Mas isso não é tudo. Há outros aprimoramentos e alterações na API que são discutidos nas notas de versão. Aqui estão os links diretos para alguns recursos úteis. Você pode saber mais em nosso O que há de novo página.
Documentos técnicos
Notas de lançamento
-
- Couchbase Lite 3.1
- Sync Gateway 3.1
Ouça Wayne Carter, vice-presidente de engenharia da Couchbase, falar sobre escopos e coleções no Couchbase Mobile:
Se tiver dúvidas ou comentários, deixe um comentário abaixo ou entre em contato comigo pelo Twitter ou e-mail Eu.
Reconhecimento
Agradecimentos especiais a Adam Fraser e Mark Gamble por sua análise da postagem do blog.