InfluxDB

인플럭스 DB data elements

growdeveloper 2023. 6. 13. 17:44

인플럭스 DB data elements

 

_time

influxDB에 저장된 모든 데이터는 다음과 같습니다. _time 스탬프를 저장하는 열 입니다. 디스크에서 타임스템프는 에포크 나노초 형식으로 저장 됩니다. 유입 DB 형식 타임 스탬프는 데이터와 관련된 날짜와 시간을 RFC3339 UTC로 표시합니다.

 

=> RDC 3339 

YYYY-MM-DDTHH:mm:ss.sssZ

여기서 각 구성 요소의 의미는 다음과 같습니다:

  • YYYY: 연도(4자리)
  • MM: 월(2자리)
  • DD: 일(2자리)
  • T: 날짜와 시간 구분을 위한 구분 기호('T'는 시간 이후에 오는 것을 나타냄)
  • HH: 시(24시간 형식, 2자리)
  • mm: 분(2자리)
  • ss: 초(2자리)
  • sss: 밀리초(3자리)
  • Z: 시간대 표시(Z는 UTC를 나타냄)

예를 들어, "2023년 6월 13일 오후 3시 30분 15초 500밀리초 UTC"를 RFC3339 형식으로 표시하면 다음과 같습니다:

 

_measurement

_measurement 열은 데이터베이스에서 측정값 또는 데이터 카테고리의 이름을 나타내는 열 입니다. 이 열은 데이터베이스 내에서 데이터를 구성하고 분류하는 데 사용됩니다. 각각의 고유한 측정값 이름은 특정 유형의 데이터를 나타냅니다.

 

예를 들어, 이 경우에는 census 라는 측정값 이름이 있으며, 이는 기록된 데이터가 벌과 개미의 조사를 나타낸다는 것을 의미합니다 .측정값 이름은 해당 데이터를 정확히 설명할 수 있는 이름으로 선택되어야 하며, 이를 통해 데이터베이스를 이해하고 쿼리하는 데 도움이 됩니다.

 

측정값 내부에는 일반적으로 실제 데이터를 저장하는 추가적인 열들이 있습니다. 이 열들을 테그(데이터에 대한 메타데이터 또는 레이블로 사용되는 키-값 쌍), 필드(실제 테이터 값), 타팀스탬프(데이터 기록 시간) 등을 포함할 수 있습니다.

 

요약하면, "_measurement" 열은 데이터베이스 내에서 서로 다른 데이터 유형을 분류하고 식별하는 방법으로 사용되며, 이 특정한 경우에는 벌과 개미의 조사에 대한 측정값을 나타냅니다.

_fileds

필드(Fields)는 "_field" 열에 저장된 필드 키(Field Key)와 "_value" 열에 저장된 필드 값( Filed Value)으로 구성됩니다.

 

필드 키(Field Key)는 데이터베이스 에서 해당 필드를 식별하는 데 사용되는 이름 돈느 레이블 입니다. 각 필드 키는 특정 유형의 데이터를 나타내며, 예를 들어 "벌의 수" 또는 "개미의 수"와 같은 필드 키를 사용할 수 있습니다.

 

