Deep storage

Deep storage

deep storage는 segment가 저장되는 곳이에요. Apache Druid가 제공하지 않는 저장 메커니즘이며, 데이터의 내구성 수준을 결정해요. Druid 프로세스가 이 저장소를 보고 segment에 접근할 수 있는 한, Druid 노드를 몇 개 잃어도 데이터를 잃지 않아요.

출처: 문서

본문

deep storage는 segment가 저장되는 곳이에요. Apache Druid가 제공하지 않는 저장 메커니즘이에요. 이 deep storage 인프라가 데이터의 내구성(durability) 수준을 정의해요. Druid 프로세스가 이 저장소 인프라를 보고 그 위에 저장된 segment에 접근할 수 있는 한, Druid 노드를 얼마나 많이 잃든 데이터를 잃지 않아요. 이 저장 계층에서 segment가 사라지면, 그 segment가 나타내는 데이터를 잃게 돼요.

segment의 backing store일 뿐 아니라, deep storage를 주로 사용해 쿼리를 실행할 수도 있어요. 구성하는 load rules가 segment가 deep storage에 주로 존재하는지, deep storage와 Historical 프로세스의 조합으로 존재하는지를 결정해요.

Deep storage 옵션

Druid는 주요 클라우드 공급사의 blob storage를 포함해 deep storage의 여러 옵션을 지원해요. 환경에 맞는 것을 선택하세요.

Local

Local storage는 다음 상황에서 쓰도록 고안되었어요:

  • 서버가 하나뿐일 때
  • 또는 여러 서버가 있고 모두 공유 파일시스템(예: NFS)에 접근할 수 있을 때

다중 서버 프로덕션 클러스터에서는 공유 파일시스템이 있는 local storage 대신, 클라우드 기반 deep storage(S3, GCS, Azure), S3 호환 저장소(예: Minio), 또는 HDFS를 권장해요. 이 옵션들은 일반적으로 공유 파일시스템을 설정하는 것보다 더 편리하고 확장 가능하며 견고해요.

common.runtime.properties에서 local storage에 적용되는 설정은 다음과 같아요:

Property Possible Values Description Default
druid.storage.type local 반드시 설정해야 해요.
druid.storage.storageDirectory any local directory segment 저장용 디렉터리. druid.segmentCache.locations와 druid.segmentCache.infoDir와 달라야 해요. /tmp/druid/localStorage
druid.storage.zip true, false druid.storage.storageDirectory의 segment를 디렉터리(false)로 쓸지 zip 파일(true)로 쓸지 여부. false

예를 들어:

druid.storage.type=local
druid.storage.storageDirectory=/tmp/druid/localStorage

druid.storage.storageDirectory는 druid.segmentCache.locations 또는 druid.segmentCache.infoDir과 다른 경로로 설정해야 해요.

Amazon S3 또는 S3 호환

druid-s3-extensions을 참고하세요.

Google Cloud Storage

druid-google-extensions을 참고하세요.

Azure Blob Storage

druid-azure-extensions을 참고하세요.

HDFS

druid-hdfs-storage extension 문서를 참고하세요.

추가 옵션

추가 deep storage 옵션은 extensions list를 참고하세요.

Deep storage에서 쿼리

Historical 프로세스의 디스크에 저장된 segment를 쿼리하는 것만큼 성능이 좋지는 않지만, deep storage에서 쿼리할 수 있어요. 자주 필요하지 않거나 Druid 쿼리가 전통적으로 제공하는 극한의 저지연이 필요 없는 segment에 접근할 수 있답니다. Historical 프로세스의 수나 용량을 늘리지 않고도 더 많은 데이터에 접근할 수 있으므로, 일부 성능을 희생하는 대신 전체 저장 비용을 낮출 수 있어요.

쿼리 실행 방법에 대한 정보는 Query from deep storage를 참고하세요.

더 알아보기 (Learn more)

  • Query from deep storage — deep storage에서 쿼리를 실행하는 방법을 알아봐요.
  • Load rules — segment가 어디에 존재할지 결정하는 규칙을 살펴봐요.
  • Extensions list — deep storage에 사용할 수 있는 확장 목록을 확인해요.