Blog

Blog

“ Mach Speed Horizontally Scalable Time series database. ”

마크베이스 6.1 vs InfluxDB 2.7

by Grey Shim / 18 Oct 2023

소개

지난 기사에서는 InfluxDB 1.8.1과 Mchbase를 비교했습니다. 1.8은 Linux 패키지 관리자를 사용하여 기본적으로 설치되지만 최신 오픈 소스 버전인 마크베이스 6.1이 InfluxDB의 2.7과 어떻게 비교되는지 보고 싶었습니다.

마크베이스

마크베이스는 시계열 센서 데이터의 빠른 입력, 검색, 통계를 위해 설계된 DBMS입니다.

Raspberry Pi와 같은 에지 장치를 포함하여 일반 단일 서버, 다중 서버 클러스터를 지원합니다. 시계열 센서 데이터와 머신 로그 데이터를 처리하기 위한 특별한 기능과 아키텍처를 갖추고 있습니다.

InfluxDB

InfluxData에서 개발한 오픈소스 시계열 DBMS입니다. 시계열 데이터 처리에 가장 인기 있는 제품 중 하나입니다. InfluxDB는 클러스터링도 지원합니다.

InfluxDB에 대한 자세한 내용은 아래 사이트를 참조하세요. https://docs.influxdata.com/influxdb

테스트
테스트 환경

본 테스트에서는 다음 환경을 사용했습니다.

  • CPU : AMD EPYC 7742 64-Core Processor(128 thread)
  • 메모리 : 256GB
  • 디스크 : 삼성 NVME 2TB(PCI Express 3.0 x 4)
  • OS : CentOS Linux release 7.8.2003
  • 데이터베이스 : 마크베이스 6.1.8 Fog / InfluxDB v2.7.0
테스트 제약

In InfluxDB 2. x and above, the removal of the database concept from InfluxDB 2.x 이상에서는 버전 1.8에서 데이터베이스 개념 제거, 버킷 및 조직 추가, SQL 지원 감소, 토큰을 통한 보안 및 인증 강화로 인해 기존 클라이언트 애플리케이션이 호환되지 않습니다. 따라서 기존에 SQL로 작성된 테스트는 사용할 수 없으며 쿼리를 Flux 언어로 다시 작성하여 실행하게 됩니다.

마크베이스는 기존 테스트 결과를 활용했습니다.

테스트 입력 성능

InfluxDB가 1.8에서 2.7로 업데이트되면서 리소스 사용량이 크게 늘어났습니다.

이전과 마찬가지로 다음 환경에서 테스트를 실행했습니다.

수집 성능 테스트 결과

테스트 머신의 리소스 헤드룸이 증가했음에도 불구하고 InfluxDB의 입력 성능은 이전(160,000eps)보다 약간 나쁩니다. InfluxDB 입력 성능이 버전에 따라 향상되지 않은 것을 볼 수 있습니다.

쿼리 성능 테스트

InfluxDB는 SQL 쿼리에 대한 지원을 줄이고 자체 쿼리 언어인 Flux에 대한 지원을 늘리고 있습니다. 이에 따라 기존 테스트 쿼리 도구는 더 이상 사용할 수 없으며, 테스트 목적으로 다음 SQL 쿼리를 플럭스 쿼리로 변환하였습니다. 쿼리는 아래 그림과 같습니다.

  • 마크베이스(SQL) / Q1
  • select count(*) from tag;
  • ㆍInfluxDB(Flux) / Q1
  • from(bucket:"sensor_data/autogen")

    |> range(start:2018-01-01T00:00:00+09:00, stop:2018-01-02T0100:00+09:00)

    |> filter(fn: (r) => r._measurement == "tag_data" )

    |> group()

    |> count() |> yield(name: "count")
  • 마크베이스(SQL) / Q2
  • select count(*) from (select * from tag where name = 'EQ0^TAG1' and

    time between to_date( '2018-01-01 00:00:00') and to_date( '2018-01-02 00:00:00'));
  • ㆍInfluxDB(Flux) / Q2
  • from(bucket:"sensor_data/autogen")

    |> range(start:2018-01-01T00:00:00+09:00, stop:2018-01-02T0100:00+09:00)

    |> filter(fn: (r) => r._measurement == "tag_data" ) and r.name == "EQ0^TAG1" )

    |> group()

    |> count() |> yield(name: "count")
  • 마크베이스(SQL) / Q3
  • select count(*) from (select * from tag where name in ('EQ0^TAG1', 'EQ0^TAG2', 'EQ0^TAG3',

    'EQ0^TAG4', 'EQ0^TAG5', 'EQ0^TAG6', 'EQ0^TAG7', 'EQ0^TAG8', 'EQ0^TAG9', 'EQ0^TAG10',and

    time between to_date( '2018-01-01 00:00:00') and to_date( '2018-01-02 00:00:00'));
  • InfluxDB(Flux) / Q3
  • from(bucket:"sensor_data/autogen")

    |> range(start:2018-01-01T00:00:00+09:00, stop:2018-01-02T0100:00+09:00)

    |> filter(fn: (r) => r._measurement == "tag_data" ) and r.name == "EQ0^TAG1" or r.name == "EQ0^TAG2" or r.name == "EQ0^TAG3" or r.name == "EQ0^TAG4" or r.name == "EQ0^TAG5" or r.name == "EQ0^TAG6" or r.name == "EQ0^TAG7" or r.name == "EQ0^TAG8" or r.name == "EQ0^TAG9" or r.name == "EQ0^TAG10" )

    |> group()

    |> count() |> yield(name: "count")
  • 마크베이스(SQL) / Q4
  • select name, stddev(value) from tag where name = 'EQ0^TAG1'

    and time >= to_date
    '2018-01-01 00:00:00') and time < to_date('2018-01-02 00:00:00')

    group by name;
  • InfluxDB(Flux) / Q4
  • from(bucket:"sensor_data/autogen")

    |> range(start:2018-01-01T00:00:00+09:00, stop:2018-01-02T0100:00+09:00)

    |> filter(fn: (r) => r._measurement == "tag_data" ) and r.name == "EQ0^TAG1" and r._field == "value" )

    |> stddev()

    |> group(columns: ["_measurement"], mode: "by")
쿼리 성능 테스트 결과

쿼리 실행 시간은 각각 Machsql 및 influx 실행 도구를 사용하여 측정되었습니다. 결과는 아래와 같습니다.

테스트 결과를 종합적으로 비교

레코드 수를 가져오기 위한 첫 번째 쿼리의 성능이 너무 다르기 때문에 나머지 세 쿼리의 성능은 아래와 같습니다.

결론

이전 Machbase와 InfluxDB 성능 비교와 마찬가지로 InfluxDB는 입력 속도가 매우 느리고 Machbase는 쿼리 성능이 더 우수하다는 것을 알 수 있습니다. 또한 InfluxDB가 SQL에 대한 지원을 줄이고 독점 쿼리 언어에 대한 지원을 늘려 기존 애플리케이션과의 호환성이 떨어지는 것을 볼 수 있습니다.

마크베이스는 SQL을 포함한 업계 표준을 준수하여 기존 프로그램과의 호환성을 지속적으로 유지하고, 마크베이스 neo에서 다양한 신규 API에 대한 지원을 개선하고 지속적인 성능 향상을 약속드립니다.

감사합니다.

마크베이스 CRO 심광훈

@2023 MACHBASE All rights reserved.