[IT에 한 걸음 더 다가가기] SMAC의 대량 데이터 처리를 위한 DBMS기술! (2편)

1           2

‘NoSQL’이란 용어를 들어보신 적이 있는지요? 지난 호[관련 기사 바로가기 : DBMS기술의 개념과 TREND]에서 SQL(Structured Query Language)은 관계형 DBMS에서 데이터를 조회, 수정, 삭제하거나, DBMS를 조작하는데 사용되는 언어라고 말씀드린 적이 있는데, “No+ SQL 이라니?” 싶으시죠? 아마 IT 산업에 현재 일하고 있거나 관련 전공을 하고 있는 학생 또는 해당 용어가 나오는 신문 기사들을 보고 직접 찾아보신 분들을 제외하고는 무엇을 의미하는지 이해하기가 어려우실 듯합니다.

하지만 여러분들이 평소에 Facebook, Twitter, LinkedIn, Amazon 등의 서비스를 사용한다면 우리는 이미NoSQL DB기술을 사용하고 있는 겁니다. 이 사이트들에 여러분들이 올린 사진이나 메시지들을 저장할 때,많은 사람들이 동시에 웹 쇼핑몰에 접속했을 때, 선호하는 상품을 실시간으로 추천해 줄 때, 거의 예외 없이 사용되는 기술이 바로 NoSQL DB기술입니다. 이번 호에서는 여러분들이 인지하고 계시지 못하지만 다양한 환경에서 이미 활용되는 DBMS의 종류 중 하나인 NoSQL에 대해 자세하게 알아보도록 하겠습니다.

제 1편 : DBMS기술의 개념과 Trend

제 2편 : NoSQL이란?

3: NewSQL이란?

제 4편 : In-Memory DBMS이란?

제 5편 : Polyglot Persistence란?

34

NoSQL이 무엇의 약자인지는 사람에 따라 No SQL, Not Only SQL, Non-Relational Operational Database SQL로 엇갈리는 의견들이있습니다만, 현재 Not Only SQL로 풀어 설명하는 것이 다수를 차지하고 있습니다. 이 말의 의미를 풀어보면 단순히 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미합니다.

 

이 용어가 처음으로 등장한 것은 1998년 카를로 스트로찌(Carlo Strozzi)라는 엔지니어가 공개한 표준 SQL인터페이스를 채용하지 않은 자신의 경량 Open Source 관계형 데이터베이스를 NoSQL이라고 명명한 데서 유래했다고 합니다. 이후 2009년에는 요한 오스칼손(Johan Oskarsson)이라는 엔지니어가 Open Source기반의 분산 데이터베이스 관련 행사를 준비하면서 NoSQL이라는 용어를 사용했다고 합니다. 이때부터 기존의 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity)특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들이 등장했고 이때부터 NoSQL이라는 용어가 보편적으로 사용되었습니다.

 

NoSQL이 등장한 이후에도 시장에서는 관계형 데이터베이스가 데이터를 처리하는데 가장 최적의 시스템으로 받아들이고 있었습니다. 특히 기업의 ERP나, MIS 시스템 등 데이터의 정확한 처리가 필수적인 시스템에서는 현재도 관계형 데이터베이스를 사용하고 있습니다. 앞으로도 지속적으로 활용될 것으로 예상되고요.그 이유는 무엇보다도 SQL이라고 하는 데이터를 처리하는 언어의 편의성 때문에 NoSQL 등 다른 데이터베이스 시스템들은 많은 활용이 되지 않고 있었습니다.

 

그러나 2000년대 후반으로 넘어오면서 인터넷이 활성화되고 소셜네트워크 서비스 등이 등장하면서 관계형 데이터 또는 정형 데이터가 아닌 데이터, 즉 비정형 데이터라는 것을 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 데이터 베이스들이 관심을 받게 되었고 해당 기술이 점점 더 발전하게 되면서  NoSQL데이터베이스가 각광을 받게 된 것입니다. 이러한 배경하에서 어떤 엔지니어들은 NoSQL을 Modern Web-scale Databases라고 정의하기도 합니다.

 

