기술 이야기

IoT 데이터와 시계열DB(Time Series DataBase)

킬크 2024. 2. 26. 16:06

IoT(Internet of Things, 사물인터넷)

IT업계에 종사하는 사람뿐만 아니라 일반인들도 IoT(Internet of Thongs) 혹은 사물인터넷이라고 하면 어디선가는 들어본 용어이며, 개념을 어느 정도 이해하는 사람도 많다. 사물(Things)들의 인터넷(Internet)이 IoT니까, 말 그대로 사물들이 인터넷이 연결되다는 정도로만 이해해도 좋다.

2,000년대에 접어들면서 초고속인터넷이 기업, 학교, 연구소 중심에서 가정으로 보급되기 시작했고, 그렇게 큰 비용을 들이지 않고서도 각 가정에서 PC와 웹브라우저를 통해 세계 어디든 연결이 되고, 물건을 살 수 있으며, 교육도 받을 수 있고, 업무도 볼 수 있는 통신서비스가 되었다.

그런 초고속인터넷 기술이 각 가정에 보급된 지 다시 10여 년이 흘러, 2010년대에는 스마트폰이 보급되면서 가정의 유선 초고속인터넷이 이젠 휴대폰으로 Mobile Internet으로 확대되었다. 다들 알고 있다시피 Apple의 iPhone이 그 바람을 불러일으킨 촉매제가 된 건 유명하고, Google이 Android를 보급하면서 Apple의 iOS와 더불어 시장의 스마트폼 붐업을 일으키는 양대 플랫폼으로 성장했다.

이때부터 IoT의 씨앗도 자라기 시작했는데, 바로 유무선 인터넷 통신기술과 모바일 단말기가 보급되면서 활발하게 모든 기기에 인터넷을 연결하고자 하는 시도가 점점 구체화되기 시작했다. IoT의 근본적인 성장 바탕에는 모바일 인터넷과 스마트폰의 보급이 있었기에 가능했는데, 모든 사물에 통신으로 연결되는 시대의 개막을 열었다.

이제 IoT는 우리 주변에 아주 흔한 기술이자, 제품 그 자체인 경우가 많아졌다. 

집안에 있는 가전을 한번 살펴보자. TV, 냉장고, 세탁기 등에도 Wi-Fi로 연결되어 가전이 소비자에게 알려줘야 할 데이터나, 상태를 전달할 때 인터넷을 이용하고 있다. 오래된 가전제품의 경우 인터넷망의 연결 필요성이 없었지만, TV 같은 경우 화면 큰 PC, 화면 큰 스마트폰의 역할을 톡톡히 하고 있다.

폰에서 PC에서 보던 YouTube를 볼 수 있으며, Netflix, Tving, Disney+ 같은 OTT(Over The Top) 스트리밍 서비스는 이제 기본이다. 이런 TV를 스마트TV라 부르지만, 결국은 IoT 제품이라고 볼 수 있다. 예전의 TV는 그냥 공중파 또는 케이블로 들어오는 방송신호를 단순히 영상과 음향신호를 큰 스크린에 표현해 주는 기기에 불과했지만, 이제는 인터넷과 연결되어 더 다양한 정보를 주고받으며, 새로운 부가가치를 만들어내고 있다.

샤오미 Mi Home

에어컨과 공기청정기 같은 계절/환경 가전의 경우 이제는 인터넷이 필수다. 기본적으로 에어컨, 공기청정기 같은 기기는 환경을 제어하는 가전제품으로 온도, 습도, 먼지, 냄새 등과 같은 일상속의 환경데이터를 감지(sensing)하고, 이를 제어(control)하는 기능을 제공한다. 인터넷 없이도 감지하고 제어하여 온습도를 낮추거나 먼지를 거르는(filtering) 기능을 제공하지만, 여기에 인터넷이 접목되면, 감지, 제어에 원격(remote)과 자동화(automation)가 추가된다.

몇 년 전 우리 집은 오래된 보일러를 스마트보일러로 교체했다. 보일러 자체의 기능(도시가스를 연소시켜 물을 데우는 기본 기능)이 바뀐 것이 아니라 보일러를 제어하는 기능을 인터넷에 연결하여 사용자로 하여금 다른 편의성을 제공하는 기기로 변신하였다.

