Sem categoria

Anunciando a disponibilidade geral do Java SDK 2.2

Em nome da equipe do SDK, é com grande prazer que anuncio que a versão do Java SDK 2.2 agora é GA!

Esta versão está repleta de aprimoramentos e correções de bugs. Antes de mais nada, ela oferece compatibilidade com todas as novidades do nosso novo Servidor Couchbase 4.0 traz para a mesa.

Graças ao feedback e após algumas iterações (não houve um mas dois Developer Previews para esta versão!), agora temos um rico conjunto de melhorias que podem ser aproveitadas ao migrar do 2.0/2.1 para 2.2.

Veja o Notas de versão para obter uma lista completa das alterações, mas aqui está uma recapitulação:

Para ter acesso a essa versão, basta atualizar seu pom.xml (ou faça o download do arquivo):

Você também pode consultar o javadocs e Documentação do SDK para esta versão.

Novos recursos

Suporte a N1QL e MDS

O SDK foi ajustado para funcionar perfeitamente com Servidor Couchbase 4.0:

  • Explore uma DSL completa para trabalhar com N1QL e executar SELECT, além de trabalhar com índices.
  • Permita que o SDK e o serviço de consulta otimizem as consultas que você executa com frequência usando a opção adhoc(false) ajuste de N1qlParams em você N1qlQuery.
  • Confie no SDK para estar ciente de sua MDS grupo (Dimensionamento multidimensionalA possibilidade de os nós terem diferentes serviços ativados, permitindo que você dimensione os nós de acordo com a necessidade deles (por exemplo, mais RAM para nós de dados, mais CPU para nós de consulta).

Sobre a otimização de consultas: é uma substituição do preparar API em visualizações para desenvolvedores. Não há necessidade de manter uma PreparedPayload ou Plano de consulta. Marcação de uma consulta para otimização usando N1qlParams's adhoc(false) usará internamente o recurso de instrução preparada do mecanismo de consulta, armazenando em cache até 5.000 planos de execução para uma execução mais rápida.

Durabilidade aprimorada

Outra possibilidade introduzida em Servidor Couchbase 4.0 é a durabilidade aprimorada. A ideia é que, em vez de usar o CAS para verificar a persistência e a replicação corretas dos seus dados, uma solução mais refinada e mais eficiente seja usada. MutaçãoToken pode ser emitida pelo servidor a cada mutação e usada para observação da durabilidade.

Ele permite garantir que uma mutação específica tenha sido vista em uma réplica, mesmo que uma mutação mais recente seja feita nesse meio tempo (alterando mais uma vez o CAS no mestre e na réplica). Ele também permite uma detecção mais correta do estado se um failover rígido tiver sido acionado no cluster.

Para ativar esse recurso no CouchbaseEnvironment usar o mutationTokensEnabled(true) método.

Observação Isso implica que bytes adicionais são enviados pelo servidor em cada resposta de mutação, o que acarreta uma pequena sobrecarga e, portanto, é desativado por padrão.

Métricas

O que está acontecendo dentro do SDK? Qual é a integridade da minha JVM? Essas latências são devidas às viagens de ida e volta da rede ou estão ocorrendo no SDK?

Todas essas perguntas e outras encontram respostas no novo recurso Metrics!

Tempo de execução e Latência As métricas são coletadas o tempo todo e são despejadas regularmente no EventBus (um Observável por padrão, a cada hora. Além de alterar o intervalo do despejo, é possível configurar facilmente um consumidor para esses eventos de métrica que os registram.

Dê uma olhada na documentação para descobrir todos os detalhes essenciais :)

ODM simples com API de repositório

Estamos explorando o ODM (Mapeamento de objeto-documento) na forma de um Repositório que permite armazenar classes de Entidade diretamente, desde que sejam suficientemente simples (por exemplo, por enquanto ele precisa de um construtor vazio) e anotadas com @Documento, @Id e @Campo.

De observáveis quentes a observáveis frios

Essa é uma grande mudança no comportamento do assíncrono API. Em RxJava, a quente Observável emitirá dados independentemente de alguém estar ou não ouvindo/assinando e sempre fornecerá os mesmos dados a novos assinantes.

Esse era o comportamento dos Observáveis do SDK do Couchbase anteriormente. Isso significava que, se você necessário novas assinaturas para acionar uma nova operação no banco de dados (por exemplo, no contexto de tentar novamente), você tinha que envolver sua chamada em um Observável.defer().

Caso contrário, todas as novas tentativas teriam o mesmo primeiro resultado, por exemplo, um TemporaryFailureException.

De 2.2 em diante, o comportamento padrão é ter frio Observávels, o que significa que o encapsulamento em adiar agora é redundante. Todas as chamadas do SDK funcionarão perfeitamente com RxJava's tentar novamente semântica.

A menos que você explicitamente subscribe() para um Observável retornado pelo SDK, nenhuma interação com o banco de dados é acionada. Essa é uma abordagem mais preguiçosa de "não fazer nada até que seja necessário" que também é benéfica ao declarar fluxos de fallback (como com Observável#onErrorResumeNext()).

Aprimoramentos da API

getFromReplica iteração

Na API de sincronização, agora há uma sobrecarga de getFromReplica que retorna um Iteradorpermitindo o consumo fácil de apenas parte das respostas (por exemplo, quando se está interessado apenas na resposta mais rápida).

includeDocs em Consulta

Ainda na API de sincronização, se você quiser que seu Consulta para recuperar com eficiência todo o conteúdo dos documentos em segundo plano, agora você pode usar o includeDocs opção.

Semântica de contador

Anteriormente, contador inicializaria o documento do contador com o valor padrão de 0 se não houver valor inicial foi fornecido na sobrecarga.

Isso foi alterado para que, em vez disso, um DocumentDoesNotExistException é lançado com esse tipo de sobrecarga (como na geração do SDK 1.4). Para inicializar com 0 em vez de gerar erro, basta usar uma das sobrecargas que aceitam um valor inicial.

Requisito de durabilidade Suporte para contador, anexar e prefixar

Anteriormente, nenhuma sobrecarga permitia definir um PersistTo e/ou ReplicarPara requisito de durabilidade. Isso já foi implementado.

CASMismatchException em vez de CouchbaseException para anexar e prefixar

Como o título indica, onde ambos os métodos retornariam apenas um CouchbaseException

Opções do documento de design

Agora você pode especificar diferentes opções por documento de design ao criar ou substituir um.

CouchbaseEnvironment: Evitando confusão

O CouchbaseEnvironment.Builder não implementa mais a interface, forçando você a chamar construir() para obter o ambiente real (e, assim, evitar confundir NullPointerException durante o uso).

Diversos

Mudanças de nome

Algumas classes relacionadas a N1QL foram renomeadas para evitar confusão e se alinhar melhor com outras classes semelhantes e/ou outros SDKs:

  • A maioria Consulta as classes relacionadas foram prefixadas com N1QL (por exemplo. Resultado de consulta assíncrona torna-se AsyncN1qlQueryResult). Isso é mais consistente com a nomeação, por exemplo, de visualizações (Consulta, N1qlQuery).
  • QueryParams torna-se N1qlParams e Métricas de consulta torna-se N1qlMetrics.
  • As várias instâncias da palavra parametrizado foram substituídos por parametrizado na documentação e nos SDKs. Por exemplo, em N1qlQuery.parameterized(Statement st, JsonObject paramValues) método de fábrica...

Atualizações de dependências

A seguinte dependência externa foi atualizada:

  • RxJava de 1.0.4 para 1.0.14

Além disso, as dependências internas também foram atualizadas:

  • Netty de 4.0.25.Final para 4.0.30.Final
  • LMAX Disruptor 3.3.0 para 3.3.2
  • Jackson de 2.4.2 para 2.6.1
  • LatencyUtils Novo na versão 2.0.2

Esperamos que você goste desse lançamento. Boa programação!

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

Author

Posted by Simon Basileia

Simon Basl_ é um engenheiro de software baseado em Paris que trabalha na equipe Spring da Pivotal. Anteriormente, ele trabalhou na equipe do Couchbase Java SDK. Seus interesses abrangem aspectos de design de software (OOP, padrões de design, arquitetura de software), clientes avançados, o que está além do código (integração contínua, (D)VCS, práticas recomendadas) e programação reativa. Ele também é editor da versão francesa do InfoQ.com.

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.