5

NoSQL 데이터베이스는 기존의 관계형 데이터베이스 보다 더 융통성 있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공합니다. 이를 통해 NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리 효율 등에 있어서 매우 뛰어난 성능을 나타냅니다. 이 특징들을 요약해보면 기존 관계형 데이터베이스와 다음과 같은 차이점을 보입니다.

 

  • 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능 없음
  • 데이터 조회를 위해 직접 프로그래밍을 하는 등의 비 SQL 인터페이스를 통한 데이터 접근
  • 대부분 여러 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
  • 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(Transaction ACID 지원) 미 보장
  • 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의 (Schemaless)
  • 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원
  • 대다수의 제품이 Open Source로 제공
  • 대다수의 제품이 고 확장성, 고 가용성, 고 성능 특성을 가짐

 

설명드린 용어들이 다소 어렵습니다만, 정리해보면 NoSQL은 초고용량 데이터 처리 등 성능에 특화된 목적을 위해 비 관계형 데이터 저장소에 비 구조적인 데이터를 저장하기 위한 분산 저장 시스템이라고 볼 수 있습니다.

 

6

앞 세션에서 NoSQL의 개념에 대해서 상세하게 알아보았는데, 저장되는 데이터의 구조에(Data Model) 따라 아래와 같이 나누어 볼 수 있습니다.

7

Key와 Value의 쌍으로 데이터가 저장되는 유형으로 Amazon의 Dynamo Paper에서 유래되었습니다. Riak, Vodemort, Tokyo 등의 제품이 많이 알려져 있습니다.

8

Big Table DB라고도 하며, Google의 BigTable Paper에서 유래되었습니다. Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당합니다.9

Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있습니다. Mongo DB, Cough DB가 이 종류에 해당합니다.

10

Euler & Graph Theory에서 유래한 DB입니다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있습니다. Neo4J, OreientDB 등의 제품이 있습니다.

좀더 상세한 제품을 참조하시려면 다음의 Wikipedia사이트에서 확인해 보세요. [자세히 보기]

 

 

11

NoSQL 제품을 구글링 해보면 위 Wikipedia에서 소개된 것을 포함해서 수 백여 개의 제품들을 찾아볼 수 있습니다. 이렇게 많은 제품들 중에 실제 시스템에 가장 적합한 제품을 어떻게 선정할 수 있을까요? 필자는 비즈니스에서 요구되는 적합성 뿐만 아니라, 시스템을 개발하고 운영하게 될 조직, 개발 커뮤니티의 성숙도도 고려해 봐야 한다고 생각합니다. 더불어 실제 여러분의 시스템에서 잘 작동되는지 검증(Proof of Concept)가 반드시 필요하다고 생각합니다. 특히 Open Source가 대부분인 NoSQL에 있어서는 필수사항이라고 하겠습니다.

대표적인 NoSQL인 Key-Value 제품에 대해서는 Forrester Research에서 ‘14년 10월에 조사한 자료를 인용합니다. Amazon Web Services, Oracle, Aerospike, DataStax, MapR 제품을 Current Offering 관점과Strategy 측면에서 리더군으로 평가하고 있습니다.

Key-Value 제품 외에 현재 시장에서 가장 많이 인기가 있는 제품들은 MongoDB(Document), HBase(Wide Columnar Store), Cassandra(Wide Columnar Store)를 들 수 있습니다. HBase는 하둡 분산 파일 시스템(HDFS)에서 동작하는 Key-Value 구조 분산 데이터 베이스로, Google의 Bigtable을 참고해서 JAVA로 개발되었습니다. Casandra는 Amazon의 Dynamo의 특징인 Hash 알고리즘을 이용한 “masterless” 아키텍처로 모든 노드가 coordinator 노드와 replica 노드가 될 수 있습니다. 현재 가장 인기가 많은 NoSQL인 Mongo는 10gen(현,MongoDB inc)이 개발한 document-oriented database로 JSON의 2진 버전인 BSON을 사용하여 C++로 개발되었습니다.

