Ferramentas e SDKs

Apresentando o Couchbase Java SDK 3.0 Alpha

Estou muito animado para finalmente escrever este anúncio, pois ele me permite destacar algo em que estivemos trabalhando arduamente nos últimos meses. Em um esforço coletivo de toda a equipe de SDKs, começamos a implementar SDKs completamente novos, que são mais rápidos, têm APIs mais simples, são à prova de futuro para os próximos recursos de servidor e facilitam a integração com ecossistemas de estrutura.

Além de aprimorar o Java SDK, também estamos lançando um novo SDK do Scala! Ele oferece suporte de primeira classe para todos que desenvolvem em Scala e torna a integração ao ecossistema Scala muito mais fácil no futuro.

Como tudo isso é muito novo, aqui estão os dragões. Agradecemos todos os comentários e relatórios de bugs para que este seja o melhor SDK que já entregamos.

Destaques

Esta publicação agrupa os destaques em duas seções. Uma discute a API reformulada (em todos os SDKs) e a outra aborda os aprimoramentos específicos do Java SDK.

Aprimoramentos da API entre SDKs

Em um esforço para aprimorar a usabilidade das APIs, nós as reduzimos e refatoramos bastante. O resultado é uma estrutura de API muito coesa e regular, que deve facilitar muito o uso tanto para iniciantes quanto para usuários antigos do Couchbase.

Para uma rápida comparação, aqui estão algumas APIs do Java SDK 2.x:

E, é claro, há as sobrecargas de tempo limite:

Compare isso com a nova API:

Cada método retorna um Resultado e tem um bloco opcional no final chamado Opções. O antigo Documento foi substituído por um equivalente mais simples e mais regular em toda a API. As propriedades opcionais, como tempo limite, requisitos de durabilidade ou CAS, foram todas movidas para o parâmetro de opções, resultando em menos sobrecargas e em apenas "um lugar para procurar".

Publicações posteriores do blog se aprofundarão no retrabalho da API, mas, por enquanto, vamos passar para os aprimoramentos específicos do Java.

Aprimoramentos específicos do Java

As duas alterações mais visíveis para o usuário são:

  • Java 8 como uma versão de base do Java
  • APIs reativas migradas do RxJava para o Reactor

O RxJava 1.x nos serviu bem por muitos anos (na verdade, fomos um dos primeiros a adotá-lo), mas como ele foi marcado como fim de vida útil, tivemos que procurar alternativas. Juntamente com o fato de que os fluxos reativos surgiram como o padrão de fato para a integração entre as diferentes implementações, tivemos que decidir entre o RxJava 2.x e o reactor. Embora ambos estivessem frente a frente em termos de desempenho (principalmente), após um longo período de avaliação, decidimos pelo reactor pelos seguintes motivos:

  • api nativa do java 8
  • desempenho ligeiramente melhor em algumas de nossas principais cargas de trabalho
  • mais tração da comunidade e crescimento constante (também devido ao fato de estar integrado ao núcleo do Spring)

Se a sua plataforma de aplicativos for criada em RxJava 2, não se preocupe: como ambos suportam fluxos reativos, você pode simplesmente conectá-los às nossas APIs reativas.

No SDK 2.x, tínhamos duas APIs: uma API de bloqueio e uma API assíncrona exposta por meio do RxJava. No SDK 3, adicionamos uma terceira API para lhe dar ainda mais controle:

  • a API de bloqueio permanece
  • Uma API reativa expõe respostas Mono e Flux do reator
  • A API assíncrona expõe CompletableFutures, que podem ser usados como blocos de construção se for necessário o mais alto nível de desempenho.

Por último, mas não menos importante, um aprimoramento importante para todas as APIs de consulta reativa é o suporte opcional à contrapressão. Se você precisar ler resultados enormes e quiser evitar colocá-los todos no heap de uma só vez, agora poderá usar os mecanismos de backpressure do reator, que estamos estendendo para nossa camada interna de E/S assíncrona. Estamos preparando outra publicação detalhada no blog sobre esse tópico, portanto, fique atento!

Primeiros passos

Se quiser experimentar, você pode obtê-lo em nosso próprio repositório maven de pré-lançamento:

 

Depois que as dependências forem resolvidas, você poderá se conectar a qualquer cluster anterior ao Couchbase Server 5.0. Em seguida, abra um bucket e use a coleção de sua preferência (o suporte a coleções já faz parte da API de uma versão futura do Couchbase Server). Para versões mais antigas, basta selecionar a opção defaultCollection e ele simplesmente funcionará:

Agora você pode escrever e ler um documento:

Se quiser saber mais, dê uma olhada em nosso novo documentação que atualmente está sendo escrito e desenvolvido constantemente. Você também pode procurar exemplos de código aqui.

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

Autor

Postado por Michael Nitschinger

Michael Nitschinger trabalha como engenheiro de software principal na Couchbase. Ele é o arquiteto e mantenedor do Couchbase Java SDK, um dos primeiros drivers de banco de dados totalmente reativos na JVM. Ele também é o autor e mantenedor do Couchbase Spark Connector. Michael participa ativamente da comunidade de código aberto e contribui para vários outros projetos, como RxJava e Netty.

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.