추운 겨울 날, 집에 들어오기 30분 전에 보일러를 가동해 집안 실내 공기를 따뜻하게 만들어 놓고 들어오거나, 자녀가 학교에 돌아오는 시간에 맞춰 보일러로 난방을 가동할 수 있는 기능(스케줄링 또는 원격 조정)을 유용하게 사용하고 있다. 단순히 보일러의 제어 기능을 인터넷이라는 통신을 통해 바로 앞에 있는 기기를 조절하듯 원하는 시간과 조건에 장소의 제약을 받지 않고 제어를 할 수 있게 된 것이다.

황사와 미세먼지의 영향이 일상화된 요즘에는 가정 내부의 미세먼지 측정기(또는 공기청정기)를 통해 먼지농도를 체크하고, 이를 청정공기로 환원시키는 기능을 사용한다. 공기상태를 모니터링하다, 나쁜 공기를 빨아들여 필터링된 깨끗한 공기로 바꿔주는 기능은, 현재 집안의 먼지상태를 체크하고, 이를 환풍(기계적인 순환)과 필터링을 통해 공기를 맑게 하는 기본원리다.

사실 이뿐만 아니다. 스마트도어록을 이용해 원격에서 임시 비번을 만들어 손님을 맞을 수 있고, 카메라를 통해 외부 방문객을 집아 아닌 사무실에서 통화할 수 있도록 해주는 기능의 제품도 있다. 집안의 CO2 농도가 짙어지면, 자동으로 배기와 흡기를 시키는 시스템 공기조절기도 있다.

가정이 이러한데, 업무환경이 있는 빌딩 사무실, 공장, 교량, 도로, 거리, 강, 바다, 산 어디든 이러한 센서의 데이터 수집과  제어를 인터넷으로 연결하여 편의성은 물론 다양한 부가가치 산업을 만들어내고 있다.

 

IoT가 만들어내는 데이터

자... 이제 고민의 시간이다.

하나의 가정(home)만 해도 수많은 IoT 단말기(TV, 냉장고, 에어컨, 공기청정기, 카메라, 도어록 등)들이 각자의 기능에 센서를 통한 데이터(값, 상태 등)을 만들고 모으고 있으며, 이런 가정이 하나의 도시에만 해도 수십만 개, 수백만 개가 있다. 뿐만 아니라 사무실, 빌딩과 같은 주거가 아닌 업무 공간에서도 가정못지않은 수많은 IoT 기기와 센서, 제어기 등이 존재한다.

한마디로 IoT는 이제 숫자를 예측할만큼 조금씩 늘어나는 수준이 아니라 기하급수적, 말 그대로 어마어마하게 늘어나고 있다. 그냥 조금 과장되도록 설명하면 폭발적으로 늘어나고 있으며, IoT기기 하나가 만들어에는 IoT Data는 그 보다 더 증가하고 있다고 생각하면 된다.

공기청정기를 예로 들어보자.

공기청정기는 기본적인 수집데이터가 온도, 습도, 먼지(PM 2.5, PM10 등 기준) 등이다. 그리고 이러한 수집 데이터는 시간을 기반으로 관리된다. 무슨 말인고 하니, 전원을 켠 시간부터 온도, 습도, 먼지 데이터를 1분 단위로 계속 측정하고 있으며, 이를 사용자가 필요할 때마다 정보를 제공한다. 정보를 요구하는 시간의 데이터가 가장 중요한 판단 데이터가 되겠지만, 조건을 주어(If~~~ then~~~) 뭔가를 동작시키는 자동화로 간다면, 시간의 흐름에 따라 수집되는 데이터를 계속 어딘가에는 보관하고 있어야 한다.

CO2 관리 센서

시간이라는 데이터 저장의 기준에 따라 온도, 습도, 먼지 데이터가 계속해서 저장되는 것이다. 여기서 저장공간에 대한 걱정은 할 필요 없을 것 같다. 기기 자체의 공간(Storage)도 있을 수 있고, 별도로 연결된 클라우드(Cloud)에 쌓을 수도 있다. 시간에 따른 3개의 변수 데이터가 기록의 주기(period)에 따라 데이터의 양(quantity)이 결정된다고 볼 수 있다.

