-
[공식 문서 정리] InfluxDB 핵심 개념24년 11월 이전/레거시-influxdb 2020. 5. 10. 13:48반응형
InfluxDB 핵심 개념
InfluxDB 공식 문서를 토대로 만든 문서입니다. 아직 설치가 되지 않았다면, 여기를 클릭해서 설치를 먼저 진행해주세요.
Contents
- 개요
- Sample data
- Discussion
- 결론
개요
이번 장에서는 InfluxDB의 핵심 개념에 대해 파악해봅시다.
What?
이번 장은 말 그대로 번역에 가깝습니다. 본문을 확인하시려면 여기를 참고해주세요.
Why?
공식 문서에 따르면 이 장의 소개를 이렇게 하고 있습니다.
InfluxDB를 본격적으로 배우기 전에 이 데이터베이스의 주요 개념 중 일부를 알아보도록 하겠습니다. 이 문서는 InfluxDB의 공통적인 개념과 용어에 대해 부드럽게 소개합니다. 아래에 다룰 모든 용어의 목록을 제공했지만, 우리가 가장 좋아하는 시계열 데이터베이스에 대한 일반적인 이해를 얻기 위해 처음부터 끝까지 이 문서를 읽는 것이 좋습니다.
database field key field set field value measurement point retention policy series tag key tag set tag value timestamp 조금 더 사무적인 느낌을 원한다면 용어집을 확인하세요.
맞습니다. 이번 장을 진행하는 이유는 시계열 데이터베이스의 전반적인 이해를 얻기 위함입니다.
How?
번역과 함께 저의 일반적인 생각을 곁들여서 문서를 작성할 예정입니다. 자, 바로 시작하죠!
Sample data
이번 절은 이번 장에서 쓰일 샘플 데이터에 대해서 설명합니다. 다음 절 "Discussion"에서 아래 출력된 데이터를 참조합니다. 이 데이터는 물론 허구이지만, 이 문서에서는 InfluxDB 안에 저장된 데이터라고 가정합니다. 아래 데이터는 2015년 8월 18일 자정부터 2015년 8월 18일 오전 6시 12분까지 2곳(위치 1과 위치 2)에서 과학자 2명(langstroth, perpetua)가 세어 놓은 나비와 꿀벌의 수를 보여줍니다.
데이터는 my_databas라는 데이터베이스에 저장되어 있고, "autogen retention policy"가 적용되었다고 가정합니다.
measurement name: census
time butterflies honeybees location scientist 2015-08-18T00:00:00Z 12 23 1 langstroth 2015-08-18T00:00:00Z 1 30 1 perpetua 2015-08-18T00:06:00Z 11 28 1 langstroth 2015-08-18T00:06:00Z 3 28 1 perpetua 2015-08-18T05:54:00Z 2 11 2 langstroth 2015-08-18T06:00:00Z 1 10 2 langstroth 2015-08-18T06:06:00Z 8 23 2 perpetua 2015-08-18T06:12:00Z 7 22 2 perpetua Discussion
이전 절 "Sample data"에서 샘플 데이터의 구조를 확인했습니다. 이번 절에서는 샘플 데이터를 토대로 확인할 수 있는 모든 용어와 개념을 다룹니다.
InfluxDB는 Time Series Database입니다. 따라서, InfluxDB의 근간인 "시간"에서부터 시작합니다. 위의 테이블에서 "time"이라는 열을 확인할 수 있습니다. InfluxDB에 저장되는 모든 데이터는 이 Column을 가지고 있습니다. "time"이 저장하는 "timestamp"는 RFC3339 UTC와 관련된 특정 데이터와 함께 시간과 데이터를 보여줍니다.
다음 두개의 열인 "butterflies"와 "honeybees"는 "fields(이하 필드)"입니다. 필드는 키와 값으로 이루어져 있습니다. 필드 키는 문자열로 이루어져 있으며, "butterflies" 밑에 12-7, "honeybees" 밑에 23-22는 해당 필드의 값들을 의미합니다. (테이블 위에서 아래로 읽으라는 뜻인 것 같습니다.)
필드 값은 데이터로써 문자열, 실수, 정수, 불린 값 등이 될 수 있습니다. InfluxDB는 time series database이기 때문에 필드 값은 항상 timestamp와 연관되어 있습니다. 필드 값의 샘플 데이터는 다음과 같습니다.
12 23 1 30 11 28 3 28 2 11 1 10 8 23 7 22
위의 데이터에서 필드 키와 필드 값 쌍의 집합은 "Field Set"을 구성합니다. 샘플 데이터 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에 저장될 수 없습니다. 다만, 필드가 색인되지 않는다는 것을 명심해야 합니다. 필드 값을 필터로 사용하는 쿼리는 쿼리의 조건과 일치하는 값을 찾기 위해서 모든 값을 검색해야만 합니다. 일반적으로 필드는 commonly-queried matadata(공통적으로 쓰이는 메타데이터)를 포함하면 안됩니다.
샘플 데이터에서 마지막 두개의 열, "location", "scientist"는 "tags(이하 태그)"입니다. 태그는 역시 키와 값 쌍으로 이루어져 있습니다. 키와 값은 문자열로 저장되며 메타데이터를 기록합니다. 앞서 언급했듯이 샘플 데이터에서 태그 키는 location, scientist입니다. 태그 값은 location은 1, 2 scientist는 "langstroth", "perpetua"를 각각 가지고 있습니다.
위의 데이터에서 태그 셋은 모든 태그 키-값 쌍에 대해서 조합에 따라 서로 다르다고 할 수 있습니다. 샘플 데이터에서는 4개의 태그 셋이 존재합니다.
- location = 1, scientist = langstroth
- location = 2, scientist = langstroth
- location = 1, scientist = perpetua
- location = 2, scientist = perpetua
태그는 선택적으로 사용할 수 있습니다. 데이터구조에서 반드시 사용할 필요는 없지만, 태그는 일반적으로 사용하는 것이 좋습니다. 왜냐하면 필드와 달리 인덱싱이 되기 때문입니다. 이 말은 태그로 검색하는 것이 훨씬 빠르다는 얘기입니다. 또한, commonly-queried metadata를 저장하는데 좋습니다.
"measurement(이하 메저먼트)"는 태그, 필드, 타임을 저장하는 컨테이너입니다. 또한 메저먼트의 이름은 연관된 필드를 저장하는 데이터의 설명과도 같습니다. 그 이름은 문자열이며, SQL에 친숙하신 분이라면, 개념적으로 "테이블"과 같다고 생각하면 됩니다. 샘플 데이터에서 메저먼트는 "census"하나입니다. census(번역하면 인구 조사)라는 이름은 나비와 벌 크기, 방향 또는 일종의 행복 지수가 아닌 숫자를 기록한다고 말해줍니다.
하나의 메저먼트는 다른 "retention policy"를 가질 수 있습니다. "retention policy"는 InfluxDB에서 데이터를 얼마나 보존하는지, 클러스터에서 얼마나 많은 데이터를 복사하는지를 결정합니다. "retention policy"에 더 공부하고 싶다면 Database Management를 참고하세요.
Replication 요소는 싱글 노드 인스턴스를 운영하는데 그 목적이 있지는 않습니다.
샘플 데이터에서 census 메저먼트에 속한 모든 데이터는 "autogen"이라는 "retention policy"에 속합니다. InfluxDB는 아무 설정이 없다면 "autogen"을 디폴트로 설정하며 이는 지속 시간이 무한하고 복제 팩터가 1을 의미합니다.
메저먼트, 태그 셋, 리텐션 폴리시 등에 익숙해졌다면 "series"에 논의해봅시다. InfluxDB에서는 메저먼트, 태그 셋 및 필드 키를 공유
하는 "point"들의 컬렉션입니다., 위의 데이터는 8개의 시리즈로 구성됩니다.
series number measurement tag set field key series 1 census location = 1,scientist = langstroth butterflies series 2 census location = 2,scientist = langstroth butterflies series 3 census location = 1,scientist = perpetua butterflies series 4 census location = 2,scientist = perpetua butterflies series 5 census location = 1,scientist = langstroth honeybees series 6 census location = 2,scientist = langstroth honeybees series 7 census location = 1,scientist = perpetua honeybees series 8 census location = 2,scientist = perpetua honeybees InfluxDB에서 데이터를 사용할 때, Schema를 설계할 때 시리즈의 개념을 이해하는 것은 필수적입니다. Point는 메저먼트, 태그 셋, 필드 셋, 타임스탬프의 네가지 구성 요소를 가지고 있는 단일 레코드를 나타냅니다. 포인트는 그 시리즈와 타임스탬프에 의해서 고유하게 식별됩니다. 예를 들어봅시다. 다음은 샘플 데이터의 한 포인트입니다.
name: census ----------------- time butterflies honeybees location scientist 2015-08-18T00:00:00Z 1 30 1 perpetua
위에 예에서 포인트는 시리즈3의 일부로, 메저먼트(census), 태그 셋(location=1, scientist=perpetua), 필드 셋(butterflies=1, honeybees=30), 타입스탬프(2015-08-18T00:00:00Z)로 구성되어 있음을 확인할 수 있습니다. 우리가 방금 다룬 모든 것들은 "database(이하 데이터베이스)"에 저장됩니다. 샘플 데이터의 데이터베이스는 "my_database"입니다. InfluxDB 데이터베이는 기존 관계형 데이터베이스와 유사하며, 사용자 관리, 리텐션 폴리시, Continous Query 및 시계열 데이터를 위한 논리적인 컨테이너 역할을 수행합니다. 해당 항복에 대한 자세한 내용은 Authentication and Authorization 와 Continuous Queries를 참고하세요.
데이터베이스는 여러 사용자, 연속 쿼리, 리텐션 폴리시 및 메저먼트들을 가질 수 있습니다. InfluxDB는 "schemaless database"이며 이 말은 쉽게 새로운 메저먼트와 태그, 필드를 추가할 수 있다는 뜻입니다. 이러한 이유로 InfluxDB는 시계열 데이터를 다루는데 있어 훌륭하게 설계되어 있다고 말할 수 있습니다.
결론
끝났습니다! 이번 장에서는 InfluxDB의 기본 개념과 용어들을 정리하였습니다. 이제 막 시작하는 경우 다음을 살펴보는 것이 좋습니다.
결론적으로 우리는 다음 개념들을 간단하게 살펴보았습니다.
- 인플럭스 DB 데이터 구조
- 메저먼트
- 필드 셋
- 태그 셋
- 타임 스탬프
- 데이터 베이스는 다음과 같은 작업을 수행합니다.
- 유저 관리
- 리텐션 폴리시
- 컨티뉴어스 쿼리
- 메저먼트 관리
InfluxDB에 대한 공부를 더 더 열심히 해보도록 합시다. 감사합니다.
728x90'레거시 > 레거시-influxdb' 카테고리의 다른 글
[공식 문서 정리] InfluxDB 디자인 철학과 트레이드 오프 (0) 2020.06.14 [공식 문서 정리] InfluxDB와 SQL 데이터베이스의 비교 (0) 2020.05.30 [공식 문서 정리] InfluxDB 용어집 (0) 2020.05.16 [공식 문서 정리] InfluxDB 시작하기 (0) 2020.05.02 Holt-Winters Method를 이용하여 값 예측하기(Feat. Grafana) (0) 2020.04.19