이번 포스팅은 요즘 핫한 InfluxDB에 대하여 작성하도록 하겠습니다.
InfluxDB 역시 작년 기상청 프로젝트에서 전국에서 관측되는 데이터를 효과적으로 처리하기 위하여 검토되었고 그때 자료조사를 한 내용입니다.
순서는
2020/06/11 - [개발관련 자료] - InfluxDB #1 - 개요 및 특징
2020/06/11 - [개발관련 자료] - InfluxDB #2 - 주요 개념
2020/06/11 - [개발관련 자료] - InfluxDB #3 - 용어 정리
2020/06/11 - [개발관련 자료] - InfluxDB #4 - SQL DB와 비교
2020/06/11 - [개발관련 자료] - InfluxDB #5 - Schema설계 및 데이터Layout
2020/06/11 - [분류 전체보기] - InfluxDB #6 - In-Memory Indexing과 TSM(Time-Structured Merge Tree)
2020/06/11 - [개발관련 자료] - InfluxDB #7 - TSI(Time Series Index) 개요
2020/06/11 - [개발관련 자료] - InfluxDB #8 - TSI(Time Series Index) 세부 정보
2020/06/11 - [개발관련 자료] - InfluxDB #9 - Linux CentOS 설치
2020/06/12 - [개발관련 자료] - InfluxDB #10 - 사용법
으로 진행되며 도입 검토 차원에서 이루어진 조사라서 실무적용 보다는 InfluxDB란 어떤 것인지 파악하는 정도로만 생각하시면 될듯합니다.
1. Smaple Data
- 아래는 가상의 데이터로 InfluxDB에서 사용 할 수 있는 설정을 나타냅니다. 2015년 8월 18일 자정부터 2015년 8월 18일 6:12AM까지의 기간 동안 두명의 과학자가 두 위치에서 계산한 나비 및 꿀벌의 수를 보여 줍니다.
- 데이터가 호출된 데이터베이스에 있고 유지 정책의 적용을 받는다고 가정합니다.
2. 토론
- InfluxDB는 시계열 데이터베이스이므로 우리가 하는 모든 일의 근원인 시간부터 시작하는 것이 합리적입니다.
- 위의 데이터에는 InfluxDB의 모든 데이터에 해당 열이 있는 열이 있습니다.
- 타임스탬프를 저장하고, 타임스탬프는 특정 데이터와 관련된 RFC3339 UTC의 날짜와 시간을 표시합니다.
- butterfliesand와 honeybees라는 두 개의 다음 열은 필드입니다.
- 필드는 필드 키와 필드 값으로 구성됩니다.
- 필드 키(butterflies 및 honeybees)는 문자열입니다.
- 필드 키 butterflies는 필드 값 12-7이 나비를 나타내고, honeybees는 필드 값 23-22가 꿀벌임을 나타냅니다.
- 필드 값은 데이터입니다.
- influxDB는 시계열 데이터베이스이므로 필드 값은 항상 타임스탬프와 연결됩니다.
- 샘플 데이터의 필드 값은 다음과 같습니다.
12 23
1 30
11 28
3 28
2 11
1 10
8 23
7 22
- 위의 데이터에서 필드 키와 필드 값 쌍의 컬렉션은 필드 집합입니다.
- 다음은 샘플 데이터의 8개 필드 세트입니다.
- butterflies = 12 honeybees = 23
- butterflies = 1 honeybees = 30
- butterflies = 11 honeybees = 28
- butterflies = 3 honeybees = 28
- butterflies = 2 honeybees = 11
- butterflies = 1 honeybees = 10
- butterflies = 8 honeybees = 23
- butterflies = 7 honeybees = 22
- 필드는 InfluxDB 데이터 구조에 필수 요소입니다.
- 필드가 없는 InfluxDB에서는 데이터를 가질 수 없습니다.
- 또한, 필드가 색인 되지 않는다는 점에 유의해야 합니다.
- 필드 값을 필터로 사용하는 쿼리는 쿼리의 다른 조건과 일치하는 모든 값을 검색해야 합니다.
- 따라서 이러한 쿼리는 태그 쿼리보다 성능이 좋지 않습니다.
- 일반적으로 필드에는 공통으로 쿼리되는 메타 데이터를 포함하면 안 됩니다.
- locationand 및 scientist라고 하는 샘플 데이터의 마지막 두 열은 태그입니다.
- 태그는 태그 키와 태그 값으로 구성됩니다.
- 태그 키 및 태그 값은 모두 문자열로 저장되고 메타 데이터를 기록합니다.
- 샘플 데이터의 태그 키는 location 및 scientist입니다.
- 태그 키 location에는 1과 2의 두 가지 태그 값이 있습니다.
- 태그 키 scientist에도 langstroth와 perpetua라는 두 개의 태그 값이 있습니다.
- 위 데이터에서 태그 세트는 모든 태그 키-값 쌍의 서로 다른 조합입니다.
- 샘플 데이터에 있는 네개의 태그 세트는 다음과 같습니다.
- location = 1, scientist = langstroth
- location = 2, scientist = langstroth
- location = 1, scientist = perpetua
- location = 2, scientist = perpetua
- 태그는 선택 사항입니다.
- 데이터 구조에는 태그가 있을 필요 없지만, 필드와 달리 태그는 인덱싱되므로 일반적으로 태그를 사용하는 것이 좋습니다.
- 즉, 태그에 대한 쿼리가 빠르며 태그는 일반적으로 쿼리되는 메타 데이터를 저장하는데 이상적입니다.
- Measurement은 태그, 필드 및 시간 열의 컨테이너 역할을 하며 측정 이름은 연결된 필드에 저장된 데이터의 설명입니다.
- Measurement 이름은 문자열이며 그 밖의 SQL 사용자의 경우 측정은 개념적으로 테이블과 유사합니다.
- 샘플 데이터의 유일한 측정은 census입니다.
- census는 필드 값에게 크기, 방향 또는 일종의 행복 지수가 아니라 butterflies와 honeybees의 수를 기록하라고 합니다.
- 단일 Measurement 값은 다른 보존 정책에 속할 수 있습니다.
- 보존 정책은 InfluxDB가 데이터를 보관하는 기간(DURATION)과 이 데이터의 사본이 클러스터(REPLICATION)에 얼마나 많이 저장되는지를 설명합니다.
- Replication factors는 단일 노드 인스턴스의 용도로 사용되지 않습니다.
- 샘플 데이터에서 census측정의 모든 항목은 autogen보존 정책에 속합니다.
- InfluxDB는 자동으로 해당 보존 정책을 만듭니다.
- 무한한 지속 시간과 복제 계수가 1로 설정됩니다.
- InfluxDB에서 시리즈는 보존 정책, Measurement 및 태그 세트를 공유하는 데이터 모음입니다.
- 위의 데이터는 4개의 시리즈로 구성됩니다.
Arbitrary series number |
Retention policy |
Measurement |
Tag set |
series 1 |
autogen |
census |
location = 1,scientist = langstroth |
series 2 |
autogen |
census |
location = 2,scientist = langstroth |
series 3 |
autogen |
census |
location = 1,scientist = perpetua |
series 4 |
autogen |
census |
location = 2,scientist = perpetua |
- point는 Measurement, 태그 세트, 필드 세트 및 타임스탬프의 네 가지 구성 요소가 있는 단일 데이터 레코드를 나타냅니다.
- 포인트는 시리즈와 타임스탬프에 의해 고유하게 식별됩니다.
- 예를 들어 다음과 같은 단일 지점이 있습니다.
name: census ----------------- time butterflies honeybees location scientist 2015-08-18T00:00:00Z 1 30 1 perpetua |
- 이 예제의 요점은 시리즈3의 일부이며 Measurement(census), 태그 세트 (location = 1, scientist = perpetua), 필드 세트 (butterflies = 1, honeybees = 30) 및 타임스탬프(2015-08-18T00:00:00Z)로 정의됩니다.
- 데이터베이스에는 여러 사용자, 지속적인 쿼리, 보존 정책 및 측정이 포함될 수 있습니다.
- InfluxDB는 스키마가 없는 데이터베이스이므로 언제든지 새 Measurement 값, 태그 및 필드를 쉽게 추가 할 수 있습니다.
- 시계열 데이터로 작업하도록 설계되었습니다.
3. 색인을 생성해야 하는 이유: 스키마 사례 연구
- 대부분의 쿼리는 필드키 honeybees와 butterflies에 초점을 맞추고 있다.
SELECT * FROM "census" WHERE "butterflies" = 1 > SELECT * FROM "census" WHERE "honeybees" = 23 > |
- 필드가 인덱싱되지 않으므로 InfluxDB는 첫 번째 쿼리의 모든 butterflies값과 두 번째 쿼리의 모든 honeybees값을 검색한 후 응답을 제공합니다.
- 이러한 동작은 쿼리 응답 시간을 해칠 수 있습니다. 특히 훨씬 더 큰 규모의 쿼리 응답 시간은 위험합니다.
- 쿼리를 최적화하려면 필드(butterflies 및 honeybees)가 태그되고 태그 (locationand 및 scientist)가 필드 되도록 스키마를 다시 정렬하는 것이 좋습니다.
⦁butterflies, honeybees, location, scientist
- 이제는 butterflies와 honeybees가 태그이므로, InfluxDB는 위 쿼리를 수행할 때 각 값을 스캔할 필요가 없습니다.
- 즉, 쿼리가 훨씬 빨라졌습니다.
'개발관련 자료' 카테고리의 다른 글
인플럭스DB(InfluxDB) #4 - SQL DB와 비교 (0) | 2020.06.11 |
---|---|
인플럭스DB(InfluxDB) #3 - 용어 정리 (0) | 2020.06.11 |
인플럭스DB(InfluxDB) #1 - 개요 및 특징 (0) | 2020.06.11 |
쥬피커(Zookeeper) #3 - 사용 (2) | 2020.06.11 |
쥬키퍼(ZooKeeper) #2 - 데이터모델 (0) | 2020.06.11 |
댓글