2018.09.05

관계형 데이터베이스로 대규모 IoT 워크로드 처리하는 최적화 방법

Maria Colgan | InfoWorld
관계형 데이터베이스는 IoT 애플리케이션 마스터에 필요한 방대한 연결과 처리량, 그리고 각종 기교를 처리할 만큼 확장성이나 성능이 뛰어나지 않다는 것이 일반적인 생각이다. 그러나 오라클 고객이 바로 그러한 작업을 몇 년째 해오면서 입증한 것을 참고하면, 이것은 사실이 아니다. 어떤 방법으로 하고 있는 것일까?

우선 IoT에 대한 정의부터 통일하고 넘어가자. 공식적인 정의는 인터넷을 통해 일상적인 사물이 상호 연결함으로써 데이터를 주고받는 것이다. IoT에는 손목시계, TV, 전화, 오븐, 냉장고와 가스 계량기까지, 연결과 데이터 공유로 “스마트”해지는 온갖 종류의 디바이스가 포함된다. 그리고 어느 시점이 되면 마이닝을 위해 이 데이터를 수집해야 한다.

데이터베이스 관점에서 보면 조직은 IoT 디바이스에서 전송하는 방대한 양의 데이터를 받아서 흡수한 다음 비즈니스 필요에 따라 마이닝해야 한다. 오늘날의 일주일, 24시간 내내 100% 돌아가는 업타임 비즈니스 세계에서 비즈니스 경쟁력을 유지하기 위해서는 데이터의 흡수와 빠른 분석이 필수 요건이다. 이 과정은 다양한 형태로 이뤄질 수 있는데, 대부분은 최적화된 관계형 데이터베이스와 하드웨어로 충분하다.

SQL이냐, NoSQL이냐?
일반적인 오해(그 원인은 마케팅 캠페인에 있음)는 IoT 워크로드에 필요한 흡수 속도가 전통적인 관계형 데이터베이스의 한계를 뛰어넘기 때문에 IoT 워크로드에는 NoSQL 데이터베이스가 필요하다는 것이다. 이것은 분명 오해다. 많은 오라클 고객을 통해 입증된 바와 같이 사실이 아니다. 관계형 데이터베이스를 최적화하면 일부 NoSQL 환경 전체보다 오라클 RAC 클러스터 노드 하나에서 더 많은 데이터를 흡수할 수 있다. 여기서 중요한 부분은 최적화된 관계형 데이터베이스다.

전체적으로 IoT 워크로드의 특징을 보면 많은 수의 작고 가벼운 전환으로 구성되며 지리 관련 데이터 및 비구조적 데이터(비디오 또는 오디오)를 포함하는 경우가 많다. 예를 들어 손목 밴드에서 피트니스 데이터를 수집하는 기업은 걸음 수, 심박수 등과 함께 지리 데이터를 사용한다(사용자가 도보로 이동한 경로를 기록하기 위해).

최근 과장된 면이 있는 대량 흡수 워크로드는 사실 새로운 개념이 아니다. 예를 들어 오라클의 통신 고객 중 하나는 매초 수백만 건의 호출 세부 레코드를 처리한다. 이 분량은 하루 18테라바이트에 이른다.

관계형 데이터베이스에서 실행되는 증권 거래소의 경우 초당 18만 개의 메시지를 기록하며 이는 하루 15테라바이트의 데이터에 해당한다.

이 기업들은 어떻게 하는 것일까? 중요한 요건은 확장성, 유연성, 그리고 실시간 분석을 제공할 수 있는 속도다. 비구조적 데이터를 분류할 때 최적화된 하드웨어를 사용하는 것도 성공을 위한 중요한 구성 요소다.

IoT 핵심 1: 데이터베이스 확장성
확장성은 가용한 하드웨어 리소스에 비례해서 리소스가 증가하는 대로 제약 없이 처리량을 제공하는 역량이다. 오라클 데이터베이스 시스템을 확장하는 방법은 리얼 애플리케이션 클러스터(Real Application Clusters)와 샤딩, 두 가지다.