필드 값(FIeld value는 실제 데이터 값으로, 해당 필드에 대한 실제 측정 또는 관찰된 값입니다. 필드 값은 숫자, 문자열, 부울 값 등 다양한 유형일 수 있습니다. 예를 들어, "벌의 수" 필드의 밗이 100이라면, 100은 필드 값입니다. 이러한 필드 키와 필드 값은 "_filed" 열과 "_value" 열에 저장되어 데이터베이스에서 해당 필드의 이름과 값을 나타냅니다. 이를 통해 데이터베이스 에서 필드별로 데이터를 저장하고 조회할 수 있습니다. 따라서 필드는 데이터베이스 에서 특정 데이터의 특성이나 속성을 나타내는데 사용되며, 필드 키와 필드 값의 조합으로 구성됩니다.

 

field key

필드 키(Field Key)는 필드의 이름을 나타내는 문자열입니다 .위의 샘플 데이터에서 벌(base)과 개미(ants)는 필드 키 입니다.

필드 키는 해당 필드의 실벽자 역할을 합니다. 데이터베이스 에서 필드 키는 각각의 필드에 대한 고유한 이름이며, 해당 필드의 데이터를 구분하고 식별하는데 사용됩니다.

 

위의 예시에서는 "벌의 수"를 나타내는 필드 키로 "bees"를 사용하고 , "개미의 수"를 나타내는 필드 키로 "ants"를 사욯했습니다. 이러한 필드 키는 데이터베이스에서 해당 필드의 값을 저장하고 조회할 때 사용됩니ㅏㄷ.

 

필드 키는 일반적으로 데이터베이스 스키마 또는 데이터 모델링 과정에서 결정되며, 해당 데이터의 특성이나 속성을 가장 잘 나타낼 수 있는 이름으로 선태굅니다. 필드 키는 데이터를 이해하고 쿼리하는 데 도움이 되며, 필드 값과 함께 필드의 데이터를 식별하는 중요한 역할을 합니다.

 

Field Value

필드 값(Field Value)은 연관된 필드의 값을 나타냅니다. 필드 값은 문자열, 부동소수점수(float), 정수(int), 부울(boolean) 등의 다양한 데이터 유형일 수 있습니다. 샘플 데이터에서는 특정 시간에 기록된 벌의 수와 개미의 수를 나타내는 필드 값이 있습니다. 벌의 수에는 23과 28이 있고, 개미의 수에는 30과 32가 있습니다.

필드 값은 해당 필드에서 실제로 관찰된 값이나 측정된 값입니다. 필드 값은 해당 필드의 데이터를 특정 시간 또는 사건에 대한 실제 수치로 나타냅니다.

샘플 데이터에서 벌의 수에 대한 필드 값은 23과 28입니다. 이 값들은 특정 시간에 기록된 벌의 수를 나타내며, 정수로 표현됩니다. 비슷하게, 개미의 수에 대한 필드 값은 30과 32이며, 정수로 표현됩니다.

필드 값은 필드 키와 함께 필드의 데이터를 완전히 정의합니다. 필드 값은 데이터베이스에서 필드의 실제 값을 저장하고 조회할 때 사용됩니다. 데이터 유형에 따라 필드 값은 적절한 형식으로 해석되고 처리됩니다.

 

Field set

필드 세트(Field Set)는 특정 타임스탬프와 관련된 필드 키-값 쌍의 모음을 의미합니다. 즉, 특정 시간에 대한 필드와 해당 값을 모아놓은 집합을 나타냅니다.

제공해주신 샘플 데이터를 기준으로 필드 세트는 다음과 같이 구성될 것입니다:

필드 세트 1:

타임스탬프: [지정된 시간 1]
필드:
필드 키: "벌(bees)"
필드 값: 23
필드 키: "개미(ants)"
필드 값: 30


필드 세트 2:
타임스탬프: [지정된 시간 2]
필드:
필드 키: "벌(bees)"
필드 값: 28
필드 키: "개미(ants)"
필드 값: 32
각 필드 세트는 데이터가 기록된 타임스탬프를 나타내고, 해당 타임스탬프에서의 특정 필드 키-값 쌍을 포함합니다. 이 경우, 필드 세트는 서로 다른 지정된 시간에 대한 벌과 개미의 수를 나타냅니다.

 


필드 세트는 데이터베이스나 데이터 저장 시스템에서 특정 타임스탬프 또는 이벤트와 관련된 데이터를 구성하고 표현하는 데 자주 사용됩니다. 다양한 시간에 대한 측정값이나 속성을 구조화된 방식으로 저장하고 검색하는 데 도움을 줍니다.

 

InfluxDB에서는 필드(Fields)는 인덱싱되지 않으며, 쿼리 및 필터링 작업에 최적화되어 있지 않습니다. 필드는 InfluxDB 데이터에서 필수적이며, 기본적으로 인덱싱되지 않습니다. 필드 값을 기반으로 필터링하는 쿼리를 실행할 때 InfluxDB는 쿼리 조건과 일치하는 모든 필드 값을 스캔해야 합니다. 이로 인해 쿼리 성능이 저하될 수 있습니다. 쿼리 성능을 개선하기 위해 InfluxDB에서는 필드 대신 태그(Tags)를 활용하는 것을 권장합니다. 태그는 InfluxDB에서 인덱싱되므로 쿼리와 필터링에 대해 더 효율적입니다. 자주 쿼리되는 메타데이터를 필드 대신 태그로 저장하는 것이 좋습니다. 이렇게 함으로써 태그의 인덱싱 기능을 활용할 수 있으며, 쿼리 성능을 크게 향상시킬 수 있습니다. 요약하면, InfluxDB에서의 필드는 인덱싱되지 않으며, 필드 값을 포함하는 쿼리는 모든 필드 값을 스캔해야 하므로 쿼리 성능이 저하될 수 있습니다. 성능을 향상시키기 위해 자주 쿼리되는 메타데이터는 필드 대신 태그로 저장하는 것이 권장되며, 태그는 인덱싱되어 쿼리 효율성이 더 높아집니다.

 

Tags

태그(Tags)는 샘플 데이터에서 보여지는 열인 "location"과 "scientist"입니다. 태그는 문자열과 메타데이터로 저장되는 태그 키(Tag Key)와 태그 값(Tag Value)으로 구성됩니다.

태그 키(Tag Key)는 데이터베이스에서 해당 태그를 식별하는 데 사용되는 이름 또는 레이블입니다. 각 태그 키는 특정한 유형의 데이터를 나타내며, 데이터를 분류하고 검색하는 데 도움이 됩니다. 예를 들어, "location" 태그 키는 데이터를 특정 위치 또는 장소와 연결시키는 데 사용될 수 있습니다.

태그 값(Tag Value)은 해당 태그의 실제 값입니다. 태그 값은 해당 태그 키와 연결된 실제 데이터를 나타내며, 일반적으로 문자열 형태로 저장됩니다. 태그 값은 데이터의 특징이나 속성을 표현하며, 필터링과 검색 작업에 활용됩니다. 예를 들어, "location" 태그의 값으로 "New York"를 사용하면, 해당 데이터는 "New York" 위치와 관련된 것임을 나타냅니다.

태그는 데이터베이스에서 메타데이터를 나타내는 데 사용되며, 필드(Field)와는 달리 인덱싱이 되어 빠른 검색과 필터링이 가능합니다. 태그는 주로 데이터의 추가 정보를 나타내고, 데이터를 그룹화하거나 필터링하는 데 사용됩니다. 태그는 데이터베이스의 쿼리 성능을 향상시키는 데 도움을 주는 중요한 요소입니다.

 

Tag key

샘플 데이터에서의 태그 키(Tag Key)는 "location"과 "scientist"입니다. 태그 키는 Line Protocol - Tag Set 문서에서 태그 키 요구사항에 대한 정보를 참조할 수 있습니다.

태그 키는 InfluxDB 데이터베이스에서 데이터를 식별하는 데 사용되는 이름 또는 레이블입니다. 각 태그 키는 해당하는 데이터의 특정 속성을 나타내며, 데이터를 구분하고 필터링하는 데 사용됩니다. 예를 들어, "location" 태그 키는 데이터를 특정 위치 또는 장소와 관련시킵니다. "scientist" 태그 키는 데이터를 특정한 과학자와 연결할 수 있습니다.

태그 키는 데이터베이스에 저장된 데이터의 메타데이터를 나타내는 중요한 역할을 합니다. 쿼리를 실행하거나 데이터를 분석할 때 태그 키는 필터링 조건이나 그룹화, 정렬 등에 사용됩니다. 태그 키는 데이터의 특성이나 속성을 가장 잘 표현하는 이름으로 선택되며, 데이터베이스 스키마 또는 데이터 모델링 과정에서 결정됩니다.

Line Protocol - Tag Set 문서를 참조하면 태그 키에 대한 요구사항과 제약사항에 대한 자세한 내용을 확인할 수 있습니다.

 

Tag value

샘플 데이터에서 "location" 태그 키는 "klamath"와 "portland"라는 두 가지 태그 값(Tag Value)을 가지고 있습니다. 또한, "scientist" 태그 키는 "anderson"와 "mullen"이라는 두 가지 태그 값이 있습니다. 각 태그 값은 해당하는 태그 키와 연결된 실제 데이터를 나타냅니다.

태그 값은 태그 키와 함께 데이터를 식별하고 필터링하는 데 사용됩니다. 태그 값은 일반적으로 문자열 형태로 저장되며, 데이터의 특징이나 속성을 나타냅니다. 쿼리나 데이터 분석 작업에서 태그 값을 사용하여 특정 조건에 맞는 데이터를 필터링하거나 그룹화할 수 있습니다.

Line Protocol - Tag Set 문서를 참조하면 태그 값에 대한 요구사항과 제약사항에 대한 자세한 내용을 확인할 수 있습니다. 태그 값은 특정 데이터베이스의 스키마 또는 데이터 모델링 과정에서 정의되며, 데이터의 특성과 목적에 따라 적절한 값을 선택해야 합니다.

 

Tag set

태그 세트(Tag Set)는 태그 키-값 쌍의 모음으로 구성됩니다. 태그 세트는 데이터베이스에서 특정 데이터를 구분하고 분류하는 데 사용되며, 필터링이나 그룹화 작업에 활용됩니다. 제공된 샘플 데이터에는 다음 네 가지 태그 세트가 포함되어 있습니다:

태그 세트 1:

태그 키: "location"
태그 값: "klamath"
태그 세트 2:

태그 키: "location"
태그 값: "portland"
태그 세트 3:

태그 키: "scientist"
태그 값: "anderson"
태그 세트 4:

태그 키: "scientist"
태그 값: "mullen"
각 태그 세트는 태그 키-값 쌍의 모음으로 구성됩니다. 태그 키는 데이터의 특정 속성이나 속성 유형을 나타내며, 태그 값은 해당 속성에 대한 실제 데이터를 나타냅니다. 태그 세트는 데이터를 세분화하고 구분짓는 데 사용되며, 데이터베이스에서 쿼리 작업이나 데이터 분석 작업에 활용됩니다. 각 태그 세트는 고유한 조합의 태그 키와 태그 값으로 식별됩니다.

태그 세트는 데이터베이스의 쿼리 성능을 향상시키고 데이터를 조직화하는 데 중요한 역할을 합니다. 태그를 효과적으로 활용하면 데이터를 빠르고 정확하게 필터링하거나 그룹화할 수 있으며, 데이터의 특정 속성에 대한 분석이나 추이를 파악할 수 있습니다.

location = klamath, scientist = anderson
location = portland, scientist = anderson
location = klamath, scientist = mullen
location = portland, scientist = mullen

태그가 인덱싱됩니다.태그는 선택 사항입니다.데이터 구조에는 태그가 필요하지 않지만 일반적으로 태그를 포함하는 것이 좋습니다. 태그는 인덱싱되므로 필드의 쿼리보다 태그의 쿼리가 더 빠릅니다.따라서 태그는 일반적으로 쿼리되는 메타데이터를 저장하는 데 이상적입니다.

 

UUID, 해시 및 임의 문자열과 같은 매우 가변적인 정보를 포함하는 태그는 데이터베이스에 높은  카디널리티라고 하는 고유한 열을 많이 생성합니다.높은 시리즈 카디널리티는 많은 데이터베이스 워크로드에서 높은 메모리 사용의 주요 동인입니다.자세한 내용은 영상 시리즈 카디널리티를 참조하십시오.

 

스키마가 중요한 이유

대부분의 쿼리가 필드의 값에 초점을 맞춘 경우(예: 23개의 벌이 카운트 되었을 때 찾는 쿼리);

 

from(bucket: "bucket-name")
    |> range(start: 2019-08-17T00:00:00Z, stop: 2019-08-19T00:00:00Z)
    |> filter(fn: (r) => r._field == "bees" and r._value == 23)

influxDB는 데이터셋의 모든 필드 값을 검색합니다. bees 쿼리가 응답을 반환하기 전에. 만약 우리의 샘플이 cencus 데이터가 수백만 개의 행으로 증가하여 쿼린를 최적화 하기위해 스키마를 재정렬하여 필드를 정렬할 수 있습니다. bees 그리고 ant)이 태그가 되고 태그(location 그리고. scientist) 필드가 됩니다.

