
💡 DB의 종류
1.관계형 데이터베이스(Related Database)
-> SQLite, MySQL 등
2.비관계형 데이터베이스(NoSQL)
-> Firebase 등
3.시계열 데이터베이스(TSDB, Time Series Database)
-> Influx DB 등
시계열 데이터베이스(TSDB, Time Series Database)Docker를 이용한 Influx DB 설치

실행
$ docker run \
-p 8086:8086 \
-v myInfluxVolume:/var/lib/influxdb2 \
influxdb:latest

❗ 완료되면 새로 토큰을 발급해줄텐데 그것을 꼭 저장해두어야한다.

사용
import "influxdata/influxdb/sample"
option task = {
name: "Collect NOAA NDBC sample data",
every: 15m,
}
sample.data(set: "noaa")
|> to(bucket: "example-bucket")

RUN을 누르면 저장된 데이터를 모두 불러온다.🔷 그렇다면 그래프는?
Flux라는 언어를 사용한 쿼리문을 사용하면 그래프를 그릴 수 있다.import "experimental/aggregate"
import "influxdata/influxdb/sample"
option task = {
name: "Collect USGS sample data",
every: 15m,
}
sample.data(set: "usgs")
|> to(bucket: "test")
|> range(start: 2023-04-20T00:00:00.000Z, stop: now())
|> filter(fn: (r) => r._measurement == "earthquake")
|> filter(fn: (r) => r._field == "depth")
|> group(columns: ["depth"], mode: "by")
|> aggregateWindow(every: 1h, fn: max)
|> map(fn: (r) => ({_value: r._value, _time: r._time, _field: "발생 깊이"}))
range: 데이터를 확인할 시간 범위를 지정한다.filter: 'earthquake' measurement와 'depth' field를 지정하여 지진이 일어났을 때의 그 depth를 확인한다.group: "depth" 열에 해당하는 정보만 그룹화하여 볼 수 있다.aggregateWindow: 시간 간격과 함수를 지정하여 그래프로 보여주는데 여기서 함수를 max로 사용하면 그 시간 내의 최댓값을 표시하고 sum을 사용하면 그 시간 동안 관측된 값의 합계를 표시한다.map: 그래프에 표시할 것들 중 필드의 이름을 "depth"에서 "발생 깊이"로 바꾼다.
그래프 형식을 정하고 RUN을 누르면 추출한 데이터가 그래프로 시각화된다.
💡
메트릭(metric)
타임스탬프와 보통 한두 가지 숫자 값을 포함하는 이벤트
Docker를 이용한 grafana 설치docker run -d -p 3000:3000 grafana/grafana
실행
admin이다.


http://host.docker.internal:8086을 입력한다.❗ 아래 URL은 Influx DB를 열었던 포트번호가 들어간 URL을 입력할 수도 있다. (localhost:8086)
하지만 만약 위처럼 docker를 이용해 Influx DB를 빌드한 경우에는 localhost를 이용한 URL을 넣을 경우 다른 OS와의 호환이 되지 않기 때문에 읽어들이지 못한다. 비슷한 오류가 발생한 사람들은 참고하길 바란다.


import를 통해 이미 제작된 탬플릿을 가져올 수도 있다.

import -> 다운 받은 JSON파일을 넣거나 복사한 ID를 입력한다.