리얼 애플리케이션 클러스터(RAC)는 공유 스토리지에 연결된 서버 풀을 통해 패키지 또는 맞춤형 애플리케이션을 변경 없이 실행할 수 있게 해준다. 풀의 서버 하나에 장애가 발생해도 데이터베이스는 나머지 서버에서 계속 실행된다. 추가 처리 성능이 필요해지면 아무런 다운타임 없이 풀에 서버를 추가하기만 하면 된다.

샤딩은 큰 데이터베이스를 작은 데이터베이스, 즉 샤드로 분할한다. 갹 샤드는 각기 다른 하드웨어에 저장될 수 있다. 글로벌 소매 기업에서 판매하는 모든 상품이 포함된 초대형 관계형 데이터베이스가 샤딩된 형태를 생각해 보자. 데이터베이스의 각 샤드에는 상품 카탈로그의 일부분이 포함된다.

특정 상품을 찾는 쿼리가 들어오면 해당 상품 유형이 저장된 샤드를 알고 있는 데이터베이스 서버는 그 샤드에서 직접 데이터를 불러온다. 지금의 글로벌 경제 시대에서 얻는 부가적인 혜택은 각 국가마다 샤드를 만들어서 샤드별로 현지 규정을 적용할 수 있다는 점이다. 예를 들어 독일에는 모든 독일인의 데이터가 물리적으로 독일 영토 내에 저장되어야 한다는 규정이 있다. 샤드를 사용하면 쉽게 그 조건을 충족할 수 있다.

몽고DB(MongoDB), 마이크로소프트 SQL 서버, 포스트그레SQL을 포함해서 대규모로 운영되는 데이터베이스는 대부분 현재 샤딩을 제공한다. 그러나 데이터를 샤딩하는 것으로는 충분하지 않다. 이에 못지않게 중요한 것은 크로스 샤드 쿼리를 효율적으로 실행할 수 있는 역량이다. 이를 통해 전체적인 비즈니스 시야를 얻는 데 필요한 시간이 대폭 단축된다.

IoT의 핵심 요구 사항 중 하나는 대량 데이터의 신속한 흡수다. 데이터가 어디에서 스테이징되든 데이터 로드 속도는 데이터베이스 자체보다는 대부분 해당 스토리지로 가는 대역폭에 의해 좌우된다. 데이터를 로드하는 속도는 데이터를 읽는 속도보다 빠를 수 없기 때문이다. 네트워크에서 읽기 속도가 초당 200MB로 제한된다면 데이터를 로드하는 속도는 초당 200MB를 넘어설 수 없다.

확장성의 또 다른 중요한 구성 요소는 단일 행 삽입이 아닌 배열 삽입, 병렬 실행, 그리고 외부 테이블 사용이다.

IoT 핵심 2: 데이터베이스 유연성
유연성은 변화에 쉽고 빠르게 적응하는 역량이다. IoT는 여전히 초기 단계이며 각 디바이스에 따라 새로운 사용 사례가 나오고 있다. 따라서 데이터 형식의 변화에 맞춰 손쉽게 조정 가능한 역량을 갖추는 것이 필수적이다. 이 요구 사항에 대처하기 위해 개발자들이 즐겨 사용하는 방법은 JSON이다. JSON은 스키마 없는 표현을 애플리케이션과 데이터베이스에 모두 동일하게 사용할 수 있게 해주므로 앱 개발이 훨씬 더 간편해진다.

파티셔닝도 유연성의 중요한 요소다. 파티셔닝은 대량의 데이터를 더 용이하게 관리할 수 있게 해주며 전체적인 성능을 개선하고 애플리케이션 관점에서 완전히 투명하다. 또 다른 이점은 과거 데이터를 별도의 파티션에 저장해서 압축한 다음 낮은 티어의 스토리지로 옮길 수 있다는 것이다. 이렇게 하면 데이터 마이닝에 이 데이터를 사용할 수 있고 실시간 쿼리 성능도 저하되지 않는다.

IoT 핵심 3: 실시간 분석
비즈니스 결과 개선을 목표로 한 적시 데이터 분석이 없으면 데이터 속도 및 데이터 저장 속도를 높이기 위한 위와 같은 온갖 기법도 무용지물이다. 결국 기업은 데이터를 활용해야 하며 이는 데이터를 밖으로 꺼내야 한다는 의미다.

