2013년에 Go 언어로 개발된 오픈소스 Time Series Database(시계열 데이터베이스)로 잘알려진 InfluxDB
Influx Data 사의 Time-series DB : 시계열 데이터를 저장하고 활용하는 데에 특화된 database
최근까지 프로메테우스를 제외한 시계열 데이터베이스로 1위를 장식하고 있었습니다.
프로메테우스와의 차이
데이터 수집 방식이 차이가 있다.
Push vs. Pull InfluxDB는 push 기반의 시스템이다. InfluxDB에 데이터를 쌓기 위해서는 누군가 InfluxDB로 데이 터를 넣어줘야 한다. 어플리케이션 서버가 직접 api를 호출해 데이터를 넣거나, fluentd 등을 이용 해 데이터를 넣어줘야 한다. Prometheus는 pull 기반의 시스템이다. 데이터를 가져 갈 수 있는 통로를 열어 놓고 이를 prometheus 서버의 설정에 넣어주면 알아서 데이터를 가져 간다. 다양한 클라이언트 라이브러리 들을 통해 데이터를 수집하고 이를 prometheus가 가져갈 수 있도록 포트나 api를 열어 주면 된다. 지표 수집 서버보다는 실제 서비스 서버가 훨씬 대수가 많은 것이 보통이다. Push 방식에서 각 서 비스 서버의 데이터 수집 옵션을 수정하고 배포하는 것보다, 소수의 지표 수집 서버의 설정만 바 꿔주면 되는 pull 방식이 더 효율적이다. 데이터 저장 방식 InfluxDB는 metric value와 이것의 index들이 모두 database로 관리된다. Prometheus는 index에 대해서만 디비로 관리하고 metric value들은 file로 관리 된다. 이 때문에 속도와 디스크 효율 면에서 prometheus가 더 나은 모습을 보인다. 지표 수집은 필요 로 하는 key에 대한 데이터 위치를 찾고 이를 가져가기만 하면 되는데, InfluxDB가 metric value 도 db로 관리하는 것은 오버헤드에 가깝기 때문이다. 대신, InfluxDB의 이런 특징은 지표 모니터 링 보단 이벤트 로깅에서 더 강점을 보인다.
주요 기능
시계열 데이터를 위해 특별이 사용자 정의 고성능 데이터 스토어 TSM엔진
높은 수신속도 및 데이터 압축을 허용
전체적으로 GO로 작성, 외부 종속성없이 단일 바이너리로 컴파일
간단하고 고성능의 HTTP API 작성 및 쿼리
다양한 플러그인 제공
RDBMS와 NOSQL의 차이
RDBMS InfluxDB
Database | Bucket |
Table | Measurement |
Indexed Column | Tag Key |
Unindexd Column | Field Key |
설치방법
도커위에 설치하는 방법은 매우 간단하다.
docker run --name influxdb -p 8086:8086 influxdb:2.7.0
다만 주의점은 influxDB는 버전마다 사용되는 언어가 다르다는 점
서로 호환가능 하다고 하는데 글쓴이의 경우 flux문을 찾아서 적용해보았다.
'DataBase > InfluxDB' 카테고리의 다른 글
influxDB 설정, 쿼리 예제(spring boot) (0) | 2023.07.02 |
---|