티스토리 뷰

etc

timeseries DB

shannon. 2022. 10. 13. 13:33
반응형

Building on top of Gorilla

Gorillas’ low latency processing (over 70x faster than the previous system it replaced) enabled the Facebook team to build a number of tools on top, these include horizon charts; aggregated roll-ups which update based on all completed buckets every two hours; and a correlation engine that we saw being used in the opening case study.

The correlation engine calculates the Pearson Product-Moment Correlation Coefficient (PPMCC) which compares a test time series to a large set of time series. We find that PPMCC’s ability to find correlation between similarly shaped time series, regardless of scale, greatly helps automate root-cause analysis and answer the question “What happened around the time my service broke?”. We found that this approach gives satisfactory answers to our question and was simpler to implement than similarly focused approaches described in the literature[10, 18, 16]. To compute PPMCC, the test time series is distributed to each Gorilla host along with all of the time series keys. Then, each host independently calculates the top N correlated time series, ordered by the absolute value of the PPMCC compared to the needle, and returning the time series values. In the future, we hope that Gorilla enables more advanced data mining techniques on our monitoring time series data, such as those described in the literature for clustering and anomaly detection [10, 11, 16].




InfluxDB 및 IotDB 도입 및 성능 비교

프로그램 인생, 피트를 끝까지 밟아, 피트를 끝까지 채워라
9명이 이 기사를 좋아했습니다.

InfluxDB 소개

InfluxDB는 외부 종속성이 없는 Go 언어로 작성된 오픈 소스 분산 시계열, 이벤트 및 메트릭 데이터베이스입니다. 시계열 데이터를 저장하고 분석하기 위한 오픈 소스 데이터베이스입니다. 디바이스 성능, 로그, IoT 센서와 같은 타임스탬프 데이터를 저장하는 데 적합하며, 분산 및 수평 확장을 달성하는 것이 설계 목표입니다. InfluxDB에는 데이터 저장 및 쿼리, 백그라운드에서 ETL 처리 또는 모니터링 및 경고 목적, 사용자 대시보드, 데이터 시각화 및 탐색 등을 위한 API가 포함되어 있습니다.

InfluxDB는 InfluxData에서 개발한 오픈 소스 시계열 데이터입니다. Go로 작성되었으며 고성능으로 시계열 데이터를 쿼리하고 저장하는 데 중점을 둡니다. InfluxDB는 IoT 산업에서 스토리지 시스템의 데이터 모니터링 및 실시간 데이터와 같은 시나리오에서 널리 사용됩니다.

비슷한 데이터베이스로는 Elasticsearch, Graphite, IotDB 등이 있습니다.

InfluxDB의 장점

  • 시계열 데이터용으로 특별히 작성된 사용자 지정 고성능 데이터 저장소입니다. TSM 엔진은 높은 수집 속도 및 데이터 압축을 허용합니다.
  • 완전히 Go 언어로 작성되었습니다. 외부 종속성이 없는 단일 바이너리로 컴파일됩니다.
  • 간단한 고성능 쓰기 및 쿼리 HTTP API
  • 플러그인은 Graphite, collectd 및 OpenTSDB와 같은 다른 데이터 추출 프로토콜을 지원합니다.
  • 집계된 데이터를 쉽게 쿼리할 수 있도록 SQL과 유사한 쿼리 언어에 맞게 조정됨
  • 레이블을 사용하면 빠르고 효율적인 쿼리를 위한 시리즈 인덱싱이 가능합니다.
  • 보존 정책은 오래된 데이터를 효과적이고 자동으로 만료합니다.
  • 연속 쿼리는 집계된 데이터를 자동으로 계산하여 빈번한 쿼리의 효율성을 향상시킵니다.

InfluxDB의 단점

  • InfluxDB의 오픈 소스 버전은 하나의 노드만 지원합니다.
  • 오픈소스 버전은 클러스터 기능이 없으며 클러스터 버전은 과금해야 합니다.
  • 이전 버전과 이전 버전 간의 호환성 문제가 있습니다.
  • 스토리지 엔진이 변화하고 있습니다.

IoTDB 소개