글로벌 소매 조직이라면 언제든 모든 샤드에 걸쳐 판매된 상품을 집계해 전 세계에서 가장 인기 있는 10가지 상품을 확인한다는 목표를 정할 수 있을 것이다.

국제 통신 기업이라면 몇 가지 다른 방식으로 이 데이터베이스 아키텍처가 도움이 될 수 있다. 이러한 기업의 쿼리는 대부분 고객에게서 온다. 따라서 샤딩과 파티셔닝을 모두 사용해서 쿼리 실행에서 데이터 저장의 상당부분을 제거해 고객 기대를 충족하는 속도를 실현할 수 있다.

이러한 기업 내부의 비즈니스 관리자는 고객 이탈을 줄이고 수익성을 높이고자 하므로 샤드와 파티션 전반에서 데이터를 마이닝해 패턴을 찾아 곧 서비스를 해지할 가능성이 높은 고객이 누구인지, 또는 미리 고객에게 제공할 만한 부가 상품(예를 들어 국제 데이터 요금제)은 무엇인지 등을 판단한다.

예를 들어 서비스를 해지한 고객의 청구 내역 데이터를 가져와서 분석할 수 있다. 이들이 해지하기 직전 무슨 일이 있었는가? 공통적인 패턴이 있는가? 예컨대 데이터 초과 사용으로 인해 3회 연속으로 요금폭탄을 맞은 직후 다른 통신업체로 전환한 고객이 많은가?

이러한 패턴을 찾는다면 선제적 조치를 취할 수 있다. 예를 들어 고객이 데이터 사용량 초과로 인해 두 차례 연속으로 상당한 요금을 지불했다면 담당자가 연락하여 데이터 사용량이 더 많은 다른 요금제를 제안해 서비스 해지를 방지할 수 있다.

데이터베이스 효율을 높이고 IoT 워크로드에 최적화된 하드웨어를 업데이트하기 위한 다른 방법은 이 백서에서 볼 수 있다. editor@itworld.co.kr 


2018.09.05

관계형 데이터베이스로 대규모 IoT 워크로드 처리하는 최적화 방법

Maria Colgan | InfoWorld
관계형 데이터베이스는 IoT 애플리케이션 마스터에 필요한 방대한 연결과 처리량, 그리고 각종 기교를 처리할 만큼 확장성이나 성능이 뛰어나지 않다는 것이 일반적인 생각이다. 그러나 오라클 고객이 바로 그러한 작업을 몇 년째 해오면서 입증한 것을 참고하면, 이것은 사실이 아니다. 어떤 방법으로 하고 있는 것일까?

우선 IoT에 대한 정의부터 통일하고 넘어가자. 공식적인 정의는 인터넷을 통해 일상적인 사물이 상호 연결함으로써 데이터를 주고받는 것이다. IoT에는 손목시계, TV, 전화, 오븐, 냉장고와 가스 계량기까지, 연결과 데이터 공유로 “스마트”해지는 온갖 종류의 디바이스가 포함된다. 그리고 어느 시점이 되면 마이닝을 위해 이 데이터를 수집해야 한다.

데이터베이스 관점에서 보면 조직은 IoT 디바이스에서 전송하는 방대한 양의 데이터를 받아서 흡수한 다음 비즈니스 필요에 따라 마이닝해야 한다. 오늘날의 일주일, 24시간 내내 100% 돌아가는 업타임 비즈니스 세계에서 비즈니스 경쟁력을 유지하기 위해서는 데이터의 흡수와 빠른 분석이 필수 요건이다. 이 과정은 다양한 형태로 이뤄질 수 있는데, 대부분은 최적화된 관계형 데이터베이스와 하드웨어로 충분하다.

SQL이냐, NoSQL이냐?
일반적인 오해(그 원인은 마케팅 캠페인에 있음)는 IoT 워크로드에 필요한 흡수 속도가 전통적인 관계형 데이터베이스의 한계를 뛰어넘기 때문에 IoT 워크로드에는 NoSQL 데이터베이스가 필요하다는 것이다. 이것은 분명 오해다. 많은 오라클 고객을 통해 입증된 바와 같이 사실이 아니다. 관계형 데이터베이스를 최적화하면 일부 NoSQL 환경 전체보다 오라클 RAC 클러스터 노드 하나에서 더 많은 데이터를 흡수할 수 있다. 여기서 중요한 부분은 최적화된 관계형 데이터베이스다.

