목록Storage/Druid (6)
The Boxer
druid 오픈소스 분산 데이터 저장소 핵심 디자인: 데이터 웨어하우스, 시계열 DB, 검색 시스템으로 부터 고성능 실시간 분석 DB 제공 다차원 데이터: 1차원 정보(row)를 지정된 필드(dimension)을 통해 지표(metric)로 표현한 데이터 Usecase 주로 전반적인 지표 흐름을 조회하는 용도로 사용 클릭 스트림 분석 부정 분석 시스템 네트워크 성능 모니터링 서버 성능 분석 공급망 분석 어플리케이션 성능 분석... 사용하면 안되는 경우 정확한 데이터를 조회하는 경우 1차원 데이터(row) 에 대한 정확한 데이터 조회 인덱싱 방식 다차원 데이터에 대한 빠른 쿼리 결과 제공을 위해 세그먼트(time interval) 단위로 인덱싱 쿼리를 수행하는 시점이 아니라 데이터를 저장하는 시점에 인덱싱 ..
druid의 구조는 process(service)로 구성된다. 각 server는 process가 배포되는 단위이며 process는 운영상의 유연함을 위해 3개 type의 서버로 나눠 배포된다. process(service) Coodinator Overlord Broker Historical Middleware manager and Peon Indexer Router server Master Query Data 전체 구조 ref: https://druid.apache.org/docs/latest/design/processes.html Druid process and server Master server Master server는 데이터 적재와 가용성을 책임진다. 실질적으로 새로운 적재 작업을 실행시키며 D..
# 이 글은 druid segment 를 참고하여 정리한 글입니다. druid는 index 정보를 시간에 따라 파티셔닝된 segment 파일에 저장한다. 여기서 파티셔닝이 되는 시간 단위는 segmentGranularity 값을 통해 설정 가능한다. 보통 druid가 무거운 쿼리를 적절한 성능으로 처리하기 위해서 segment 파일은 300 MB ~ 700 MB 사이를 유지할 것을 권장한다. 만약 해당 segment의 용량이 해당 값 범위 밖에 있다면 segmentGranularity 값을 조정해야 한다. segment 파일의 구조 컬럼 지향(columnar): druid의 특징으로 각 column의 데이터가 분리되어 저장되었음을 것을 의미한다. column 데이터를 분리하여 저장함으로써, 필요한 col..
# 이 글은 druid 공식문서의 design 파트를 정리한 글입니다. druid는 클라우드 서비스에 적용하기 쉬운 분산 구조로 이루어져 있다. 이러한 구조 덕분에 몇가지 설정만으로 쉽고 유연하게 스케일 조절도 가능하며, 장애 복구 기능도 제공한다. 전체 구조 출처: https://druid.apache.org/docs/latest/design/architecture.html 드루이드 서비스 드루이드는 다음의 서비스로 구성되어 있다. coodinator service: 데이터 가용성을 책임지는 서비스 overlord service: 데이터 적재 작업을 제어 broker: 외부 클라이언트에서 들어온 쿼리문 제어 router service: request를 broker, coodinator, overlord..
druid에서 query에 어떤 데이터가 포함되어야 하는지 명시 SQL에서 row단위의 제약을 거는 where 절과 동일하게 볼 수 있음 일반적으로 dimension 에 적용되는 조건이나, metric 에도 적용될 수 있음 query filter 종류 selector 가장 기본적인 filter 특정 dimension의 지정한 값에 해당하는 데이터 추출 extraction function 적용 가능 { "filter": { "type": "selector", "dimension": "d1" , "value": "test" } } column comparison 특정 dimension이 같은 조건에 해당하는 데이터 추출 예시에서 dimension1 = dimension2 와 같은 기능 { "filter": ..
드루이드는 2가지 방식의 쿼리를 통해 데이터를 질의할 수 있다. Druid SQL: 일반적인 SQL로 으로 질의 native queries: JSON 오브젝트 형식이며 http 통신을 통해 post의 body로 담아 질의 여기서 native queries 방식에 대해 알아본다. native queries 드루이드에 데이터를 질의하기 위한 쿼리 http 통신으로 전달되는 JSON 형식이며, post의 body로 전달한다. curl로 질의하는 예시 curl -X POST '{host}:{port}/druid/v2/?pretty' -H 'Content-Type:application/json' -H 'Accept:application/json' -d @{query_json_file} 경량화 되게 설계되어 있으며..