Apache IoTDB는 Java 언어로 작성되었으며 IoT 시계열 데이터를 위해 특별히 구축된 데이터베이스로 데이터 수집, 저장, 분석 기능을 제공합니다. IoTDB는 디바이스-클라우드 통합 솔루션을 제공하며, 클라우드에서 고성능 데이터 읽기 및 쓰기 및 풍부한 쿼리 기능을 제공하며 IoT 시나리오에 대한 효율적인 디렉토리 구성 구조를 사용자 정의하고 Apache Hadoop과 같은 빅 데이터 시스템과 호환되지 않습니다. Spark 및 Flink 에지에서는 가벼운 TsFile 관리 기능을 제공하고 끝에 데이터를 로컬 TsFile에 기록하며 특정 기본 쿼리 기능을 제공하고 TsFile 데이터를 클라우드에 동기화하는 것을 지원합니다.

IoTDB의 장점

  • 국내 프로젝트, 현재 국가는 독립적인 연구 개발 및 현지화를 적극적으로 추진하고 있습니다.IotDB는 Tsinghua 대학에서 개발한 시계열 데이터베이스이자 Apache 인큐베이션 프로젝트입니다.프로젝트는 2014년에 시작되었습니다.2018년 11월 18일 iotdb는 공식적으로 apache 인큐베이터, apache 인큐베이터 인큐베이터 프로젝트에 진입한 최초의 중국 대학이 되었습니다.
  • 사용자에게 데이터 수집, 저장 및 분석과 같은 특정 서비스 제공
  • 경량 구조, 고성능 및 사용 가능한 기능, Hadoop 및 Spark 에코시스템과의 원활한 통합은 산업용 IoTDB 분야에서 대용량 데이터 저장, 높은 처리량 데이터 쓰기 및 복잡한 데이터 분석의 요구 사항을 충족합니다.
  • 유연한 배포 전략. IoTDB는 사용자에게 클라우드 플랫폼 또는 단말 장치에 원클릭 설치 도구를 제공하고, 클라우드 플랫폼에 있는 데이터와 단말을 연결하는 데이터 동기화 도구를 제공합니다.
  • 하드웨어 비용이 저렴합니다. IoTDB는 디스크 스토리지에 대해 높은 압축률을 달성할 수 있습니다.
  • 효율적인 디렉토리 구조. IoTDB는 지능형 네트워크 장치에 의한 복잡한 시계열 데이터 구조의 효율적인 구성, 유사 장치에 의한 시계열 데이터의 구성, 대규모의 복잡한 시계열 데이터 카탈로그에 대한 퍼지 검색 전략을 지원합니다.
  • 높은 처리량 읽기 및 쓰기. IoTDB는 수백만 개의 저전력 장치에 대한 강력한 연결 데이터 액세스 및 고속 데이터 읽기 및 쓰기를 지원하며 위에서 언급한 스마트 네트워크 장치 및 하이브리드 장치에 적합합니다.
  • 풍부한 쿼리 의미. IoTDB는 장치 및 측정 전반에 걸친 시계열 데이터의 시간 정렬, 시계열 필드 계산(주파수 도메인 변환) 및 시간 차원에 대한 풍부한 집계 기능 지원을 지원합니다.
  • 학습 비용이 매우 저렴합니다. IoTDB는 SQL과 유사한 언어, JDBC 표준 API 및 사용하기 쉬운 가져오기/내보내기 도구를 지원합니다.
  • 고급 오픈 소스 에코시스템과의 원활한 통합. IoTDB는 Hadoop, Spark와 같은 분석 에코시스템과 Grafana와 같은 시각화 도구를 지원합니다.

IoTDB의 단점

  • 현재 단일 노드 버전만 있지만 클러스터 버전은 곧 출시될 예정입니다.
  • IoTDB TsFile의 구조는 현재 Java 버전만 있으며, 이는 자원 점유 측면에서 에지 경량 장치에 친화적이지 않아 터미널/장치 측에서 적용이 제한됩니다.
  • 스토리지는 HDFS 또는 로컬 디스크의 사용을 지원하며, 스토리지에 HDFS를 사용함으로써 스토리지 계층은 고가용성을 보장할 수 있지만 컴퓨팅 계층은 더 이상 고가용성을 보장하지 않습니다.

관계형 데이터베이스와 키-값 데이터베이스

관계형 데이터베이스키-값 데이터베이스
단일 테이블의 최대 열 수: MySQL InnoDB는 1017개 열입니다. 방대한 시계열 관리 가능
단일 테이블의 행 수는 너무 크지 않습니다: 천만 행 미만 쿼리는 다음과 같이 제한됩니다(낮은 표현성):
수평 및 수직 하위 테이블, 하위 라이브러리 시간 차원별 쿼리, 값 차원별 쿼리, 여러 시퀀스의 시간 정렬 쿼리