전체적으로 IoT 워크로드의 특징을 보면 많은 수의 작고 가벼운 전환으로 구성되며 지리 관련 데이터 및 비구조적 데이터(비디오 또는 오디오)를 포함하는 경우가 많다. 예를 들어 손목 밴드에서 피트니스 데이터를 수집하는 기업은 걸음 수, 심박수 등과 함께 지리 데이터를 사용한다(사용자가 도보로 이동한 경로를 기록하기 위해).

최근 과장된 면이 있는 대량 흡수 워크로드는 사실 새로운 개념이 아니다. 예를 들어 오라클의 통신 고객 중 하나는 매초 수백만 건의 호출 세부 레코드를 처리한다. 이 분량은 하루 18테라바이트에 이른다.

관계형 데이터베이스에서 실행되는 증권 거래소의 경우 초당 18만 개의 메시지를 기록하며 이는 하루 15테라바이트의 데이터에 해당한다.

이 기업들은 어떻게 하는 것일까? 중요한 요건은 확장성, 유연성, 그리고 실시간 분석을 제공할 수 있는 속도다. 비구조적 데이터를 분류할 때 최적화된 하드웨어를 사용하는 것도 성공을 위한 중요한 구성 요소다.

IoT 핵심 1: 데이터베이스 확장성
확장성은 가용한 하드웨어 리소스에 비례해서 리소스가 증가하는 대로 제약 없이 처리량을 제공하는 역량이다. 오라클 데이터베이스 시스템을 확장하는 방법은 리얼 애플리케이션 클러스터(Real Application Clusters)와 샤딩, 두 가지다.

리얼 애플리케이션 클러스터(RAC)는 공유 스토리지에 연결된 서버 풀을 통해 패키지 또는 맞춤형 애플리케이션을 변경 없이 실행할 수 있게 해준다. 풀의 서버 하나에 장애가 발생해도 데이터베이스는 나머지 서버에서 계속 실행된다. 추가 처리 성능이 필요해지면 아무런 다운타임 없이 풀에 서버를 추가하기만 하면 된다.

샤딩은 큰 데이터베이스를 작은 데이터베이스, 즉 샤드로 분할한다. 갹 샤드는 각기 다른 하드웨어에 저장될 수 있다. 글로벌 소매 기업에서 판매하는 모든 상품이 포함된 초대형 관계형 데이터베이스가 샤딩된 형태를 생각해 보자. 데이터베이스의 각 샤드에는 상품 카탈로그의 일부분이 포함된다.

특정 상품을 찾는 쿼리가 들어오면 해당 상품 유형이 저장된 샤드를 알고 있는 데이터베이스 서버는 그 샤드에서 직접 데이터를 불러온다. 지금의 글로벌 경제 시대에서 얻는 부가적인 혜택은 각 국가마다 샤드를 만들어서 샤드별로 현지 규정을 적용할 수 있다는 점이다. 예를 들어 독일에는 모든 독일인의 데이터가 물리적으로 독일 영토 내에 저장되어야 한다는 규정이 있다. 샤드를 사용하면 쉽게 그 조건을 충족할 수 있다.

몽고DB(MongoDB), 마이크로소프트 SQL 서버, 포스트그레SQL을 포함해서 대규모로 운영되는 데이터베이스는 대부분 현재 샤딩을 제공한다. 그러나 데이터를 샤딩하는 것으로는 충분하지 않다. 이에 못지않게 중요한 것은 크로스 샤드 쿼리를 효율적으로 실행할 수 있는 역량이다. 이를 통해 전체적인 비즈니스 시야를 얻는 데 필요한 시간이 대폭 단축된다.

