InfluxDB 소개
4차 산업혁명 및 IoT의 시대
시계열 데이터의 증가
- 스마트시티, 자동차 자율주행, 다양한 센서 등 모든 곳에서 데이터 발생
- 특히 시간 흐름에 따른 데이터 폭발적 증가
시계열 데이터의 정의 및 특징
시계열 데이터란?
- 시간별로 구성된 값들의 집합 (연도별, 분기별, 월별, 일별, 시간별 등)
- 하나의 특정시간 단위에 대해 각 데이터 포인트에 대해 하나의 값만 측정
- 시간과 하나 이상의 속성으로 구성
- 기록 추세, 실시간 알림 또는 예측 모델링을 위해 분석
- Line diagram
- ex) 심박수 데이터(시계열 데이터) 시각화
시계열 데이터 분석 사례
시계열 데이터를 분석하기 위한 기업들의 노력
- 과거 사건 이해, 미래 예측
- ex) 시계열 데이터와 활용 사례 (거래 데이터)
- 경향, 주기 등의 특성 파악
- 지난 며칠 동안 제품이 판매 된 금액
- 2023년 2월 17일 오후 1시에 판매 된 상품
- 매주 일요일마다 가장 많이 판매 된 상품
- => 과거의 사건을 이해, 미래 값을 예측
- 경향, 주기 등의 특성 파악
시계열 데이터베이스 정의 및 특징
시계열 데이터베이스란?
- 시간 처리에 최적화 된 데이터베이스
- SQL 기반 시계열 질의 지원
- 빠른 데이터 입력
- 트랜잭션 지원 및 데이터 변경 불가
- 롤업(Roll-up) 기능 지원
InfluxDB 정의 및 특징
InfluxDB란?
- 2013년 Influxdata에서 개발
- 빠른 쓰기 및 읽기가 가능한 오픈소스
- 시간 경과에 따른 일련의 시계열 데이터를 저장하는 NoSQL 형태의 데이터베이스
- 사용자를 위한 자세한 문서 제공
- 간편하고 쉬운 설치
- Go, Java, Python, Node.js 등과 같은 클라이언트 지원
- 시간데이터에 대한 정밀도 지정 (ex. 초 단위, 나노 초 단위)
- SQL 같은 질의어를 제공
- Schemaless Design
- 데이터 보관 주기 설정 가능
- 플러그인 아키텍처 설계로 타사 제품과 통합하는데 용이
InfluxDB 특징
RDBMS vs InfluxDB (SQL문 비교)
- RDBMS(postgresql)
- select * from tickers limit 10;
- InfluxDB
- select * from tickers limit 10
Unix time
- 1970년 1월 1일 00:00:00 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것
- Ex. 1561681930 (2019-06-28T00:32:10Z)
- 1ms = 1/1000(초), 1ns = 1/1000000000(초)
InfluxDB의 timestamp
- InfluxDB는 기본으로 nanosecond 단위의 unix time , 옵션으로 단위를 바꿀 수 있다.
- Ex. 1562182000000000000 ns = 1562182000 s = 2019-07-04T04:26:40Z
InfluxDB는 시계열 데이터를 저장하기 위한 오픈 소스 데이터베이스이다.
시계열 데이터는 시간에 따라 변하는 데이터로, 주식 가격, 센서 데이터, 서버 메트릭 등을 예로 들 수 있다.
InfluxDB의 주요 특징은 다음과 같다.
1. 시계열 데이터에 최적화: InfluxDB는 시계열 데이터를 저장하고 조회하는 데 최적화되어 있다.
데이터는 시간 순서대로 저장되며, 시간 범위를 기준으로 데이터를 조회하는 등의 작업이 매우 빠르고 효율적이다.
2. 높은 쓰기 및 쿼리 성능: InfluxDB는 초당 수십만 개의 데이터 포인트를 쓸 수 있으며, 대량의 데이터에 대한 쿼리도 빠르게 처리할 수 있다. 이는 서버 모니터링, IoT, 실시간 분석 등의 분야에서 꼭 필요한 특징이다.
3. 데이터 다운샘플링 및 보존 정책: InfluxDB는 자동으로 오래된 데이터를 다운샘플링하거나 삭제하는 기능을 제공한다.
이를 통해 저장 공간을 효율적으로 관리할 수 있다.
4. SQL-Like 쿼리 언어: InfluxDB는 InfluxQL이라는 SQL과 유사한 쿼리 언어를 제공한다.
이를 통해 사용자는 익숙한 SQL 스타일의 문법으로 쿼리를 작성할 수 있다.
5. 확장성: InfluxDB는 클러스터링을 통해 데이터를 여러 노드에 분산시킬 수 있다.
이를 통해 데이터의 양이 늘어나도 성능을 유지하거나 향상시킬 수 있다.
6. 플러그인 시스템: InfluxDB는 Telegraf라는 플러그인 시스템을 제공한다. 이를 통해 다양한 소스에서 데이터를 수집하고, 다양한 출력 소스로 데이터를 전송할 수 있다.
이런 특징들 덕분에 InfluxDB는 서버 모니터링, IoT, 실시간 분석 등 다양한 분야에서 시계열 데이터를 저장하고 처리하는 데 널리 사용되고 있습니다.
InfluxDB 용어 정리
용어
- Measurement: 일반 데이터베이스의 테이블에 해당
- Tag: SQL 데이터베이스의 인덱싱 된 열과 유사
- Field: SQL 데이터베이스의 인덱싱 되지 않은 열과 유사
- Line protocol: InfluxDB에 point를 쓰기 위한 텍스트 기반 형식
- Point: 단일 행의 레코드를 가진 SQL 데이터베이스와 유사, 단일 필드 모음으로 구성되고 각 point는 그 자체로 고유하게 식별
- Timestamp: point에 관련된 날짜와 시간, InfluxDB의 timestamp는 항상 나노세컨드 다뉘의 unix time 값으로 저장
- Retention Policy: 데이터를 사용할 수 있는 기간 혹은 시간 지정
'기타' 카테고리의 다른 글
MSA 멀티 모듈 설정 (0) | 2024.04.24 |
---|---|
성능 테스트 관련 개념 정리(작성 중) (1) | 2024.03.22 |
Nginx란? (1) | 2024.01.23 |
Grafana (0) | 2023.12.17 |
[우아한테크코스 웹 백엔드 6기] 미션 - 숫자 야구 회고 (2) | 2023.10.23 |