데이터베이스에서 필수 중요 항목은 시스템적인 견고성입니다. 각 제품의 아키텍처와 기능에 따라 제공되는 견고성이 차이가 있으므로 업무요건을 고려하여 제품을 선정해야 합니다.

 

12

‘13년 기준으로 Top 5 DBMS Vendor가(Oracle, Microsoft, IBM, SAP, Teradata) 전체 데이터베이스 시장의92.6% 매출을 올리고 있다고 합니다. 이들 대부분이 관계형 데이터베이스에서 출발한 Vendor들인데, 최근 들어 NoSQL에서만 지원하던 JSON, Key-Value, Graph와 같은 데이터 모델을 지원하는 제품들을 내놓거나 기존 제품을 업그레이드하고 있습니다. 즉, Big Data를 처리할 수 있는 새로운 비즈니스 요구 사항에 대해 적극적으로 대응하고 있는 것입니다. 오픈소스 DBMS인 PostgreSQL의 경우도 2년 전부터 NoSQL에서나 처리 가능했던 JSON을(JavaScript Object Notation, 데이터 표현 방식의 하나로 효율적인 처리가 가능) 지원함으로써 시장의 주목을 많은 받았고 이로 인해 다른 오픈소스 데이터베이스 업체들도 JSON을 지원하게 되었습니다.

 

Application 시장에 있어서도 NoSQL 기술을 활용한 다양한 시도들이 가속되고 있고 이 개발 속도는 개발자들이 선호하는 특히 Document Style NoSQL기술의 Flexible한 schema처리에 기인하고 있습니다. 하지만Data Governance 측면에서는 Flexible한 데이터 모델관리는 데이터 품질과 관리의 적합성에 있어서 많은Concern을 만들어 내고 있기도 합니다.

 

Forrester의 조사에 의하면 52%가 개발자들이 NoSQL기반의 데이터베이스에 새로운 응용프로그램들을 구축하는 것을 막을 수가 없다고 응답한 한편, 42%는 자사의 인프라에 구축된 NoSQL 데이터베이스들을 관리하는 데 많은 어려움을 겪고 있다고 응답했다고 합니다. 또한 NoSQL 솔루션들에 저장된 데이터는 자사의 비즈니스에 데이터 사일로(Silo)들을 발생시켰다는 응답은 30%에 달했습니다. Data Governance 측면에서 NoSQL에 대해서도 이러한 부작용을 피할 수 있도록, 데이터 모델링과 제품의 선정, 데이터의 관리에 있어서 일관된 정책과 전략 수립이 선행되어야 할 것으로 보입니다.

 

최근의 시장 동향을 감안할 때, IoT 데이터의 처리와 활용과 같은 새로운 비즈니스 케이스가 지속적으로 발굴됨에 따라 NoSQL 기술은 점점 더 매력을 가져가게 될 것입니다. 특히 기존 기술과 비용, 성능, 관리 용이성 측면에서 우위에 있습니다. 가트너에 따르면 최근 시장에서 Document-style DBMS, 특히 MongoDB에 대한 시장의 투자가 확대되고 있습니다. 또한 DataStax, Hadoop 관련된 NoSQL Vendor들도 크게 성장하고 있습니다.

NoSQL DBMS의 기본 개념과 Trend에 대한 소개는 여기까지입니다. 다음 연재에서는 NoSQL의 확장성과 성능을 보장하면서도 데이터 무결성과 SQL 인터페이스를 지원하는 특성을 갖는, 기존 RDBMS에서 확장되고 있는 새로운 접근 방법인 “NewSQL DBMS”에 대해 상세하게 소개해 드리도록 하겠습니다.

<참고자료>

http://en.wikipedia.org/wiki/NoSQL, 위키피디아

http://www.gartner.com/home, 가트너

http://www.forrester.com/home, 포레스터

13
공유하기