Memcached 및 Redis로 이동하십시오. Netflix의 Hollow가 있습니다.

2 년 동안 내부적으로 사용 된 Netflix는 지속적으로 변경되는 데이터 세트를 캐시하는 강력한 옵션으로 새로운 오픈 소스 프로젝트를 제공하고 있습니다.

Hollow는 최대 수 기가 바이트 크기의 데이터 세트의 인 메모리 캐싱을 목표로하는 Java 라이브러리 및 도구 세트입니다. Netflix에 따르면 Hollow의 목적은 세 가지입니다. 데이터를보다 효율적으로 저장하기위한 것입니다. 데이터에 대한 편리한 액세스를 위해 API를 자동으로 생성하는 도구를 제공 할 수 있습니다. 데이터 사용 패턴을 자동으로 분석하여 백엔드와보다 효율적으로 동기화 할 수 있습니다.

이걸 우리 사이에 두자

데이터가 저장되지 않은 시스템 ( "생산자"시스템이 아닌 "소비자"시스템)에서 데이터를 캐싱하는 시나리오의 대부분은 Memcached 또는 Redis와 같은 제품을 사용하는 것과 관련됩니다. Hollow는 빠른 액세스를 위해 메모리 내 스토리지를 사용하기 때문에 두 제품을 연상 시키지만 Redis와 같은 실제 데이터 저장소는 아닙니다.

다른 많은 데이터 캐싱 시스템과 달리 Hollow는 특정 필드가있는 주어진 스키마 (일반적으로 JSON 스트림) 인 특정 데이터 세트에 연결되도록 설계되었습니다. Hollow는 프로세스를 부분적으로 자동화하는 몇 가지 도구를 제공하지만 일부 준비 작업이 필요합니다. 그렇게하는 이유 : Hollow는 Java의 가비지 수집의 영향을받지 않는 고정 길이의 강력한 유형의 청크로 메모리에 데이터를 저장할 수 있습니다. 결과적으로 기존 Java 객체보다 액세스가 더 빠릅니다.

Hollow의 또 다른 장점은 데이터 작업을위한 다양한 도구를 제공한다는 것입니다. 데이터에 대한 스키마를 정의하면 Hollow는 자동 완성 데이터를 IDE에 제공 할 수있는 Java API를 자동으로 생성 할 수 있습니다. 또한 데이터가 변경 될 때 추적 할 수 있으므로 개발자는 시점 스냅 샷, 스냅 샷 간의 차이점 및 데이터 롤백에 액세스 할 수 있습니다.

더 빠르게

Netflix가 Hollow에 대해 주장하는 많은 이점에는 기본적인 운영 효율성, 즉 서버 시작 시간이 단축되고 메모리 변동이 적다는 점이 있습니다. 그러나 Hollow의 데이터 모델링 및 관리 도구는 단순히 생산 속도를 높이는 것이 아니라 개발을 돕기위한 것이기도합니다.

넷플릭스는 소개 블로그 게시물에서“현재 또는 최근의 어느 시점에서든 전체 프로덕션 데이터 세트를 신속하게 로컬 개발 워크 스테이션으로 분류하고로드 한 다음 특정 프로덕션 시나리오를 정확하게 재현 할 수 있다고 상상해보십시오.

한 가지주의 할 점은 Hollow가 모든 크기의 데이터 세트에 적합하지 않다는 것입니다. "KB, MB 및 GB는 아니지만 TB는 아닙니다."는 회사가이를 문서에 기록하는 방식입니다. 즉, Netflix는 Hollow가 캐시 된 데이터 세트에 필요한 무분별한 양을 줄인다는 것을 의미합니다. "올바른 프레임 워크와 약간의 데이터 모델링을 통해 [메모리] 임계 값은 생각보다 훨씬 높을 것입니다."라고 Netflix는 말합니다.