시계열 데이터베이스

관계형 데이터베이스 기반키-값 데이터베이스기본 시계열 데이터베이스경량 시계열 데이터베이스
타임스케일 opentsdb카이로스DB 유입 DB 아이오드DB
PG 기반으로 개발된 플러그인 Hbase/Cassandra 기반 LSM 메커니즘 기반 타이밍 라이브러리 산업 현장에서 수천만 개의 시계열 관리
시계열 데이터의 자동 분할 시계열 파티션 키 전용 파일 구조 단일 노드에서 수조 개의 데이터 포인트 관리
쿼리 계획 최적화 인덱스 구축을 위해 예약된 작업 독점 쿼리 최적화 단일 노드에서 수십 테라바이트의 시계열 데이터 관리
사용자 정의 병렬 쿼리     Hadoop, Spark, Matlab, Grafana 및 기타 생태계 지원
납입기간이 길어질수록 수입율은 계속 감소 낮은 압축률, 느린 쿼리 장기 기록 데이터 쿼리 성능 저하 효율적인 데이터 지속성, 리치/로우 레이턴시 데이터 쿼리

InfluxDB 및 IotDB 성능 테스트

테스트 구성

총 데이터 볼륨1500억 포인트
고객 10
그룹 번호 10
장치 번호 100
센서 번호 100
각 센서 1500만 포인트
부호화 RLE

지속적인 고 스트레스 쓰기 테스트.

시험 결과

경과 시간(h)경과율(포인트/초)AccuTime(시간)정확한(포인트/초)
IoTDB 25.5 1632058.82 13.2 3156988.07
인플럭스DB 38.7 1077684.22 25.8 1617748.51

테스트 결과 총 1,500억 포인트가 생성되었으며 InfluxDB는 총 38.7시간, IoTDB는 총 25.5시간이 소요되었습니다. 테스트 중 InfluxDB와 IoTDB 모두 안정적인 삽입 속도를 유지했으며 중간에 이상이 발생하지 않았습니다.

압축 성능

디스크 공간(G)각 포인트 평균(B)
인플럭스DB 627 4.49
IoTDB 180 1.29

InfluxDB는 IoTDB 디스크 공간의 3.5배를 차지합니다.

모니터링 항목

CPU 사용량(%)시스템 디스크 wRate(M/s)데이터 디스크 wRate(M/s)순 트래픽(M/s)
인플럭스DB 21.78 18.62 69.15 32.33
IoTDB 15.29 27.58 69.01 37.15

시스템 디스크(SSD)의 IO의 경우 blktrace 도구를 사용하여 더 자세한 통계를 만듭니다. 벤치마크가 원활하게 실행되면 1분의 IO 데이터를 샘플링하고 통계 결과는 다음과 같습니다.

Q2C 평균 시간(ms)D2C 비율BLKavgqIOPS%유틸
인플럭스DB 1.12 93.83% 521 88 4.4%
IoTDB 0.33 96.09% 207 1097 13.7%

안에:

Q2C: 각 IO 요청에 소요된 평균 시간.

D2C: 드라이버 및 하드웨어에서 IO 요청에 소요된 시간.

Q2C = Q2I + I2D + D2C

BLKavg: 각 IO 요청에 의해 처리된 평균 블록 수.

IOPS: 초당 처리된 평균 IO 요청 수입니다.

%util: IO 장치의 사용량입니다.

위의 모니터링 데이터에서 알 수 있듯이 IoTDB는 각 IO 요청의 처리 효율성이 InfluxDB보다 우수하지만 IoTDB는 초당 많은 IO 요청을 처리하고 IOPS가 너무 높습니다.

IotDB 개발자 블로그 를 팔로우할 수 있습니다 . https://blog.csdn.net/qiaojialin

IoTDB 개발자 블로그 주소

반응형

'etc' 카테고리의 다른 글

eng study  (0) 2022.12.24
영어 email 끝맫음 표현  (0) 2022.11.07
Arinc 615a data loader  (0) 2022.08.29
FB E5 phone interview  (0) 2022.08.21
FB E4 others  (0) 2022.08.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함