Simplicity is the Ultimate Sophistication - L. Da Vinci

Foto cortesia de Wesley Fryer com permissão sob licença CC BY-SA 2.0

 

tl;dr

Couchbase Mobile é fácil de usar, funciona de forma totalmente autônoma e, ainda assim, oferece dimensionamento de nível empresarial quando necessário. Você deveria experimentá-lo.

No início

Esta será minha segunda postagem oficial aqui no Couchbase. Em breve, escreverei no blog sobre questões mais práticas. Mas, por enquanto, vou me entregar a um discurso de nível um pouco mais elevado.

Eu programo há muito tempo. Nos últimos anos, me interessei muito por dispositivos móveis, mas já trabalhei em muitas outras áreas.

Ainda assim, eu diria que, antes de entrar para o Couchbase, eu tinha um conhecimento médio de bancos de dados. Ou, devo dizer, de bancos de dados relacionais. De alguma forma, atingir a sexta forma normal sempre me pareceu legal, mas nunca precisei me preocupar com isso.

Mesmo assim, para o desenvolvimento, os bancos de dados relacionais (e, portanto, o SQLite no celular) pareciam ser o caminho a seguir.

Neste post, vou falar sobre por que mudei de ideia e por que acho que você também deveria mudar.

Preparando o palco

Há alguns anos, os bancos de dados relacionais já haviam vencido outras tecnologias. A tal ponto que o SQL, que na verdade é o nome de uma linguagem, tornou-se quase sinônimo do termo banco de dados.

O mundo mudou muito com a explosão da Web e dos dispositivos móveis. Isso inclui os tipos de dados e como eles são acessados. Os bancos de dados também tiveram que mudar. Isso deu origem ao universo NoSQL.

Não vou me aprofundar no panorama geral do NoSQL. Como referência, aqui estão alguns recursos para ajudar a entender o que é NoSQL12Como ele se compara aos bancos de dados relacionais34e tópicos mais avançados5. Obviamente, há muito mais que você poderia pesquisar.

Por que o Couchbase Mobile

O Couchbase Mobile (ou CBM) é um pacote completo, incluindo um banco de dados autônomo incorporado. (A parte autônoma é, na verdade, chamada de Couchbase Lite.) A arquitetura central do CBM o coloca diretamente no campo do NoSQL.

Quero me concentrar em dois motivos particularmente convincentes pelos quais acredito que o CBM deve ser sua primeira opção para aplicativos móveis: facilidade de uso e flexibilidade arquitetônica. Falarei mais em termos de uso do CBM desde o início de um projeto. Os mesmos pontos são um forte argumento para mudar para o CBM, mesmo em um aplicativo maduro.

Facilidade de uso

Tanto o iOS quanto o Android dependem do SQLite para seus bancos de dados padrão. O SQLite é um excelente banco de dados relacional de código aberto. Ele só não é tão fácil de usar.

Fui até o portal do desenvolvedor do Android para dar uma olhada nos documentos atuais sobre o uso do SQLite. Aqui está o início do primeiro parágrafo após a introdução:

Um dos principais princípios dos bancos de dados SQL é o esquema: uma declaração formal de como o banco de dados é organizado.

E aqui está um exemplo de parte do código para criar um banco de dados:

Divertido, não é?

Agora, não me entenda mal. O Android é um pacote de tecnologia incrível. O SQLite é o melhor da categoria. Mas os aplicativos precisam armazenar dados. E se estou tentando fazer um projeto decolar, não quero gastar meu tempo pensando no design de esquemas e colocando instruções SQL em strings.

Em contrapartida, isso é aproximadamente o que é necessário para começar a usar o Couchbase Mobile:

E aqui está o código (sem o material padrão) para armazenar alguns dados novos:

Essa não é uma comparação totalmente justa. O exemplo do Google tem alguns dos bits extras necessários para fazer as coisas corretamente. Por outro lado, a amostra do Couchbase já tem dados sendo enviados para o banco de dados!

A verdadeira questão tem a ver com a simplicidade de tudo isso. É muito mais fácil mapear estruturas naturais no código (objetos Java, neste caso) para as construções necessárias para o banco de dados. A facilidade de mapeamento permite que o CBM cuide de muitos outros detalhes para você também. O trecho de código acima não é muito mais do que seria necessário para serializar um objeto Java em um arquivo!

O Couchbase é um banco de dados de documentos, o que significa que você armazena um objeto completo e semiestruturado como o bloco de dados fundamental (em vez de uma linha em uma tabela). Mais precisamente, o Couchbase armazena objetos JSON. O JSON é leve e flexível. Ele lida com matrizes. Os objetos podem ser estendidos sem quebrar nada. É simplesmente mais agradável.

Compare isso com a tentativa de colar algumas tabelas inflexíveis para mapear um objeto de qualquer complexidade. Não importa se você mesmo faz isso no SQL ou se recorre a uma biblioteca para ajudar, não é uma visão bonita.

