Couchbase Mobile 1.2
O nova versão do Couchbase Mobile 1.2, agora disponível para downloadA solução ForestDB, da Microsoft, oferece melhorias significativas no desempenho do mecanismo de armazenamento local do lado do cliente para dispositivos móveis. Mais especificamente, a integração mais recente do ForestDB como o novo mecanismo de armazenamento projetado para oferecer suporte a vários sistemas operacionais móveis e de servidor. No lado do servidor,Servidor Couchbase 4.1 completa a história do celular comGateway de sincronização 1.2 correndo entre os Couchbase Lite 1.2 cliente móvel. Neste blog, explorarei o ForestDB, examinarei os benefícios e compartilharei como os desenvolvedores podem ativar esse recurso em seus aplicativos.
ForestDB
O que ForestDB O ForestDB fornece para o Couchbase Lite é uma biblioteca de armazenamento persistente de chave-valor em que o mapeamento de chave e valor são blobs binários. O ForestDB é um mecanismo de armazenamento de chave/valor de baixo nível e pertence à mesma família do BD de Berkeley e LevelDB. Como desenvolvedor, você pode obter e definir valores adequadamente, bem como enumerar as chaves em ordem lexicográfica.
Para entender melhor e saber mais sobre o mecanismo de armazenamento de última geração do Couchbase, veja esta apresentação de Chiyoung Seo no Couchbase Connect 2015:
Benefícios
Aqui estão algumas das melhorias de desempenho do novo sistema de armazenamento para o Couchbase Lite 1.2:
- Velocidade mais rápida - isso varia de acordo com o aplicativo, mas observamos uma melhoria de 2x a 5x em tarefas como inserção e consulta de documentos.
- Melhor simultaneidade - um thread de gravação (como o replicador) nunca bloqueia os leitores (como o thread da GUI). Isso ajuda a manter a capacidade de resposta do aplicativo.
- Menor consumo de RAM - os caches de dados são compartilhados entre os threads, reduzindo a sobrecarga de ter vários threads acessando um banco de dados, como ocorre durante a replicação.
- Compactação automática do banco de dados - a compactação do banco de dados (que libera espaço em disco) é executada em segundo plano, sem bloquear outros threads, e é agendada automaticamente sempre que houver espaço suficiente para recuperação.
Dependendo da operação e do conjunto de dados envolvidos, pode haver um aumento de até 5 vezes na velocidade, bem como, melhor gerenciamento de concorrência, em que o gravador nunca bloqueia os leitores. Como os caches de dados são compartilhados entre os threads, agora vemos um menor consumo de RAM. Isso é complementado pela compactação automática do banco de dados e pela presença em segundo plano. Você pode ler mais sobre os benchmarks do ForestDB e os resultados dos testes de desempenho visitando o site de Cihan Biyikoglu blog no mecanismo de armazenamento de próxima geração para o Couchbase Server e o Couchbase Lite.
Começar a usar
Nas versões anteriores, SQLite era o mecanismo de armazenamento disponível para o Coucbase Lite. Embora o SQLite continue sendo o padrão no momento, para o Couchbase Mobile 1.2 há um pacote opcional na biblioteca do projeto Couchbase Lite para ativar o ForestDB. O projeto inicial do GrocerySync para iOS e Android com componentes do ForestDB pode ser baixado de GitHub no ramo específico.
Ativar o ForestDB
Agora vou falar sobre como habilitar ForestDB em nossos projetos de aplicativos móveis para aproveitar os novos benefícios. Observe que, se você tiver um projeto anterior usando uma versão anterior do Couchbase Lite, os arquivos de banco de dados existentes não serão convertidos. É aqui que um banco de dados apoiado em SQLite continuará usando o SQLite por padrão porque o formato do tipo de banco de dados é estabelecido no início da criação do projeto. O banco de dados existente sempre será aberto com o mesmo mecanismo de armazenamento que o criou. Fique atento aos futuros blogs que abordarão como migrar isso.
iOS:
A seguir, descrevemos as etapas necessárias para ativar o mecanismo de armazenamento ForestDB em seu projeto iOS. Primeiro, mova ou copie o arquivo da biblioteca "CouchbaseLite.framework" encontrado no diretório couchbase-lite-ios-enterprise_1.2.0-112 ZIP na pasta do projeto do aplicativo iOS ou na subpasta Frameworks do projeto do aplicativo iOS. A partir daí, arraste a versão 1.2 do CouchbaseLite.framework para o projeto para evitar a criação de uma referência em seu projeto a algum outro caminho do sistema de arquivos. Isso permite que a estrutura esteja disponível em todos os computadores.
A pasta Frameworks agora deve conter o arquivo CouchbaseLite.framework. Em seguida, arraste o arquivo libCBLForestDBStorage.a para que ambos os destaques verdes estejam disponíveis em sua pasta Frameworks.
A biblioteca do sistema libc++dylib precisa ser vinculada e, para isso, entraremos no editor "Build Phases" do destino. Clique no símbolo "+" na seção "Link Binary with Libraries" (Vincular binário com bibliotecas) e selecione o arquivo de interesse em "/usr/lib/" ou simplesmente digite "c++" no campo de filtro do seletor de bibliotecas e "libc++" será exibido.
O caminho do arquivo pode ser semelhante ao seguinte:
- No Xcode, abra a tela Build Phases do seu aplicativo de destino e abra a seção Link Binary With Libraries.
- Arraste libCBLForestDBStorage.a da pasta do sistema de arquivos (para onde você a arrastou anteriormente) para a lista na seção Link Binary With Libraries.
- Clique no símbolo "+" abaixo da lista de bibliotecas para abrir o seletor de bibliotecas. Digite "c++" no campo de filtro, e a "libc++" será exibida. Selecione-a e adicione-a.
- Agora, crie seu projeto; ele deverá ser bem-sucedido.
O ForestDB agora está disponível, mas não está definido como o tipo de armazenamento padrão, de modo que os novos bancos de dados ainda serão criados com o SQLite. Para alterar isso, defina a propriedade storageType da instância do CBLManager antes de abrir qualquer banco de dados. Por exemplo, você pode adicionar o código destacado em verde:
A partir do qual a classe CBLManager pode ser referenciada para especificar a propriedade "storageType" como sendo ForestDB. É assim que habilitamos o projeto iOS para usar agora o sistema de armazenamento ForestDB.
Para o projeto de aplicativo de amostra específico, navegue até o arquivo "AppDelegate.m" e, no método "createDatabase", especifique a propriedade storageType. Mas, normalmente, isso depende da estrutura do código do seu aplicativo e, em geral, está na classe delegada do aplicativo. Vá até o local em seu projeto ou código em que instanciou a classe CBLManager e, logo em seguida, adicione uma linha para definir sua propriedade storageType, assim:
1 2 3 4 5 6 |
- (vazio)createDatabase { CBLManager* gerente = [Gerenciador de CBL sharedInstance]; gerente.storageType= @"ForestDB"; NSError *erro; _database = [[Gerenciador de CBL sharedInstance] databaseNamed:@"todosapp" erro:&lificador;erro]; } |
Agora estamos prontos para criar e executar o aplicativo para que nosso aplicativo móvel use o ForestDB como mecanismo de armazenamento.
Android:
Veja a seguir as etapas necessárias para ativar o armazenamento do ForestDB em seu projeto Android.
Em seu projeto Android, o arquivo build.gradle do nível do módulo precisaria fazer referência ao Couchbase Lite versão 1.2, além de incluir explicitamente o ForestDB como um mecanismo de armazenamento no nível de dependência. As dependências agora incluiriam:
1 2 3 |
compilar 'com.couchbase.lite:couchbase-lite-android:1.2.0' compilar 'com.couchbase.lite:couchbase-lite-android-forestdb:1.2.0' |
E, em geral, o arquivo build.gradle deve ter a seguinte aparência:
Você pode consultar o build.gradle do GitHub. Agora, em nosso arquivo "MainActivity.java", o que há de novo no Couchbase Lite 1.2 para Android é que agora existe a classe "DatabaseOptions", na qual especificamos as propriedades como ".setStorageType".
Para ativar o ForestDB em nosso aplicativo Android, agora precisamos passar o parâmetro ForestDB_Storage para a função "setStorageType" para mudar o tipo de armazenamento de SQLite para ForestDB. Veja abaixo como isso é feito:
1 2 3 4 5 6 7 |
gerente = novo Gerente(novo AndroidContext(getApplicationContext()), Gerente.DEFAULT_OPTIONS); //instalar uma definição de visualização necessária para o aplicativo DatabaseOptions opções = novo DatabaseOptions(); opções.setCreate(verdadeiro); opções.setStorageType(Gerente.FORESTDB_STORAGE); banco de dados = gerente.openDatabase(NOME DO BANCO DE DADOS, opções); |
Abaixo, no aplicativo de amostra GrocerySync, vemos onde fazemos referência à propriedade "setStorageType" no método startCBLite():
Então, aí está, o Couchbase Mobile 1.2 vem com o ForestDB como o novo mecanismo de armazenamento e aprendemos como ativar o recurso a partir da solução padrão do SQLite. Exploraremos mais a fundo o Couchbase Mobile 1.2, incluindo tópicos de criptografia e desempenho em blogs posteriores. Não deixe de fazer o download do novo Couchbase Mobile 1.2 e conecte-se conosco em nosso Fóruns de desenvolvedores móveis.