ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [공식 문서 정리] InfluxDB 용어집
    레거시/레거시-influxdb 2020. 5. 16. 17:26
    반응형

    InfluxDB 공식 문서를 토대로 만든 문서입니다. 아직 설치가 되지 않았다면, 여기를 클릭해서 설치를 먼저 진행해주세요.

    Contents

    1. 개요
    2. 용어 정리
    3. 결론

    개요

    이번 장에서는 InfluxDB에서 자주 쓰이는 용어들을 정리합니다. 자세한 내용은 여기를 참고해주세요.

    공식 문서를 단순 번역하기 때문에, What, Why, How는 없습니다.

    용어 정리

    Aggregation

    InfluxQL(InfluxDB Query Language)의 함수 중 하나로써, 포인트 셋 전체에 걸쳐 집계된 값을 반환합니다. 지금 사용 가능하거나, 개발 계획이 잡혀있는 Aggregation 함수들의 전체 목록은 InfluxQL functions를 참고하세요.

     

    관련 항목: Function, Selector, Transformation

    Batch

    "newline(0x0A)"로 구분된 InfluxDB Line Protocol 형식의, 데이터 포인트들의 집합입니다. 포인트들의 배치는 쓰기 엔드 포인트에 대한 단일 HTTP 요청에 의해서 데이터베이스에 제출됩니다. InfluxDB API를 사용해서 데이터를 저장할 때 HTTP 오버헤드를 대폭 줄이면 성능이 훨씬 향상될 수 있습니다. 배치의 크기가 훨씬 더 작거나 커도 InfluxDB는 잘 동작하겠지만, "InfluxData"는 배치 크기를 5000~10000포인트로 권장하고 있습니다.

     

    관련 항목: InfluxDB Line Protocol, Point

    Bucket

    버킷은 "InfluxDB 2.0"에서 시계열 데이터가 저장되는 위치를 뜻합니다. InfluxDB 1.8 이상 버전부터는 데이터베이스와 리텐션 폴리시의 조합이 버킷을 나타냅니다. InfluxDB 1.8 이상 버전들에 포함된 2.0에 호환되는 엔드 포인트를 사용하여, 버킷과 상호작용하세요.

    Continuous Query (CQ)

    CQ는 데이터베이스 내에서, 자동적이며 주기적으로 실행되는 InfluxQL을 뜻합니다. CQ는 SELECT 절이 필요하며 GROUP BY time() 절을 포함해야만 합니다. 자세한 내용은 Continuous Queries를 살펴보세요.

     

    관련 항목: function

    Database

    유저, 리텐션폴리시, CQ, 그리고 시계열 데이터를 저장하는 논리적인 컨테이너입니다.

     

    관련 항목: Continuous Query, Retention Policy, User

    Duration

    InfluxDB가 데이터를 저장하는 기간을 결정하는 리텐션 폴리시의 속성. 기간 보다 오래된 데이터는 자동적으로 데이터베이스에서 삭제됩니다. Database Management에서 저장 기간을 어떻게 설정하는지 살펴보세요.

     

    관련 항목: Retention Policy

    Field

    메타데이터와, 실제 데이터 값을 기록하는 InfluxDB 데이터 구조의 키-값 쌍을 Field라고 합니다. InfluxDB 데이터 구조에서 필드들은 반드시 요구되지만, 인덱싱 기능을 지원하지는 않습니다.

    필드에 대한 쿼리는 지정된 시간 범위와 일치하는 모든 포인트들을 검색하므로, 태그 처럼 빠르지는 않습니다.

     

    팁: 필드와 태그를 비교해보세요, 태그는 인덱싱을 지원합니다.

     

    관련 항목: Field Key, Field Set, Field Value, Tag

    Field Key

    필들르 구성하는 키-값 쌍의 키를 나타내는 부분입니다. 필드 키들은 문자열이며, 메타데이터를 저장합니다.

     

    관련 항목: Field, Field Set, Field Value, Tag Key

    Field Set

    한 포인트의 필드 키-값 쌍의 집합입니다.

     

    관련 항목: Field, Field Key, Field Value, Point

    Field Value

    필드를 구성하는 키-값 쌍의 값을 나타내는 부분입니다. 필드 값은 실제 데이터로써 문자열, 소수, 정수 또는 불린 값이 될 수 있습니다. 필드 값은 항상 타임스탬프와 관련이 있습니다.

    필드 값은 인덱싱을 지원하지 않습니다. 필드에 대한 쿼리는 지정된 시간 범위와 일치하는 모든 포인트들을 검색하므로, 태그 처럼 빠르지는 않습니다.

     

    팁: 필드와 태그를 비교해보세요, 태그는 인덱싱을 지원합니다.

     

    관련 항목: Field, Field Key, Field Set, Tag Value, Timestamp

    Function

    InfluxQL에서, 함수는 aggregation 함수, selector 함수, transformation 함수로 구분됩니다. InfluxQL Functions를 보고, InfluxQL 함수들의 전체 목록을 살펴보세요.

     

    관련 항목: Aggregation, Selector, Transformation

    Identifier

    CQ의 이름, Database 이름, 필드 키, Measurment 이름, Retention Policy 이름, Subscription 이름, 태그 키 그리고 유저들의 이름들이 참조하는 토큰입니다. Query Language Specification을 살펴보세요.

     

    관련 항목: Database, Field Key, Measurement, Retention Policy, Tag Key, User

    InfluxDB Line Protocol

    InfluxDB에 포인트를 저장하기 위한 텍스트기반의 형식입니다. InfluxDB Line Protocol을 살펴보세요.

    Measurement

    저장하는 데이터와 관련 필드들을 설명하는 InfluxDB 데이터 구조의 한 부분입니다. Measurement들은 문자열입니다.

     

    관련 항목: Field, Series

    MetaStore

    시스템에 상태를 포함항는 내부 정보입니다. 메타스토어는 유저 정보, 데이터베이스, 리텐션 폴리시, 샤드 메타 데이터, CQ, Subscription 들의 정보를 포함합니다.

     

    관련 항목: Database, Retention Policy, User

    Node

    독립된 influxd 프로세스를 말합니다.

     

    관련 항목: Server

    now()

    현재 로컬 서버의 nanosecond timestamp를 반환합니다.

    Point

    InfluxDB에서 포인트는 단일 데이터 레코드를 의미합니다. SQL 데이터베이스의 테이블의 한 행이라고 생각하면 됩니다. 각 포인트들은

    • measurement, tag set, field set, timestamp를 가집니다.
    • 그것의 series와 timestamp에 의해 유니크하게 식별됩니다.

    당신은 하나의 series 속의 같은 timestamp에서 딱 한 개의 포인트만을 저장할 수 있습니다. 기존 포인트와 일치하는 타임스탬프가 있는 시리즈에 새 포인트를 저장하면, 현재 필드 셋과 이전에 저장된 필드 셋이 결합되어 모든 동점이 새 필드 셋으로 이동됩니다. 중복 포인트에 대한 자세한 내용은 How does InfluxDB handle duplicate points?를 살펴보세요.

     

    관련 항목: Field Set, Series, Timestamp

    Points Per Second

    InfluxDB에 저장된 데이터의 deprecated 된 measuremnt 비율을 뜻합니다. 스키마는 point 당 여러 메트릭 값들을 기록하는 것과 모호한 points per second를 렌더링하는 것을 허용하며 심지어 권장합니다.

    쓰기 속도는 일반적으로 values per second를 따르며, 이는 보다 정확한 메트릭입니다.

     

    관련 항목: Point, Schema, Values Per Second

    Query

    InfluxDB가 저장된 데이터를 검색하는 연산을 말합니다. Data Exploration, Schema Exploration, Database Management를 살펴보세요.

    Replication Factor

    클러스터 환경에서 병렬적으로 얼마나 많은 데이터를 복사할 것인지 결정하는 retention policy 속성입니다. 복제된 복사본은 데이터 노드가 이용불가능할 때, 그 데이터가 사용 가능 여부를 보증합니다. 3개 이하의 노드에서, replication factor는 데이터 노드의 개수와 기본적으로 같습니다. 3개 이상의 노드에서는 replication factor의 기본 값은 3입니다. replication factor 기본 값을 변경하기 위해서는 retention policy의 replication factor n을 변경해야 합니다.

     

    관련 항목: Cluster, Duration, Node, Retention Policy

    Retention Policy (RP)

    InfluxDB의 데이터 보존 기간, 클러스터 환경에서 데이터의 복사량, 샤드 그룹들을 커버하는 기간 등을 말합니다. RP들은 데이터 베이스당 유일하며, 메저멘트, 태그 셋과 함께 시리즈를 정의합니다. 데이터베이스를 생성할 때, InfluxDB는 autogen이라고 불리는 RP를 생성합니다. 이 RP는 보존기간이 무한이며, replication factor는 1, 샤드 그룹 보존 기간은 7일입니다. 더 많은 정보는 Retention policy management를 참고하세요.

     

    관련 항목: Duration, Measurement, Replication Factor, Series, Shard Duration, Tag Set

    Schema

    InfluxDB에서 데이터가 어떻게 구조화되어 있는지를 설명합니다. InfluxDB의 주요 스키마는 데이터베이스, RP, 시리즈, 메저먼트, 태그 키-값들을 뜻합니다. 더 많은 정보는 Schema Design를 참고하세요.

     

    관련 항목: Database, Field Key, Measurement, Retention Policy, Series, Tag Key, Tag Value

    Selector

    특정 포인트들 중 하나의 포인트를 반환하는 InfluxQL의 함수 중 하나입니다. InfluxQL Functions를 보면 사용 가능한 혹은 추후 쓸 수 있는 Selector의 모든 목록을 볼 수 있습니다.

     

    관련 항목: Aggregation, Function, Transformation

    Series

    메저먼트, 태그 셋, 필드 키에서 공유하는 논리적으로 그룹핑된 정의된 데이터를 말합니다.

     

    관련 항목: Field Set, Measurement, Tag Set

    Series Cardinality

    InfluxDB 인스턴스 안에서 유일한 데이터베이스, 메저먼트, 태그 셋, 필드 키 조합의 개수입니다. 예를 들어, InfluxDB 인스턴스에서, 하나의 데이터베이스와 하나의 메저먼트가 있다고 가정해 봅시다. 단일 메저먼트는 두 개의 태그 키 email, status가 있습니다. 3개의 다른 email이 있고, 각 이메일 주소는 2개의 다른 status와 연관되어 있다면, 메저먼

    트의 series cardinality는 6개입니다. (3 * 2)

     

    email status
    lorr@influxdata.com start
    lorr@influxdata.com finish
    marv@influxdata.com start
    marv@influxdata.com finish
    cliff@influxdata.com start
    cliff@influxdata.com finish

    경우에 따라, 종속적인 태그가 있기 때문에 단순히 그 곱셈을 수행하는 것은 series cardinality는 더 많이 측정될 수 있음에 유의하여야 합니다. 종속적인 태그들은 다른 태그에 의해 범위가 지정되고, series cardinality가 증가하지 않는 태그를 말합니다. 위의 예에서 태그 firstname을 추가했다고 했을 때, series cardinality는 18(3 2 3)이 되지 않습니다. firstname이란 태그는 email 태그에 의해 범위가 정해지기 때문에 즉 종속 태그이기 때문에 series cardinality 변하지 않고 6이 될것입니다.

     

    email status firstname
    lorr@influxdata.com start lorraine
    lorr@influxdata.com finish lorraine
    marv@influxdata.com start marvin
    marv@influxdata.com finish marvin
    cliff@influxdata.com start clifford
    cliff@influxdata.com finish clifford

    SHOW CARDINALITY를 보면, series cardinality를 위한 InfluxQL 명령어에 대해서 배울 수 있습니다.

     

    관련 항목: Field Key, Measurement, Tag Key, Tag Set

    Series Key

    메저먼트, 태그 셋과 필드키에 의해 특정된 시리즈를 식별하는 키입니다.

    예를 들어서 다음과 같습니다.

     

    measurement, tag set, field key h2o_level, location=santa_monica, h2o_feet

     

    관련 항목: Series

    Server

    InfluxDB가 실행되는 가상 혹은 물리적인 머신을 뜻합니다. 서버 당, InfluxDB 프로세스는 단 하나여야만 합니다.

    관련 항목: Node

    Shard

    샤드는 실제 인코딩 및 압축된 데이터를 포함하며, 디스크의 TSM 파일로 표시됩니다. 모든 샤드는 하나의 샤드 그룹에 속해 있습니다. 하나의 샤드 그룹 안에 여러 개의 샤드가 존재할 수 있습니다. 각 샤드는 특별한 series set들을 포함하고 있습니다. 주어진 샤드 그룹 안의 주어진 시리즈 안에 해당하는 모든 포인트들은 디스크의 동일한 샤드 파일에 저장됩니다.

     

    관련 항목: Series, Shar Duration, Shard Group TSM

    Shard Duration

    Shard Duration은 각 샤드 그룹의 지속 시간을 결정합니다. RP의 SHARD DURATION 값에 의해 그 기간이 결정됩니다. 더 많은 정보를 알기 위해서 Retention Policy management를 참고 하세요. 예를 들어서, RP에서 SHARD DURATION이 1w로 설정되었다면 각 샤드 그룹은 1주일 동안 지속되며, 해당 주에 timestamp가 있는 모든 point들을 포함하게 됩니다.

     

    관련 항목: Database, Retention Policy, Series, Shard, Shard Group

    Shard Group

    샤드 그룹은 샤드의 논리적인 컨테이너를 지칭합니다. 샤드 그룹들은 시간과 RP로 구성되어 있습니다. 데이터를 포함한는 각 RP는 적어도 하나 이상의 샤드 그룹과 연관되어 있다. 주어진 샤드 그룹은 샤드 그룹이 다루는 기간에 대해 데이터가 있는 모든 샤드를 포함한다. Shard Duration은 각 샤드 그룹이 지속되는 시간이다.

     

    관련 항목: Database, Retention Policy, Series, Shard, Shard Duration

    Subscription

    Subscription 속성은 Kapacitor에서 데이터를 수신하는 것을 허락하는 속성입니다. Kapacitor는 InfluxDB 안에서 Pull 모델 보다 Push 모델로 데이터로 꺼내옵니다. Kapacitor가 InfluxDB와 함계 동작하게끔 설정되면, Subscription은 InfluxDB에서 Kapacitor까지 구독한 데이터베이스에 대한 모든 쓰기를 자동으로 푸시할 것입니다. Subscription은 쓰기를 전송하기 위해 TCP 또는 UDP를 사용할 수 있습니다.

    Tag

    InfluxDB의 데이터 구조 중 메타 데이터를 기록하는 키-값 쌍입니다. 태그들은 데이터 구조에서 선택적으로 쓰일 수 있습니다. 그들은 공통적으로 쿼리된 메타 데이터를 저장하는데 유용합니다. 태그는 인덱싱되어 태그에 대한 쿼리가 수행됩니다.

     

    팁: 필드와 태그를 비교해보세요, 필드는 인덱싱되지 않습니다.

     

    관련 항목: Field, Tag Key, Tag Set, Tag Value

    Tag Key

    태그를 구성하는 키-값 중 키입니다. 태그 키들은 문자열이며, 메타데이터를 저장합니다. 태그 키들은 인덱싱되어 태그 키에 대한 쿼리가 수행됩니다.

     

    팁: 필드 키와 태그 키를 비교해보세요, 필드 키는 인덱싱되지 않습니다.

     

    관련 항목: Field Key, Tag, Tag Set, Tag Value

    Tag Set

    한 포인트의 태그 키와 값들의 집합입니다.

     

    관련 항목: Point, Series, Tag, Tag Key, Tag Value

    Tag Value

    태그를 구성하는 키-값 중 값입니다. 태그 값들은 문자열이며 메타데이터를 저장합니다. 태그 값들은 인덱싱되어 태그 값에 대한 쿼리가 수행됩니다.

     

    관련 항목: Tag, Tag Key, Tag Set

    Timestamp

    모든 포인트에서 데이터와 연관된 시간입니다. InfluxDB의 모든 시간은 UTC입니다. 데이터 쓰기 시, 시간을 지정하는 방법에 대해서는 Write Syntax를, 데이터 탐색 시 시간을 지정하는 방법에 대해서는 Data Exploration을 참고하세요.

     

    관련 항목: Point

    Transformation

    특정 포인트들로부터 계산된 값들의 셋이나 값을 반환하는 InfluxQL의 함수 중 하나입니다. 해당 포인트에 대해서 집계된 값을 반환하지는 않습니다. InfluxQL Functions를 보면 사용 가능한 혹은 추후 쓸 수 있는 Transformation의 모든 목록을 볼 수 있습니다.

     

    관련 항목: Aggregation, Function, Selector

    TSM(Time Structured Merge tree)

    InfluxDB를 위한 전용 데이터 저장 방식을 말합니다. TSM은 기존 B+ 혹은 LSM 트리 구현보다 더 높은 압축 및 쓰기/읽기 처리를 할 수 있습니다. 자세한 내용은 Storage Engine를 참고하세요.

    User

    InfluxDB에는 2종류의 유저가 있습니다.

    • Admin user들은 모든 데이터베이스에 대한 READ, WRITE 접근 권한을 가지고 있으며, 관리자 전용 쿼리, 유저 관리 명령에 대한 접근 권한을 가지고 있습니다.
    • Non-admin user들은 데이터베이스 당 READ, WRITE 혹은 ALL(READ + WRITE) 권한을 가질 수 있습니다.

    authentication 속성이 활성화되면, InfluxDB는 유효한 username과 password가 전송된 HTTP 요청만 처리합니다. 더 자세한 정보를 얻으려면 Authentication and Authorization를 살펴보세요.

    Values Per Second

    InfluxDB에 데이터가 유지되는 메저먼트의 비율을 뜻합니다. 쓰기 속도는 일반적으로 초당 값으로 생각합니다. 초당 값을 계산하려면 초당 쓴 포인트의 개수 당 저장된 값 수를 곱합니다. 예를 들어 포인트가 각각 4개의 필드를 가지고 있고 초당 10번 씩 5000개의 배치를 쓴다면, Values Per Second는 포인트 당 필드 개수 4 배치당 처리하는 포인트 개수 5000 배치의 개수 10 = 4 5000 10 = 20,0000개의 값이 됩니다.

     

    관련 항목: Batch, Field, Point, Points Per Second

    WAL(Write Ahead Log)

    최근 write된 포인트들의 임시 캐시입니다. 영구 스토리지 파일에 접근하는 빈도를 줄이기 위해 InfluxDB는 그들의 총 size 또는 age가 영구 스토리지에 플러시하도록 트리거할 때까지 새 포인트를 WAL에 캐싱합니다. 이를 통해 TSM에 대한 쓰기를 효율적으로 배치 처리할 수 있습니다.

    WAL의 포인트들은 쿼리될 수 있으며, 시스템 재부팅 시에도 계속 유지됩니다. 프로세스 시작 시, 시스템이 새 write를 수락 하기 전에 WAL의 모든 포인트들을 플러시해야 합니다.

     

    관련 항목: TSM

    결론

    이렇게 해서, InfluxDB에서 자주 사용되는 용어에 대해 살펴보았습니다. 공식 가이드 전반적으로 쓰이기 때문에, 알아두면 좋을 것 같습니다.

Designed by Tistory.