Anuncio de la disponibilidad general de Java SDK 2.2

En nombre del equipo del SDK, tengo el gran placer de anunciar que la versión del SDK de Java 2.2 ¡ya es GA!

Esta versión está repleta de mejoras y correcciones de errores. En primer lugar, ofrece compatibilidad con todas las novedades de nuestro nuevo Servidor Couchbase 4.0 pone sobre la mesa.

Gracias a los comentarios y después de bastantes iteraciones (no había un pero dos Developer Previews para esta versión), ahora tenemos un amplio conjunto de mejoras para aprovechar al migrar de 2.0/2.1 a 2.2.

Véase el notas de la versión para consultar la lista completa de cambios, pero aquí tiene un resumen:

Para obtener esta versión, sólo tiene que actualizar su pom.xml (o descargar el archivo):

También puede consultar javadocs y Documentación del SDK para este comunicado.

Novedades

Soporte N1QL y MDS

El SDK se ha ajustado para que funcione a la perfección con Servidor Couchbase 4.0:

  • Explora un DSL completo para trabajar con N1QL y realizar SELECT así como trabajar con índices.
  • Deje que el SDK y el servicio de consultas optimicen las consultas que ejecuta con frecuencia utilizando la función adhoc(false) afinación de N1qlParámetros en ti N1qlQuery.
  • Confíe en el SDK para conocer su MDS grupo (Escalado multidimensionalla posibilidad de que los nodos tengan habilitados diferentes servicios, lo que permite escalar los nodos en función de sus necesidades, por ejemplo, más RAM para los nodos de datos, más CPU para los nodos de consulta).

Acerca de la optimización de consultas: se trata de una sustitución del prepare API en previsualizaciones para desarrolladores. No es necesario aferrarse a una Carga preparada o Plan de consulta. Marcar una consulta para su optimización mediante N1qlParámetros's adhoc(false) utilizará internamente la función de sentencias preparadas del motor de consultas, almacenando en caché hasta 5000 planes de ejecución para una ejecución más rápida.

Mayor durabilidad

Otra posibilidad introducida en Servidor Couchbase 4.0 es la durabilidad mejorada. La idea es que, en lugar de utilizar CAS para comprobar la persistencia y replicación correctas de los datos, se puede utilizar un algoritmo de granularidad más fina. MutationToken puede ser emitido por el servidor con cada mutación y utilizado para la observación de la durabilidad.

Permite asegurar que una mutación específica ha sido vista en una réplica incluso si se realiza una nueva mutación mientras tanto (cambiando de nuevo el CAS en el maestro y la réplica). También permite una detección de estado más correcta si se ha desencadenado un hard failover en el cluster.

Para activar esta función en el CouchbaseEnvironment utilizar el mutationTokensEnabled(true) método.

Nota Esto implica que el servidor envía bytes adicionales en cada respuesta de mutación, por lo que conlleva una ligera sobrecarga y, por tanto, está desactivado por defecto.

Métricas

¿Qué está pasando dentro del SDK? ¿Cuál es la salud de mi JVM? ¿Esas latencias se deben a los viajes de ida y vuelta de la red o están ocurriendo en el SDK?

Todas estas preguntas y muchas más encuentran respuesta en la nueva función Métricas.

Tiempo de ejecución y Latencia Las métricas se recopilan todo el tiempo y se vuelcan regularmente al EventBus (an Observable ), por defecto cada hora. Además de cambiar el intervalo para el volcado, se puede configurar fácilmente un consumidor para estos eventos métricos que los registre.

Eche un vistazo a la documentación para descubrir todos sus detalles :)

ODM simple con API de repositorio

Estamos explorando la ODM (Correspondencia objeto-documento) en forma de Repositorio que permite almacenar clases Entity directamente, siempre que sean lo suficientemente simples (por ejemplo, por ahora necesita un constructor vacío) y estén anotadas con @Documento, @Id y @Campo.

De los observables calientes a los fríos

Esto supone un cambio importante en el comportamiento del async API. En RxJava, a caliente Observable emitirá datos tanto si alguien está escuchando/suscribiéndose como si no, y siempre servirá los mismos datos a los nuevos suscriptores.

