본문 바로가기

기타/연구실 프로젝트

[시계열 db] 시계열데이터 db선택에 관련된 내용 정리

반응형

최근 학부연구생으로 활동하고 있는 연구실에 모니터링 앱 제작팀에 합류하게 되었다. 안드로이드 개발자 한분에서 작업하시다가 인수인계를 받았는데, todo list 1순위가 데이터 저장 서버구축에 관한 내용이였다.

FireBase cloud database 사용을 후보에 두고 계시던데, FireBase를 다뤄본적이 없어 FireBase에 대해 조사해본 후 사용하기 적합한지, 적합하지 않은지 판단해보려고 한다. 적합하지 않다면 어떤 db를 사용하면 좋을지 알아보려고 한다.

간략한 요구사항

  1. 기기 하나당 1초당 70회 정도의 데이터가 생성되며 데이터의 크기가 (8bit) 크지 않다.
  2. 24시간 기준으로 계산을 해보면 24 * 60 * 60 * 70 = 약 600만개의 데이터가 생성된다.
  3. 꼭 건건히 요청하지 않아도 되고 chunk 단위로 묶어서 전송하는 것도 가능하다.
  4. 기기가 항상 인터넷에 연결되어 있는 상황이 아니다.

FireBase 공식문서

FireBase의 장점

  • server less 이기 때문에, 서버 개발에 대한 지식이 없어도 비교적 쉽게 사용 할 수 있다.
  • 사용량이 적을때는 무료로 사용 할 수 있다. (전체 데이터량 50GB 미만)

FireBase의 단점

  • 유료, 무료에 상관없이 FireBase 데이터베이스 서버 위치에 따라 속도지연이 빈번하게 발생함. (한국의 데이터베이스 서버를 사용하고 있을때, 미국에서 앱을 사용한다면 속도지연이 발생함.)
  • 기본적으로 FireBase에서는 색인(index)를 사용하지 않고, 하나의 쿼리를 실행할때 문서 전체를 load하기 때문에 대용량 데이터를 처리하는데 적합하지 않다.
  • 무료 사용량을 초과하는 경우 다른 데이터베이스 사용량에 비하여 비싼편이라고 함.

FireBase에 대한 생각 정리

  • 기본적으로 클라우드 기반의 데이터베이스는 저장된 data 용량 뿐만 아니라 트랜잭션 단위(insert, select, update...) 등등 마다도 과금이 되기 때문에 데이터크기가 크거나 요청수가 많을 경우에 사용하기 적합하지 않을 것 같다.
  • 클라우드 서버를 구축하고, 클라우드 서버에 온프레미스로 구축할 수 있는 db를 사용하는 것이 현명할 듯 하다.
  • 다만, 해당 프로젝트 끝나고 상용단계에서 유지보수가 필요 할 경우 앱개발자, 서버개발자(특히 클라우드, 해당db에 지식이 있는)가 요구된다.

시계열 데이터베이스 사용시 얻을 수 있는 이점

  • 특정 주기마다 측정되는 시계열데이터를 다루는데 최적화되어있다.
  • 데이터가 저장되는 기간(유효기간)을 쉽게 설정 할 수 있다.
  • 대부분 시각화 할 수 있는 툴을 제공하여 큰 노력 없이 시각화 할 수 있다.

시계열 데이터 db

경험이 많으신 개발자분들께 위 요구사항을 어느정도 말씀 드린후 조언을 구하여 아래 3가지 db를 추천받았다.

  • influx db : 시계형 nosql db
  • timescale db : 시계열 관계형 db
  • mongo db + 샤딩 : nosql db (지인이 근무하는 모 대기업에서 사용하고 있음. 하루 약 100GB, 총 100TB이상 관리)

밴치마크 비교 사이트

( timescale, influx 사에서 직접 측정한 것 이기때문에 어느정도 주관이 포함되었을 수도 있음에 유의)

시계열 데이터 db에 대한 생각 정리

  • 관계형데이터 베이스, SQL 문법에 익숙한 나로써는 timescale db를 사용하는 것이 가장 빠르게 도입할 수 있을 것 같다고 생각했다.
  • 그런데 밴치마크 성능도 timescale db가 가장 우수하게 나타났다.
  • 다만 2017년도에 새롭게 개발된 db이기 때문에, 한국어 래퍼런스 자료가 많지 않을 것 같다.
  • 삼성, 보쉬, IBM, 지맨스, 등등 큰 회사들이 사용하고 있는 걸로 보아 괜찮은 db인 것 같긴하다.

timescale db 클라우드

  • timesacal db도 클라우드 서비스를 제공하고 있다.
  • aws, gcp, azure 3개 중에 선택하여 사용 할 수 있다.
  • grafana와 쉽게 연동해서 사용 할 수 있는 서비스도 제공하는 것 같다.
  • 2core CPU, 4GB RAM, 20GB STORAGE 개발서버 기준 한달에 약 15000원 정도의 금액으로 이용가능하다. (aws ec2 프리티어 서버 띄워놓는거랑 비슷하게 나오는 것 같다.)
반응형