IoT의 핵심 요구 사항 중 하나는 대량 데이터의 신속한 흡수다. 데이터가 어디에서 스테이징되든 데이터 로드 속도는 데이터베이스 자체보다는 대부분 해당 스토리지로 가는 대역폭에 의해 좌우된다. 데이터를 로드하는 속도는 데이터를 읽는 속도보다 빠를 수 없기 때문이다. 네트워크에서 읽기 속도가 초당 200MB로 제한된다면 데이터를 로드하는 속도는 초당 200MB를 넘어설 수 없다.

확장성의 또 다른 중요한 구성 요소는 단일 행 삽입이 아닌 배열 삽입, 병렬 실행, 그리고 외부 테이블 사용이다.

IoT 핵심 2: 데이터베이스 유연성
유연성은 변화에 쉽고 빠르게 적응하는 역량이다. IoT는 여전히 초기 단계이며 각 디바이스에 따라 새로운 사용 사례가 나오고 있다. 따라서 데이터 형식의 변화에 맞춰 손쉽게 조정 가능한 역량을 갖추는 것이 필수적이다. 이 요구 사항에 대처하기 위해 개발자들이 즐겨 사용하는 방법은 JSON이다. JSON은 스키마 없는 표현을 애플리케이션과 데이터베이스에 모두 동일하게 사용할 수 있게 해주므로 앱 개발이 훨씬 더 간편해진다.

파티셔닝도 유연성의 중요한 요소다. 파티셔닝은 대량의 데이터를 더 용이하게 관리할 수 있게 해주며 전체적인 성능을 개선하고 애플리케이션 관점에서 완전히 투명하다. 또 다른 이점은 과거 데이터를 별도의 파티션에 저장해서 압축한 다음 낮은 티어의 스토리지로 옮길 수 있다는 것이다. 이렇게 하면 데이터 마이닝에 이 데이터를 사용할 수 있고 실시간 쿼리 성능도 저하되지 않는다.

IoT 핵심 3: 실시간 분석
비즈니스 결과 개선을 목표로 한 적시 데이터 분석이 없으면 데이터 속도 및 데이터 저장 속도를 높이기 위한 위와 같은 온갖 기법도 무용지물이다. 결국 기업은 데이터를 활용해야 하며 이는 데이터를 밖으로 꺼내야 한다는 의미다.

글로벌 소매 조직이라면 언제든 모든 샤드에 걸쳐 판매된 상품을 집계해 전 세계에서 가장 인기 있는 10가지 상품을 확인한다는 목표를 정할 수 있을 것이다.

국제 통신 기업이라면 몇 가지 다른 방식으로 이 데이터베이스 아키텍처가 도움이 될 수 있다. 이러한 기업의 쿼리는 대부분 고객에게서 온다. 따라서 샤딩과 파티셔닝을 모두 사용해서 쿼리 실행에서 데이터 저장의 상당부분을 제거해 고객 기대를 충족하는 속도를 실현할 수 있다.

이러한 기업 내부의 비즈니스 관리자는 고객 이탈을 줄이고 수익성을 높이고자 하므로 샤드와 파티션 전반에서 데이터를 마이닝해 패턴을 찾아 곧 서비스를 해지할 가능성이 높은 고객이 누구인지, 또는 미리 고객에게 제공할 만한 부가 상품(예를 들어 국제 데이터 요금제)은 무엇인지 등을 판단한다.

예를 들어 서비스를 해지한 고객의 청구 내역 데이터를 가져와서 분석할 수 있다. 이들이 해지하기 직전 무슨 일이 있었는가? 공통적인 패턴이 있는가? 예컨대 데이터 초과 사용으로 인해 3회 연속으로 요금폭탄을 맞은 직후 다른 통신업체로 전환한 고객이 많은가?

이러한 패턴을 찾는다면 선제적 조치를 취할 수 있다. 예를 들어 고객이 데이터 사용량 초과로 인해 두 차례 연속으로 상당한 요금을 지불했다면 담당자가 연락하여 데이터 사용량이 더 많은 다른 요금제를 제안해 서비스 해지를 방지할 수 있다.

데이터베이스 효율을 높이고 IoT 워크로드에 최적화된 하드웨어를 업데이트하기 위한 다른 방법은 이 백서에서 볼 수 있다. editor@itworld.co.kr 


X