Este era el comportamiento de los Observables del SDK de Couchbase anteriormente. Esto significaba que si necesario nuevas suscripciones para desencadenar una nueva operación en la base de datos (por ejemplo en el contexto de reintentar), tenía que envolver su llamada en una llamada Observable.defer().

De lo contrario, todos los reintentos verían el mismo primer resultado, por ejemplo un TemporaryFailureException.

En 2.2 en adelante, el comportamiento por defecto es tener frío Observables, lo que significa que la envoltura en aplazar es ahora redundante. Todas las llamadas al SDK funcionarán sin problemas con RxJava's reintentar semántica.

A menos que explícitamente subscribe() a un Observable devuelto por el SDK, no se activa ninguna interacción con la base de datos. Este es un enfoque más perezoso de "no hacer nada hasta que sea necesario" que también es beneficioso al declarar flujos de retorno (como con Observable#onErrorReanudarSiguiente()).

Mejoras de la API

getFromReplica iteración

En la API de sincronización, ahora hay una sobrecarga de getFromReplica que devuelve un Iterador, lo que permite consumir fácilmente sólo una parte de las respuestas (por ejemplo, cuando sólo interesa la respuesta más rápida).

incluirDocs en ViewQuery

Todavía en la API de sincronización, si desea que su ViewQuery para recuperar eficazmente todo el contenido de los documentos en segundo plano, ahora puede utilizar la función incluirDocs opción.

Contrasemántica

Anteriormente, contador inicializaría el documento contador con el valor por defecto de 0 si no hay ningún initialValue en la sobrecarga.

Esto se ha cambiado para que, en su lugar, un DocumentDoesNotExistException con este tipo de sobrecargas (como en la generación 1.4 del SDK). Para inicializar con 0 en lugar de lanzar un error, simplemente utilice una de las sobrecargas que aceptan un valor initialValue.

Requisito de durabilidad Apoyo a contador, añadir y anteponer

Anteriormente ninguna sobrecarga permitía establecer un PersistTo y/o ReplicateTo requisito de durabilidad. Esto ya se ha aplicado.

CASMismatchException en lugar de CouchbaseException para añadir y anteponer

Como el título indica, en el caso de que ambos métodos devolvieran simplemente un genérico CouchbaseException

Opciones del documento de diseño

Ahora puede especificar distintas opciones por documento de diseño al crear o sustituir uno.

CouchbaseEnvironment: Evitar confusiones

En CouchbaseEntorno.Builder ya no implementa la interfaz, lo que le obliga a llamar a construir() para obtener el entorno real (y así evitar confundir NullPointerException durante el uso).

Varios

Cambios de nombre

Algunas clases relacionadas con N1QL se han renombrado para evitar confusiones y alinearse mejor con otras clases similares y/o otros SDKs:

  • Más Consulta se ha antepuesto el prefijo N1QL (Ej. AsyncQueryResult se convierte en AsyncN1qlQueryResultado). Esto es más coherente con la nomenclatura, por ejemplo, para las vistas (ViewQuery, N1qlQuery).
  • Parámetros de consulta se convierte en N1qlParámetros y QueryMetrics se convierte en N1qlMetrics.
  • Las diversas instancias de la palabra parametrizado se han sustituido por parametrizado en la documentación y los SDK. Por ejemplo, en N1qlQuery.parameterized(Statement st, JsonObject paramValues) método de fábrica...

Actualizaciones de dependencia

Se ha actualizado la siguiente dependencia externa:

  • RxJava de 1.0.4 a 1.0.14

Además, también se han actualizado las dependencias internas:

  • Netty de 4.0.25.Final a 4.0.30.Final
  • Disruptor LMAX 3.3.0 a 3.3.2
  • Jackson de 2.4.2 a 2.6.1
  • LatencyUtils nuevo en versión 2.0.2

Esperamos que disfrute de esta versión. ¡Feliz programación!

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Simon Basle, Ingeniero de Software, Pivotal

Simon Basl_ es un Ingeniero de Software residente en París que trabaja en el equipo Spring de Pivotal. Anteriormente, trabajó en el equipo de Couchbase Java SDK. Sus intereses abarcan aspectos de diseño de software (OOP, patrones de diseño, arquitectura de software), clientes ricos, lo que hay más allá del código (integración continua, (D)VCS, mejores prácticas) y programación reactiva. También es editor de la versión francesa de InfoQ.com.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.