그런데 단지 우리집의 공기청정기 하나가 모으는 데이터일 뿐이다. 그리고 일정기간 저장할 필요가 없는 데이터의 경우 계속해서 지정된 저장공간만큼만 저장하고 나머지는 덮어쓰거나 지우고 다시 쓰면서 활용할 수 있다. 공기청정기, 에어컨 같은 기록의 필요성이 없는 IoT 데이터의 경우는 저장과 관리의 부담이 상대적으로 낮다.

그러나 다음의 경우는 어떠할까?

감시카메라(CCTV)의 경우다. 안전관리, 도난방지, 상황의 기록 등을 위해 설치하는 CCTV 역시 모션센서 등과 함께 활용하는 사례가 일반적인데, CCTV는 기록할 수 있는 시간에 따라 기기의 비용이나 서비스 이용료가 올라간다. 이 같은 경우는 재산과 안전 등 경제적 또는 물질적 피해 또는 예방을 위해 저장시간과 보호의 범위를 결정하게 된다.

일반적인 CCTV는 특정한 이벤트 중심으로 관리 기록되는 것을 목적으로 한다. 차량 블랙박스가 그런 경우인데, 충돌 또는 사전 약속된 상태값이 되면 기록을 하거나 알림을 주어 사용자에게 값어치를 하는 시스템인데, 이러한 차량 블랙박스의 데이터는 기기에 저장공간에 따라 시간과 저장 횟수의 제약이 따른다.

저장공간도 충분하다면, 이번엔 동시에 관리하거나 해야하는 기기의 대수 문제도 있다. 빌딩 하나를 예로 들어, 20층 건물이 있고, 이 건물 각 층에는 약 20대의 카메라가 운용 중이다. 그러면 총 400대의 카메라가 계속해서 기록되며, 빌딩의 곳곳을 지키고 있는 상황이다. 이 경우 모션(움직임)의 기록값(이벤트)이 다량 발생하고, 이 이벤트에 대해 30일 후에 그 상황을 다시 모니터링해야 한다면, 영상과 기록값을 저장해 놓은 DVR(Digital Video Record)의 저장공간은 상당할 것이다.

만일 근무시간 중 사람들의 움직임 하나하나를 어떤 센싱값으로 지정해 놨을 경우는 더 많은 이벤트 기록값을 저장해야 한다. 시간에 따라 기록되는 이런 값을 시계열(Time Series, 時系列) 데이터라고 한다. 시간의 흐름에 따른 이벤트 기록값 그 자체다. 움직임 하나 하나를 하나의 값이라 본다면 초당 400개의 카메라가 수백 명을 잡아낼 수 있고, 한 시간 또는 하루라면 그 데이터 개수는 계산해 보면 나온다. 많을 수도 많지 않을 수도 있다.

그런데, 빌딩의 CCTV 정보 같은 건 시계열데이터에서 보면 아주 쉬운 정보다 초당 몇 개의 이벤트가 생길지 모르지만, 몇 개 또는 몇 백개일 것이다. 순간 관리하는 데이터의 개수가 그리 많지 않을 것이다. 그런데, 공장라인에서 제조기기의 진동값을 기록해야 하는 경우는 어떨까? 진동은 제품 생산 품질과도 관련있고, 고장 징후를 사전 발견하여 생산중단을 막을 수 있는 중요한 데이터이기 때문에 수많은 스마트팩토리에서 꼭 저장하는 데이터 중의 한 가지다.

진동 데이터의 경우 초단위가 아니라 수 밀리초, 마이크로초 등 시간의 기록단위가 더 정밀한 경우가 일반적인데, 기기 1개에서 나오는 진동 데이터값이 밀리초의 경우 1분만 해도 600번을 기록해야 한다. 1시간이면 36,000번을 기록해야 한다. 기록값이 변화폭에 따라 값이 다를 수 있지만, 0과 1로만 구성되어도 1시간 동안 36,000개의 0 또는 1 값을 기록해야 한다.

