Couchbase Mobile

Couchbase Lite - em C!

Couchbase Lite está disponível desde 2014, tendo como alvo as plataformas iOS, Android e .NET e, secundariamente, macOS e Windows. Para esse fim, expusemos APIs nas linguagens preferidas dessas plataformas: Java, Objective-C, Swift e C#.

Mas certamente há outros usos para um banco de dados NoSQL incorporado com os melhores recursos de sincronização da categoria! Ele é ideal para a emergente Internet das Coisas; os desenvolvedores nos procuraram querendo executar o Couchbase Lite em placas Linux incorporadas, como o Raspberry Pi. Outros solicitaram associações com outras linguagens, como Python ou Go.

Couchbase Lite For C

Tenho o prazer de dizer que estamos dando passos em direção a esses casos de uso, introduzindo Couchbase Lite para C. Esta é uma implementação completa do Couchbase Lite com:

  • Uma API ANSI C cujo funções são, em sua maioria, compatíveis com os métodos de classe no API do Couchbase Lite 2.x. Alguns detalhes são necessariamente diferentes porque o C não vem com gerenciamento automático de memória ou estruturas de dados de coleta, mas se você estiver acostumado com as APIs existentes, deverá se sentir em casa - veja alguns pequenos exemplos de código. Há também uma API C++, implementada como um invólucro em torno da API C.
  • Sem dependência de um tempo de execução de alto nível, como .NET ou JVM, ou de uma grande biblioteca de classes proprietária, como Cocoa.
  • Dependências mínimas de sistema operacional. Ele deve ser executado em qualquer sistema operacional semelhante ao Unix (ou no MS Windows recente); ele só precisa de um sistema de arquivos, uma biblioteca padrão C++ e uma rede TCP/IP para o replicador.
  • Necessidades modestas de hardware: pense no Raspberry Pi (mas não no Arduino). Isso significa dezenas de megabytes de RAM disponível, centenas de MHz de CPU e armazenamento persistente suficiente para seu banco de dados.
  • Código-fonte completo em um Licença Apache 2como as outras versões do Couchbase Lite. (Edição Enterprise recursos, disponíveis em um licença comercialAdicione uma pequena quantidade de fonte fechada).

Qual é o problema? Ele ainda não está concluído - este é o acesso antecipado a um projeto de qualidade alfa. Para obter detalhes, consulte a seção "Planos futuros", abaixo.

...e para outros idiomas

O Couchbase Lite For C ajudará a levar o Couchbase Lite para outras linguagens e plataformas. C é uma língua francaPortanto, toda linguagem tem ferramentas para vincular-se às APIs C. Isso facilita a escrita da cola necessária para chamar o Couchbase Lite e, em seguida, criar uma API idiomática sobre ela. Como prova de conceito, estamos incluindo um Vinculação ao Python 3 no mesmo repositório do Github.

A API do C foi criada para ser fácil de vincular. Ela é o mais orientada a objetos possível, com nomes de funções regulares que concatenam o nome da "classe" e do "método". Os "objetos" são contados por referência, para facilitar o gerenciamento em um tempo de execução com coleta de lixo. As propriedades de um documento podem ser acessadas opcionalmente como uma cadeia de caracteres JSON se for mais simples usar o analisador de JSON da sua linguagem. Demos ao código do cliente a capacidade de programar quando e onde os retornos de chamada de notificação são invocados, para que você possa se adaptar a qualquer modelo de concorrência compatível com a sua linguagem (ou sistema operacional).

Arquitetura

A API C para o Couchbase Lite é uma extensão direta de nossa arquitetura 2.x. Para a versão 2.0 em 2018, reimplementamos o Couchbase Lite com um componente de núcleo independente de plataforma escrito em C++. Esse núcleo fornece uma API C (não pública) à qual as várias implementações do Couchbase Lite se vinculam, expondo suas próprias APIs públicas em Java, C#, Swift ou Objective-C.

Para esse novo projeto, escrevemos um adaptador (novamente em C++) que, em sua maior parte, apenas remodela a API interna em C para torná-la mais clara, mais fácil de usar e em conformidade com nossa especificação de API entre plataformas. Esse adaptador é vinculado estaticamente à biblioteca principal para produzir um único binário.

Diagrama de arquitetura mostrando as camadas do Couchbase Lite para C

Esse adaptador é bastante simples: até o momento, ele tem menos de 2.000 linhas de C/C++, incluindo os cabeçalhos. A grande maioria da funcionalidade vem do Couchbase Lite Core, que já foi testado durante um ano em duas plataformas baseadas em Unix (Android e Darwin) e no Windows. Portanto, o desenvolvimento da API C em si é bastante simples, o que nos permite trabalhar mais na portabilidade.

Planos futuros

O Couchbase Lite For C está em desenvolvimento ativo, mas ainda não está concluído. Estamos lhe dando acesso antecipado a um projeto de qualidade alfa. As APIs são bastante sólidas, mas algumas funcionalidades não estão conectadas; houve poucos testes; e ainda não fizemos a portabilidade para além do macOS, Windows e Ubuntu. Ainda não é um produto oficial e não forneceremos suporte comercial para ele até que esteja completo e seja de alta qualidade.

Estamos disponibilizando-o agora porque sabemos que há demanda (alguns desenvolvedores intrépidos já recorreram à exploração de nossas APIs C internas!

  • O cenário de plataformas incorporadas é extremamente fragmentado em comparação com dispositivos móveis, desktops ou servidores. Não temos todas as placas de desenvolvimento de IoT nem todas as distribuições Linux incorporadas. O suporte multiplataforma para código de baixo nível pode ser complicado, especialmente com vários compiladores (Clang, GCC, MSVC) na mistura. Há também alguns aplicativos exóticos que não são UNIX sistemas operacionais no espaço incorporado, como VxWorks, QNX, RIOT...
  • Os ambientes com restrição de recursos podem ser um desafio para os testes. Erros de falta de memória são uma realidade! O consumo de energia geralmente é muito importante. E simplesmente conectar um depurador em nível de fonte pode ser complicado. Mas, como disse Eric Raymond, "se houver olhos suficientes, todos os bugs são superficiais".

Como você pode contribuir

O trabalho de desenvolvimento está em andamento e é aberto, com os commits sendo enviados diretamente para o repositório do Github. Incentivamos seus relatórios de bugs, sugestões e solicitações pull. (Se você quiser contribuir, leia nosso diretrizes primeiro). Esperamos que você se junte a nós para levar o Couchbase Lite a mais plataformas e idiomas do que nunca.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Jens Alfke, arquiteto móvel, Couchbase

Jens Alfke é arquiteto móvel na Couchbase. Antes de ingressar na Couchbase, Jens trabalhou na Apple e (brevemente) no Google. Jens toca violão.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.