Time Series Database(TSDB) 사용 이유
InfluxDB 특징
1.Scale out
시계열 데이터는 자율주행차, IOT 등 초 단위로 유입되는 데이터가 굉장히 많습니다. RDB 경우에는 특정 건수가 이상이면 속도가 확실히 늘어나는데, 그렇다고 timestamp를 index로 잡더라고 index rebuild 등 시간이 오래걸립니다. 또한 오라클 RAC 클러스터 구성 등 비용은 높다보니, RDB경우에는 샤딩 관리가 어려워서 비용이 많이드는 반면, TSDB는 NoSQL의 부류이기 때문에 scale out에 쉽습니다.
2. Data Retention
Application Level에서 구현할 수 도 있지만 data를 Retention Policy 통해서 데이터 삭제 주기를 정해줄 수 있습니다.
3. Rollups and Aggregation(Continuous Queries)
Time Series 데이터를 기반으로 주로 통계 작업 등을 하기 때문에 주기적으로 group by 등을 실행할 수 있습니다.
SELECT <function[s]> INTO <destination_measurement> FROM <measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<tag_key[s]>]
4. Shard
Shard Group은 Shard Group Duration에 따라 실제 데이터를 저장하는 Shard를 관리합니다. Shard는 Shard Group에 정의된 기간 속한 데이터들을 인코딩 및 압축합니다. 1개의 샤드는 여러 개의 series, 디스크에 TSM으로 구성되며, TSM에 저장되기 전에는 메모리에 상주되어있다가, Shard Group Duration가 만료되면 디스크에 TSM형태로 저장됩니다.
> CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"
Retention Period와 다른점은 해당 부분은 disk에서 삭제되는 주기이고, 샤드 duration은 메모리에서 디스크로 저장되는 주기입니다.
5. TSM(Time Structured Merge Tree)
Client에서 write요청이 들어오면 내부적으로 API post reqeust를 통해서 WAL 에 작성 후, in-memory cache(즉시 쿼리가 가능)에 작성하게 됩니다. in-memory cache에 TSM file형태로 저장되고, 주기가 지나면 disk file에 좀 더 compact하게 저장됩니다. TSM은 시계열 데이터를 좀 더 효율적이게 저장하기 위해, time을 기반으로 column based로 저장되있는 형식입니다.
6. TSI(Time Series Index)
In-Memory Index는 measurement, tag key-value pair, and field name에 대한 비트를 time series에 매핑하는 look up테이블입니다. 하지만 증가하는 series cardinality에 따른 query 속도가 저하되고, 너무 많은 메모리로 인해 OOM이 발생할 수 있어서 TSI 인덱스가 도입되었습니다. TSI는 index file은 disk에 옮기면서 LRU 방식으로 메모리가 갖을 수 있게하고, 주기적으로 file을 compact하게 merge시켜 disk에 옮기기 때문에 속도 향상에 도움이 됩니다. 즉, hot data는 memory상에 cold data는 disk에 있게 해줍니다.
기본적으로 Query의 순서는
1) Datafile을 검색하여 where 조건과 시간 범위에 맞는 파일을 추출
2) Index를 기준으로 binary search통해서 데이터 추출
Reference
https://docs.influxdata.com/influxdb/v2.6/reference/internals/storage-engine/
InfluxDB storage engine | InfluxDB OSS 2.6 Documentation
Thank you for your feedback! Let us know what we can do better:
docs.influxdata.com
https://andro-jinu.tistory.com/16
인플럭스DB(InfluxDB) #3 - 용어 정리
이번 포스팅은 요즘 핫한 InfluxDB에 대하여 작성하도록 하겠습니다. InfluxDB 역시 작년 기상청 프로젝트에서 전국에서 관측되는 데이터를 효과적으로 처리하기 위하여 검토되었고 그때 자료조사
andro-jinu.tistory.com
https://docs.influxdata.com/influxdb/v1.8/concepts/storage_engine/
In-memory indexing and the Time-Structured Merge Tree (TSM) | InfluxDB OSS 1.8 Documentation
Thank you for your feedback! Let us know what we can do better:
docs.influxdata.com
https://www.sqlpac.com/en/documents/influxdb-v1.7-architecture-setup-configuration-usage.html
Understanding, installing and using the time series database InfluxDB 1.7
Understanding, installing and using the time series database InfluxDB 1.7 Introduction When installing NetData, a powerful monitoring tool, a question is quickly asked : where to keep and store measures ? NetData enables to store the measures in an InfluxD
www.sqlpac.com
https://docs.influxdata.com/influxdb/v1.8/concepts/time-series-index/
'데이터베이스' 카테고리의 다른 글
오라클 구조 (0) | 2022.09.21 |
---|---|
[DB(오라클)] 용어정리 (0) | 2022.08.15 |
[DB(오라클)] 디스크 용량 부족 시 확인할 점 (0) | 2022.08.13 |
[DB(오라클)] 데이터 저장 구조 (0) | 2022.08.12 |
[DB] Index (0) | 2022.07.31 |