이렇게 기록된 값을 관리해야 한다면 어떻게 할까? 그땐 바로 데이터베이스(Database)를 사용해야 한다. 단순히 기계 한대의 값만 기록할리 만무하고, 기계의 기계일 수도 있고, 일부 부품일 수도 있으니, 초당으로 600개의 데이터가 나온다면, 대형 머신 하나에 10여 개의 센서만 달려 있다고 해도, 초당 6,000개의 데이터가 쏟아져 나온다. 기계 1대 데이터 생산이 이 정도인데, 100대가 10개의 공장에서 데이터 수집 관리를 해야 한다면? 시간에 나올 수 있는 데이터는 6,000 x 100 x 10 = 6,000,000개이다.

이렇게 쏟아지는 시계열 DB를 전통적인 관계형DB(RDB, Relational Database)에서 관리한다면? RDB는 Tree형으로 데이터를 기록할 때마다 Insert를 한다. 즉, 데이터를 기록할 때 해당 영역을 Tree 구조로 찾은 다음 거기에 데이터를 넣게 된다(insert). 이미 만들어진 다양항 틀(Dimensional Frame)에 맞게 그 틀을 찾아가서 데이터를 기록하게 된다. 

또한 데이터의 신뢰성, 무결성을 위해 트랜잭션을 지원하는 철학을 가지고 있는데, 데이터를 기록할 때는 모든 트랜젝션(변경연산)에 대해 별도의 기록을 관리하는 log를 남기게 된다. 그래야 다시 원복(roll back)할 수 있기 때문인데, RDB의 가장 큰 특징이 이러한 신뢰성 또는 무결성에 있다. 그래서 한 번에 많은 데이터나 추가적인 데이터가 계속해서 늘어난다면 그 로그기록마저도 그에 준하게 늘어나 처리하는 트랜젝션 속도가 계속해서 떨어지게 된다.

 

시계열DB(Time Series DB)

그래서 만들어진 것이 바로 시계열DB(Time Series Database)다. 다양한 데이터의 틀 대신, 시간이라는 일반적인 하나의 기록기준에 따라 데이터만 입력하는 것이다. 원래 RDB의 기본 기능은 입력(Insert), 업데이트(update), 선택(select), 삭제(delete)다. 그런데 시계열 Data는 Insert, Select만 있다고 보면 된다. 시간의 흐름에 따른 기록 데이터여서 Update 하거나 Delete 할 일이 없다. 생각해 보면 왜 그런지 알 수 있다. 지나간 데이터를 다시 업데이트하거나 지울 일이 없다. 시간의 흐름이 제일 중요한 기록순서이기 때문이다.

이래서 IoT와 시계열DB는 관계가 아주 깊은 것이다.

기존 우리가 알고 있는 관계형 DBMS(RDBMS)들은 Oracle, MS-SQL, MySQL, MariaDB, PostreSQL, DB2, Sybase 등 쟁쟁한 글로벌 기업들의 제품들이 시장을 장악하고 있다. 이런 DBMS들은 IT 서비스의 발전과 하드웨어의 비약적인 발전과 함께 성능도 함께 발전해 왔다.

특히 지금은 (예전에 비해) 아주 느린 저장매체에 속하는 HDD(Hard Disk Drivve)에서의 트랜젝션 대신, 그보다 처리가 훨씬 빠른 메모리 위에서(Memory based) 트랜젝션을 처리하는 시대로 접어들어 RDBMS도 획기적인 속도개선이 있었다. 그래도 위에 설명한 것처럼 IoT 데이터, 더 구체적으로는 센서데이터의 기록 보관 관리는 데이터의 생산량과 속도에 따라 엄청나게 만들어지는 데이터는 RDBMS가 감당하지 못한다.

이는 오로지 IoT 데이터에 맞게 탄생한 시계열DB, 즉 TSDB(Time Series Database)에 의해서 처리가 되어야 관리가 가능하다. 이제 조금씩 시계열DB에 대해 이야기해보도록 하겠다.

결론. 다량의 IoT 데이터를 저장 관리하는 DB는 시계열DB!

참고 사이트 : 마크베이스(Machbase) https://machbase.com

반응형