Flexibilidade

O Couchbase Mobile oferece flexibilidade de duas maneiras importantes: estrutura e escalabilidade.

Estrutura

O CBM é "sem esquema". Isso fica evidente na facilidade de uso. No exemplo de código, você pode ver que a estrutura do documento é criada implicitamente. Não há necessidade de definir tabelas ou nomear colunas.

Além disso, a ausência de esquema significa que você pode alterar facilmente suas estruturas de dados sem as dores de cabeça da migração.

Para ilustrar esses pontos, imagine começar com um perfil de usuário que contenha um número de telefone para cada pessoa. As duas figuras mostram como isso pode se parecer com uma tabela SQLite e um documento JSON.

Single relational table example
Simple JSON document
Suponha que o requisito mude. Você deseja possibilitar a inclusão de mais de um número de telefone. No caso relacional, você desejaria migrar para algo como o que é mostrado neste diagrama:
Array data normalized into two tables

Pense por um minuto no gerenciamento dessa transição. Não vou nem tentar mostrar como o código pode ficar.

Por outro lado, com o JSON, você tem este diagrama:

JSON document containing an array

Basta substituir a entrada do número de telefone por uma matriz. É até fácil lidar com a compatibilidade com versões anteriores. Você poderia simplesmente verificar em tempo de execução se a entrada do telefone era um valor único ou uma matriz.

Escalabilidade

Até agora, tudo o que falei funciona de forma totalmente autônoma em um dispositivo. Isso é poderoso e atende a muitos usos. Alguns bancos de dados móveis param por aí. Eles funcionam apenas de forma autônoma.

Se você estiver usando um banco de dados, é provável que algum back-end seja, no mínimo, uma boa opção. Ou pode ser essencial para seu sucesso. Basta fornecer backups para facilitar a troca de dispositivos, se não for o caso.

Quando você começa a precisar de um backend, precisa se preocupar com vários novos desafios. Isso me leva ao meu último ponto sobre o Couchbase Mobile. O CBM tem muitos recursos para lidar com o uso fora do dispositivo.

Voltando ao que considero mais atraente, a preocupação que se destaca aqui é a escalabilidade. Qual será o custo para lidar com 10.000 usuários, ou talvez até 100.000 ou um milhão? Sua arquitetura pode suportar operações fora do dispositivo sem muito retrabalho?

O CBM inclui algo chamado Sync Gateway. O Sync Gateway (SG) tem alguns usos interessantes apenas em combinação com o Couchbase Lite. Ele realmente se destaca como um ponto de extremidade de replicação para Servidor Couchbase. O Couchbase Server é um pacote NoSQL pesado e pronto para empresas, já usado em grandes instalações. Você pode ler mais sobre o Sync Gateway aqui. A imagem a seguir dá uma ideia de como os componentes se encaixam.

Three components: Couchbase Lite, Sync Gateway, and Couchbase Server

Resumindo, a CBM não o coloca em um canto. Começar é fácil, e você pode fazer isso sabendo que a CBM tem a flexibilidade necessária para atender às suas necessidades à medida que você progride.

Concluindo

O CBM é uma solução NoSQL moderna, baseada em documentos e altamente escalável para dispositivos móveis.

  • O CBM funciona muito bem de forma isolada, no dispositivo.

  • O Couchbase oferece um back-end completo, se você quiser.

  • O formato de dados é facilmente mapeado para representações nativas.

Juntos, eles oferecem uma solução que é mais fácil de usar em praticamente qualquer projeto. Use-o como um armazenamento conveniente para as preferências do usuário. Use-o para fornecer um pacote estático de dados junto com seu aplicativo. Ou use-o quando quiser filmar para milhões de usuários ativos. Aproveite a simplicidade e saiba que você tem a flexibilidade para se adaptar e escalar conforme necessário.

Pós-escrito

Há muitos detalhes por trás dos conceitos que discuti. Incluí algumas referências para aprofundamento, embora tenha me baseado em muitas outras para esta publicação.

Confira mais recursos em nosso portal do desenvolvedor e nos siga no Twitter @CouchbaseDev. Você pode postar perguntas em nosso fóruns. E participamos ativamente de Estouro de pilha.

Você pode me seguir pessoalmente em @HodGreeley

Estou ansioso para conversar com você.

Autor

Postado por Hod Greeley, Advogado do desenvolvedor, Couchbase

Hod Greeley é um defensor dos desenvolvedores da Couchbase e mora no Vale do Silício. Ele tem mais de duas décadas de experiência como engenheiro de software e gerente de engenharia. Trabalhou em diversas áreas de software, incluindo física e química computacional, segurança de computadores e redes, finanças e dispositivos móveis. Antes de ingressar na Couchbase em 2016, Hod liderou as relações com desenvolvedores para dispositivos móveis na Samsung. Hod é Ph.D. em física química pela Universidade de Columbia.

Deixar uma resposta