회사로서의 성장과 오픈 소스 커뮤니티의 채택이 증가함에 따라 Couchbase는 계속해서 새로운 과제와 사용 사례에 직면하고 있습니다. 많은 기업들이 기존 애플리케이션에 캐시를 추가하거나 차세대 기술로 애플리케이션을 발전시키기 위해 저희를 찾고 있습니다. 이러한 레벨 2 캐시 구현을 위해 Spring 프로젝트에서 애플리케이션을 위한 데이터 액세스 계층을 개발하는 데 도움을 주고 있습니다. 스프링 데이터 카우치베이스는 카우치베이스 버킷과 POJO 중심의 데이터 상호 작용을 제공하고 저장소 스타일의 구현을 지원함으로써 카우치베이스 서버 클러스터와의 통합을 제공합니다. 이러한 노력은 매우 성공적이었으며 많은 관심을 불러일으켰습니다.
하지만 'JPA'에 대한 간단한 웹 검색을 통해 기업 전반의 추가적인 요구 사항을 이해하는 데 도움이 되는 더 많은 이야기를 발견할 수 있습니다. JPA 표준은 정의 궁극적으로 각 공급업체의 구현은 다양하기 때문에 Eclipselink 및 Hibernate와 같은 특정 ORM을 지원하려면 추가 작업이 필요합니다. 저희는 파트너와 함께 썸택 기술 전문 NOSQL 개발 팀 중 한 명을 배치하여 작업을 완료했습니다.
이 프로젝트의 목표는 카우치베이스를 Eclipselink와 최대 절전 모드의 레벨 2 캐시로 활용할 수 있는 상용구 코드 프레임워크를 제공하는 것이었습니다. 2.0 SDK의 출시와 함께 추가적인 통합 개선이 이루어질 예정이지만, 가까운 시일 내에 이러한 캐싱 작업을 지원할 수 있기를 원했습니다. Hibernate와 Eclipselink JPA 커넥터는 모두 구성에 대한 테스트 사례와 함께 Thumbtack에서 github에 게시했습니다.
최대 절전 모드 - 최대 절전 모드 https://github.com/thumbtack-technology/Couchbase-L2-Hibernate
EclipseLink - https://github.com/thumbtack-technology/Couchbase-L2-EclipseLink
항상 활용할 수 있는 기능은 있지만 Moxi 를 추가하여 기존 멤캐시드 클라이언트가 vbubket을 인식할 수 있도록 합니다. 우리는 javax.persistance 패키지에 캐시 인터페이스 사용 가능 하지만 각 공급업체의 구현에는 해결해야 할 미묘한 차이가 있습니다. 예를 들어, 관련 이클립스 링크 문서 는 레벨 2 캐시를 추가하는 기능을 보여 주지만 NoSQL 솔루션 활용의 세부 사항을 이해하는 데 도움이 되는 내용은 없습니다. Thumbtack은 이러한 구성 문제를 해결하는 데 도움을 주었습니다.
<프로퍼티 이름="couchbase.cache.servers"
값="https://couchbase-cluster-node01:8091/pools,
https://couchbase-cluster-node02:8091/pools”/>
<프로퍼티 이름="couchbase.cache.bucket.name" 값="l2-cache"/>
<프로퍼티 이름="couchbase.cache.bucket.password" 값="cachepwd"/>
<프로퍼티 이름="couchbase.cache.ttl" 값=“600”/>
<프로퍼티 이름="eclipselink.descriptor.customizer.”
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
>
<프로퍼티 이름="eclipselink.descriptor.customizer.Order"
값="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
>
<프로퍼티 이름="eclipselink.descriptor.customizer.”
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
<프로퍼티 이름="couchbase.cache.servers"
값="https://couchbase-cluster-node01:8091/pools,
https://couchbase-cluster-node02:8091/pools”/>
<프로퍼티 이름="couchbase.cache.bucket.name" 값="l2-cache"/>
<프로퍼티 이름="couchbase.cache.bucket.password" 값="cachepwd"/>
<프로퍼티 이름="couchbase.cache.ttl" 값=“600”/>
<프로퍼티 이름="hibernate.cache.region.factory_class" 값="com.googlecode.hibernate.memcached.MemcachedRegionFactory" />
<프로퍼티 이름="hibernate.memcached.memcacheClientFactory" 값="net.thumbtack.hibernate.couchbase.CouchbaseClientFactory" />
로컬에서 Thumbtack 테스트 케이스를 실행하는 방법에 대한 자세한 내용은 github 리포지토리에서 확인할 수 있습니다.
이 커넥터는 내구성 있는 클러스터에 객체 캐시를 추가하여 기존 애플리케이션을 확장할 수 있는 기능을 제공합니다. Couchbase의 강력한 기능을 활용하여 콜드 캐시를 방지하고, RDBMS의 부하를 획기적으로 줄이고, 클러스터 전체에 걸쳐 자동 샤딩하고, 내구성 있는 오브젝트 저장소를 제공할 수 있습니다.