본문 바로가기
개발관련 자료

인플럭스DB(InfluxDB) #2 - 주요 개념

by jinu957 2020. 6. 11.
728x90

이번 포스팅은 요즘 핫한 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  쿼리를 수행할   값을 스캔할 필요가 없습니다.
  • , 쿼리가 훨씬 빨라졌습니다.
728x90

댓글