이제는 bees 그리고 ants 태그입니다. 유입 DB가 모두 검색할 필요는 없습니다. _field 그리고. _value 열이렇게 하면 쿼리 속도가 빨라집니다.

 

버킷 스키마

influxdb 에서는 다음을 포함하는 버킷입니다. explicit 스키마 유형에는 명시적이 필요합니다. 각 측정에 대한 스키마, 측정에는 태그, 필드 및 타임스탬프가 포함됩니다. 명시적 스키마는 해당 측정값에 쓸 수 있는 데이터의 모양을 제한 합니다.

 

다음 스키마 제약조건 census 데이터 :

 

시리즈

이제 측정, 필드 세트 및 태그 세트에 익숙해 지셧으니 시리즈 키와 시리즈에 대해 살펴보겠습니다. 영상 시리즈 키는 측정, 태그 세트 및 필드 키를 공유하는 점의 모음입니다. 예를 들어, 샘플데이터에는 두 개의 고유한 영상 시리즈 키가 포함되어 있습니다.

 

시리즈에는 주어진 시리즈 키에 대한 타임스템프 및 필드 값이 포함됩니다. 다음은 샘플 데이터에서 영상 시리즈 키와 해당 영상 시리즈 입니다.

# series key
census,location=klamath,scientist=anderson bees

# series
2019-08-18T00:00:00Z 23
2019-08-18T00:06:00Z 28

Schema를 설계하고 InfluxDB에서 데이터를 작업할 때 시리즈의 개념을 이해하는 것이 중요합니다.

 

Point포인트

점에는 영상 시리즈 키, 필드 값 및 타임스탬프가 포함됩니다. 예를 들어, 표본 데이터의 단일 점은 다음 과 같습니다.

2019-08-18T00:00:00Z census ants 30 portland mullen

 

Bucket

모든 유입 DB데이터는 버킷에 저장됩니다. 버킷은 데이터베이스 개념과 보존 기간(각 데이터 지점이 유지되는 기간)을 결합합니다. 버킷은 조직에 속합니다. 버킷에 대한 자세한 내용을 버킷 관리를 참조하십시요,

 

Organization (조직)
InfludeDB 조직은 사용자 그룹의 작업 공간입니다.모든 대시보드, 작업, 버킷 및 사용자는 조직에 속합니다.조직에 대한 자세한 내용은 조직 관리를 참조하십시오.