A medida que Couchbase sigue creciendo como empresa y aumenta su adopción por parte de la comunidad de código abierto, seguimos encontrando nuevos retos y casos de uso. Muchas empresas recurren a nosotros para que les ayudemos a añadir una caché a una aplicación existente o a evolucionar aplicaciones a tecnologías de nueva generación. Para estas implementaciones de caché de nivel dos hemos ayudado a desarrollar una capa de acceso a datos para aplicaciones en el proyecto Spring. Spring Data Couchbase proporciona integración con el cluster Couchbase Server proporcionando interacción de datos centrada en POJO con Couchbase Buckets y ayudando a proporcionar una implementación estilo repositorio. Este esfuerzo ha tenido mucho éxito y ha generado mucho interés.
Sin embargo, una simple búsqueda de "JPA" en Internet revela más cosas que nos ayudan a comprender otras necesidades de la empresa. Aunque el estándar JPA está bien definido En última instancia, la implementación de cada proveedor varía lo suficiente como para que la compatibilidad con ORM específicos como Eclipselink e Hibernate requiera trabajo adicional. Nos pusimos en contacto con nuestros socios de Tecnología Thumbtack que desplegó uno de sus equipos de desarrollo expertos en NOSQL para ayudar a conseguir el trabajo hecho.
El objetivo era proporcionar un marco de código para aprovechar Couchbase como caché de nivel dos para Eclipselink e Hibernate. Hay mejoras que vienen con el lanzamiento de nuestro 2.0 SDK y mejoras adicionales de integración, pero queríamos ser capaces de apoyar estos esfuerzos de almacenamiento en caché en el corto plazo. Tanto los conectores JPA de Hibernate como los de Eclipselink han sido publicados por Thumbtack en github con casos de prueba para mostrar la configuración.
Hibernar - https://github.com/thumbtack-technology/Couchbase-L2-Hibernate
EclipseLink - https://github.com/thumbtack-technology/Couchbase-L2-EclipseLink
Aunque siempre existe la posibilidad de aprovechar Moxi para permitir que los clientes memcached existentes sean conscientes de vbubket. Sabíamos que el paquete javax.persistance disponía de un módulo interfaz de caché disponible pero la aplicación de cada proveedor requiere matices que hay que tener en cuenta. Por ejemplo, al revisar los documentación de eclipselink muestra la posibilidad de añadir una caché de nivel 2, pero nada que nos ayude a entender los detalles específicos de aprovechar una solución NoSQL. Thumbtack nos ayudó a resolver estos retos de configuración.
<propiedad nombre="couchbase.cache.servers"
valor="http://couchbase-cluster-node01:8091/pools,
http://couchbase-cluster-node02:8091/pools”/>
<propiedad nombre="couchbase.cache.bucket.name" valor="l2-cache"/>
<propiedad nombre="couchbase.cache.bucket.password" valor="cachepwd"/>
<propiedad nombre="couchbase.cache.ttl" valor=“600”/>
<propiedad nombre="eclipselink.descriptor.customizer.”
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
>
<propiedad nombre="eclipselink.descriptor.customizer.Order"
valor="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
>
<propiedad nombre="eclipselink.descriptor.customizer.”
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
<propiedad nombre="couchbase.cache.servers"
valor="http://couchbase-cluster-node01:8091/pools,
http://couchbase-cluster-node02:8091/pools”/>
<propiedad nombre="couchbase.cache.bucket.name" valor="l2-cache"/>
<propiedad nombre="couchbase.cache.bucket.password" valor="cachepwd"/>
<propiedad nombre="couchbase.cache.ttl" valor=“600”/>
<propiedad nombre="hibernate.cache.region.factory_class" valor="com.googlecode.hibernate.memcached.MemcachedRegionFactory" />
<propiedad nombre="hibernate.memcached.memcacheClientFactory" valor="net.thumbtack.hibernate.couchbase.CouchbaseClientFactory" />
En los repositorios de github se pueden encontrar detalles adicionales sobre cómo ejecutar localmente los casos de prueba de Thumbtack.
Estos conectores nos proporcionan la capacidad de ampliar las aplicaciones existentes mediante la adición de una caché de objetos con un clúster duradero. Aprovechando la potencia de Couchbase podemos evitar Cold Cache, reducir drásticamente la carga en su RDBMS, auto-shard a través del clúster y proporcionar un almacén de objetos duradero.