I. 배경 1 빅데이터의물결 (1) 빅데이터시대의도래 데이터가폭발적으로증가하고있다. 2011 년을기준으로 Twitter 에서하루에발생되는데이터의양이 8TB (Terabyte) 를넘어서는가했더니 2012 년에는 Facebook 에서하루에만 100TB 를넘는데이터가생성되고있다. 미국비행기제작사인보잉에서는비행기 1 대에관련된데이터가대략 640TB 에이른다고하니현재로서는그끝을알수없는정도이다. 끝없이커져가는디지털정보의단위를통해서도이러한현상이이제시작에불과함을짐작할수있다. 1 bit = binary digit 8 bits = 1 byte 1024 bytes = 1 Kilobyte 1024 Kilobytes = 1 Megabyte 1024 Megabytes = 1 Gigabyte 1024 Gigabytes = 1 Terabyte 1024 Terabytes = 1 Petabyte 1024 Petabytes = 1 Exabyte 1024 Exabytes = 1 Zettabyte 1024 Zettabytes = 1 Yottabyte 1024 Yottabyte = 1 Brontobyte 1024 Brontobyte = 1 Geobyte 우리나라의경우정확한수치는없지만카카오톡의문자메시지가 2012 년기준하루 1 억 8 천만건이라고 순수텍스트파일로만따져도최소한약 40GB 의데이터가매일매일쌓이고있을것으로예상된다.
(2) 빅데이터의특징 그러면이러한데이터의증가는단순히축적되는양만의문제일까? 이에대해오늘날데이터폭발의현상을흔히다음 V3C 로표현하고있다. Volume 데이터의양적증가 Velocity 좀더빨리! 즉, 실시간분석에대한요구의증가 Variety 기존의구조화된데이터와함께비구조적 (unstructured) 데이터의중요성이증대되었다. 대표적예가전문 ( 全文 ) 검색, 텍스트마이닝그리고동영상, 정지화상을포함하는패턴인식등이다. Complexity 위 3V와함께실시간정보제공의욕구가커지면서전반적으로데이터복잡도가증가하게되었다. 날이갈수록이러한현상은심화되고있다. 그동안무시되거나버려져왔던데이터는살아움직이는보물로재탄생하고온라인공간에서의모든클릭, 모든입력사항은하나의데이터흐름 (data stream) 으로기록, 보존, 분석되는세상이되었다. 오늘날길거리의 CCTV, 대중교통에서의요금지불및이동상태또한기록되고분석되는이러한현상은앞으로센서웹 (sensor web) 1 으로표현되는센서의보편화및사물간의통신 (Internet of Things) 등과함께가속화될것이다. 기존의데이터기가바이트 (GB) ~ 테라바이트 (TB) 중앙집중형구조적 (Structured) 빅데이터 (Big Data) 페타바이트 (Peta Bytes) ~ 엑사바이트 (Exa Bytes) 분산형비구조적 (Semi-Structured 및 Unstructured) 1 Sensor web 이란각종의센서데이터를인터넷망을통해적극적으로수집, 교환, 이용하려는노력을말한다. 특히 OGC (Open Geospatial Consortium: http://www.opengeospatial.org/) 에서는 SWE (Sensor Web Enablement) 라는프레임워크를제시하는데여기서는일련의웹서비스용 interface 와통신프로토콜을규정함으로써서로다른센서네트워크간의통신을가능케하고있다.
안정적인데이터모델 ( 주로관계형데이터모델 ) 체계적으로지정된 Interrupt 체계 Flat Schema 또는 No Schema 복잡다단한상호관계 빅데이터의가장큰특징은새로운처리방식을통해성능이비약적으로개선되었다는점이다. 어떤의미에서오늘날빅데이터를통해처리하는것은 30 년전에도이미모두처리가능하였던것이었다. 단지과거에는수개월에걸쳐작업해야했던것이이제몇시간 ~ 수일이면가능하게된것인데이것이가져온변화는가히새로운세상을예고한다해도과언이아니다. 기업의사결정의혁신과신상품개발프로세스의단축은물론사회적으로는유전자분석을통한개인별맞춤진단은의료보험체계의근본변화를가져올것이다. 보안상으로도실시간이미지처리를통한화상인식이이미실현되었고각종과학기술의변화는이제막시작고있다. 요컨대, 빅데이터를통한처리시간의단축, 비용의저렴화, 비정형데이터분석의실현등은단순히데이터 처리성능의개선이라는상대적, 산술적차원을넘어서서과거에생각지못하던것들을가능하게하고기존 전산의패러다임을바꾸어마침내사회적생활양식에까지영향주게된것이다.
2. 슈퍼컴퓨팅기술과분산컴퓨팅기술 (1) 슈퍼컴퓨팅 (HPC ) 기술 가. HPC 와분산컴퓨팅 흔히빅데이터라고하면갑자기새로운기술이탄생한것처럼생각하기쉽지만실제로는그동안지속적으로발전, 축적된기술의재탄생으로보는것이옳을것이다. 그중하나가슈퍼컴퓨터즉, HPC (High Performance Computing) 이다. 미국 CDC 의 Seymour Cray 가 1960 년대에소개한슈퍼컴퓨터는발전을거듭하여 20 세기에는초병렬슈퍼컴퓨터 (MPP: massively parallel supercomputer) 로거듭나게되었다. 여기서 MPP 란수천 ~ 수만개의프로세서를장착한대규모병렬컴퓨터를말하며 PC 에서는처리하거나분석할엄두를내지못하던것들도슈퍼컴퓨터에서는가능하여서많은분석업무와시뮬레이션등에이용되고있다. 슈퍼컴퓨팅은다음과같은형태로발전해왔다. 컴퓨터클러스터의구축 : 여러대의컴퓨터를밀결합 (tightly-coupled) 하여하나의클러스터를구축 MPP (Massively Parallel Processing) 기술 : 여러컴퓨터를느슨하게결합 (loosely-coupled) 해서성능을확대 그리드컴퓨팅 (Grid Computing): 여러대의원격지컴퓨터를연결한대규모분산형컴퓨팅그리고대표적인 HPC 구현방법으로다음의 2 가지를들수있는데이들모두가빅데이터기술의발전에직접적인영향을주었다. 병렬처리 (Parallel Computing) 기술 분산컴퓨팅 (Distributed Computing) 기술 한편슈퍼컴퓨터가가격도비싸지만그성능을제대로활용하기위해서는프로그래밍상의부가적작업이필요하다는점을간과할수없다. 즉, 슈퍼컴퓨터에서의프로그램개발을위해서는분산프로세싱을위한 MPI(Message Passing Interface) 나 PVM(Parallel Virtual Machine) 등과같은라이브러리를이용하여코딩하거나 Beowulf 와같은오픈소스솔루션을이용해야한다. 클러스터내의노드수만큼작업을분할하고이들상호간에메시지를전달하는방식으로병렬처리를진행시켜야하기때문이다.
뒤에서보듯빅데이터는기존의 HPC 의또다른모습이며특수용도에국한되었던슈퍼컴퓨터가대중화되어가는과정으로도볼수있겠다. 구체적으로다음의슈퍼컴퓨터요소기술이빅데이터에적용되었다. 나. 슈퍼컴퓨터요소기술의응용과빅데이터 슈퍼컴퓨터가빅데이터처리기술에기여한대표적인것은다음과같다. 데이터의획득과집적 (Data Aggregation) 데이터의규모가커지면한대의컴퓨터로저장하거나관리하기가힘들어지므로여러대로나누어이용한다. 빅데이터의대표격인 Hadoop에서는 HDFS라는독자적인분산파일시스템을기본으로하되 Lustre파일시스템과같은기존의고성능병렬파일시스템도손쉽게적용할수있게설계되었다. 데이터분석 (Data Analytics) 슈퍼컴퓨터에서수리연산중심의고급분석모델링기법이적용되어왔는데이들이론과분석모델이빅데이터분석작업의초석이되었다. 데이터시각화 (Data Visualization) 복잡한분석모델과대량의분석결과는전문가이외에이해하기가힘들었다. 따라서시각적표현특히동적표현 (Dynamic visualization) 을통해복잡한데이터구조체와이에대한수식연산의다차원결과를인간이이해하기쉽게시각화하는노력이있었고이또한빅데이터에그대로적용되었다. (2) 분산컴퓨팅과분산파일시스템 가. 분산컴퓨팅 분산컴퓨팅 (Distributed Computing) 이란여러대의컴퓨터를연결하여상호협력하게함으로써컴퓨팅의성능과효율을높이는것을말하는데넓은의미의분산컴퓨팅에는여러개의컴퓨팅자원을하나의시스템안에밀결합하여연결한병렬컴퓨팅까지포함시키기도한다. 분산컴퓨팅의기본적인목적은성능확대 (scalability) 와고가용성 (High Availability) 에있다하겠다. 우선컴퓨터의성능을확대시키기위한방식에는수직적성능확대 (Vertical scalability) 와수평적성능확대 (Horizontal scalability) 의 2 가지가있다. 수직적성능확대수직적확대는다음방식으로컴퓨터의성능을높히는것을말한다. 연산능력이보다강한 CPU로업그레이드 메모리, 하드디스크또는하드디스크컨트롤러 (HDC) 등을증설하거나고성능의것으로교체 통신연결을높은대역의통신회선으로업그레이드 I/O 측면에서 Non-blocking I/O와비동기적 I/O를적극도입 병렬프로그래밍모델의재설계 ( 예 : 메시지전달방식의개선 (MPI: Message Passing Interface), blocking/buffering 등 )
Event처리성능개선을위한제반조치수직적확대는 Scale-up 으로표현되며일단 HPC 에맞도록프로그램이개발되기만하면이후부터는시스템업그레이드시에도변경없이적용할수있는장점이있다. 반면컴퓨터의사양이높아질수록비용이기하급수적으로높아지게된다는단점이있다. 수평적성능확대반면수평적성능확대는다음방법으로컴퓨팅성능을높인다. 컴퓨터 (Node) 의추가 기능상 Peer-to-Peer모델과 Master-Slave 모델등의적용. 수평적성능확대를 Scale-out 으로표현하는데무엇보다기존투자를보호하고점진적인성능개선을추구할수있다는장점이있다. 예컨대 2 배의성능이필요하면여기에동일성능컴퓨터를몇대추가장착하는방식으로해결하는것이다. 고가용성의추구분산컴퓨팅을통한고가용성의추구는다음과같은방법을동원한다. 장애극복을위한 2중화와 Failover 기능추가및로드밸런싱 주요데이터의복제본을통한예방 나. 분산파일시스템 파일시스템이란데이터를물리매체에효율적으로저장, 관리하기위해만들어진유틸리티소프트웨어로서보통파일단위로관리한다. ( 반면에하위의물리매체에서는보통블록 (block) 단위로저장및전송한다. ) 이러한파일시스템은컴퓨터개발초기부터운영체제의일환으로발전해왔으며오늘날에도운영체제의연장선상에서지속적으로발전하고있다. 분산파일시스템은분산환경에서여러대의컴퓨터가파일시스템을함께이용할수있도록하는데초점이맞추어져있다. 즉, 다수사용자가원격의파일을이용할때불편을느끼지않도록하기위한각종투명성 (transparency) 의개념이핵심적요소가되고여기에복제 ( 데이터의복제및동기화등 ) 및캐싱 (caching) 기술을통해안정성과성능개선을도모하였다. 한편파일시스템에있어서도분산컴퓨팅에서와마찬가지로수평적및수직적확장방식이존재하는데최근에는이것이가상스토리지개념으로까지발전하였다. 분산파일시스템의대표적인것은다음과같다. NFS (Network File System) 1980년대초에개발된최초의분산파일시스템프로토콜로서네트워크드라이브를로컬컴퓨터의디렉토리로 mount하여사용하는방식이다. Lustre 병렬형분산파일시스템으로서대규모클러스터컴퓨팅에서주로이용되고있으며 GPL v2 라이센스에따른오픈소스이다. Luster( 러스터 라고읽는다 ) 는 Linux와 cluster를합성시킨명칭이며오늘날대부분의슈퍼컴퓨터에서사용중이다. 마이크로소프트의 DFS (Distributed File System) 마이크로소프트가 SMB를기반으로재구축한분
산파일시스템이다. GFS (Google File System) GFS 는 Google 이개발한독자적인분산파일시스템이다. ( 오픈소스가 아님 ). 이하에서우리는 GFS 에대해살펴본다. 빅데이터기술의기반이되기때문이다. GFS Google 은애당초부터검색포털로사업을시작하였으므로대규모데이터처리가필연적이었다. 또한벤처로시작한 Google 은저가 PC 를연결하는 scale-out 방식을채택했기때문에컴퓨터의하드웨어장애가불가피하였다. 특히수만대의컴퓨터로구성된대규모클러스터에서는개별컴퓨터의장애는이미예정된것이었고따라서개발당시부터다음과같은요구사항이설정되었다. 2 컴퓨터자체의장애대책과이를지원하는파일시스템의개선 대용량파일의지원할것. 특히웹페이지등의텍스트정보및이미지데이터와같은비구조적이고대량의데이터에대한효율적관리가용이할것. Write-once, read-many 및고성능파일추가 (Append) 기능 대규모의 streaming 기능 ( 특히 streaming read 작업 ) 3 이들요구사항을해결하기위해다음의설계상의원칙이채택되었다. 고정길이의파일단위 (64MB) 파일복제본 (replicate) 의적극적활용 Master-Slave 방식을통해한대의마스터컴퓨터가전체의메타데이터를관리한다. 데이터 caching기능은사용하지않는다. 파일시스템관련한 class의상속체계를정형화함으로써 snapshot, append 등의 custom API 개발을손쉽게하였다. 아래그림은 Google 에서발표한 GFS 논문 4 에실제수록된것으로서 GFS 의운영원리를잘보여주고있다. 2 실제로 Google 데이터센터의서버는대부분 CPU 당 4 core 미만이고 GPU 는장착되어있지않으며서버당메모리크기도 그리크지않다고한다. 또한 NAS 를거의사용하지않고서버들은일반 Ethernet 스위치로연결되어있다고한다. 3 Stream 에대해서는뒷부분 (III. 분석기법 3. 주요분석기법 (9) 스트림데이터 ) 에서자세히살펴봄. 4 http://research.google.com/archive/gfs-sosp2003.pdf
뒤에보듯이이러한 GFS 의기술은상당부분 Hadoop 파일시스템에적용되어빅데이터기술의근간이 되었다.
3. BI 와데이터베이스 (1) BI (Business Intelligence) 가. 개요 BI 도빅데이터발전에중요한역할을하였다. 원래 BI 라는개념이출현하기이전에도 DSS (Decision Support System) 라는이름으로의사결정에서컴퓨터의지원을받고자하는연구가있었다. 주로중간관리자및최고경영자의전략의사결정에초점을맞추었던것으로서이것이이후 BI 로발전하였다 5. BI 를다음과같이분류할수있다. 구성솔루션설명 전략차원의 BI 분석차원의 BI 기존시스템의확장 BI 운영을위한인프라정보전달용 BI BSC VBM ABC OLAP ERP, CRM ETL DW Portal Balanced Scorecard. 균형성과관리. 조직의비전과전략목표실현을위해 4 가지 ( 재무, 고객, 내부프로세스, 학습과성장 ) 관점의성과지표를도출하여단기적성격의재무목표가치와장기적목표가치들간의조화를추구하는것. Value-based Management. 가치창조경영. 의사결정의기준을회계상매출, 이익중심에서벗어나기업가치중심으로자본수익률 (ROIC) 을사업평가의핵심기준으로삼는관리기법을말한다. Activity Based Costing. 활동기준원가계산. 간접비를합리적기준에서직접비로전환함으로써투입자원이제품또는서비스로변환되는과정을밝히는원가계산방식. On-line Analytical Processing. 다양한각도에서직접대화식으로정보를분석하는과정을말한다 ERP, CRM, SCM (Supply Chain Management) 등의솔루션이자신의기능을확장하여 BI 기능을제공하는것 Extraction-Translation-Loading. 기업의각종전산시스템에서데이터를추출하여정제 / 변환후데이터웨어하우스에적재하는것. Data Warehouse. 다양한운영시스템에서추출, 변환한후이를통합한데이터저장소 (repository) 를말한다포털. 인터넷접속시나타나는웹사이트라는의미로이용자가필요로하는다양한서비스를종합적으로모아놓은곳 5 1989 년에 Gartner 의 H. Dresner 가여러관련개념을포괄하는용어로 "business intelligence" 라는용어를제안함.
BI 는다양한하위개념을가지는넓은개념이지만여기서우리가특히빅데이터와관련하여주목할것은데이터웨어하우스와 OLAP 이다. 나. DW/OLAP 과빅데이터분석 (Analytics) OLAP (Online Analytical Processing) 은 OLTP 에대응되는개념으로서 OLTP 가일상적 ( 즉, 반복되는 ) 거래의처리에대한것이라면 OLAP 은내외부의데이터를대상으로각종분석작업을해서원하는답을얻어내는것이다. 즉, 각종기법을이용해서정보를다양한각도에서분석하고자하는것이다. OLTP OLAP 대표적기능기간업무 (Operational) 시스템전사적 Data Warehouse 와부문별 Data Mart 데이터원천거래데이터중심다양한시스템에서추출, 변환 목적거래지원의사결정 데이터의특징데이터의삽입과수정질의 (Query) 업무프로세스상의세부사항 (snapshot) 최종사용자에의한짧고신속한수정및갱신표준화되고상대적으로단순한질의 여러측면이종합된다차원성 (Multidimensional) 상대적으로긴시간이소요되는 batch 성수정작업모델링이수반되는상대적으로복잡한질의 처리속도통상매우빠른응답성능개선을위해서는많은준비및처리시간이 소요. ( 수개월 ~ 수주일의준비가필요 ) 데이터크기 비교적데이터크기가비교적적음 ( 과거데이터는 archive) 통계작업등을위해많은양의데이터를다루는 경우가대부분 DB 설계수많은 DB 테이블을정규화다차원모델링통한 cube 설계 백업과복원 실시간데이터처리를위해백업이 필수 정기적백업대신해당데이터소스의재적재를 실시하기도함. 데이터웨어하우스 6 는분석을위해모든데이터를한곳에모아놓은것으로서그때의데이터베이스는 OLTP 의그것과는성격을달리하게된다. (OLAP 에서는다차원분석을위한 Cube 설계를하는반면 OLTP 에서는 DB 테이블의정규화를주된작업으로한다.) 6 DW 에대하여는뒤의 V. 빅데이터적용방법론 Hadoop 과 DW 에서자세히살펴본다.
뒤에보듯빅데이터가당초에는검색시스템과관련하여시작되었지만이후의발전과정및주된활용에는 BI 와밀접한관련을가지게되었다. 특히이러한현상은빅데이터를구축한이후의분석단계에서두드러진다. 빅데이터에 DW/OLAP 의경험이그대로반영되었으면서도또한각자독자적특징을가지는데아래에서빅데이터와 DW 를비교하였다. 데이터의특징데이터모델 Data Warehouse 구조적 (atomic, structured) 데이터 Cube 설계 = Fact 테이블 + Dimension 테이블 빅데이터비구조적데이터또는 semi-structure Bulk 데이터형태 (key, value) 형태로단순화하여대상데이터영역을확장 특기사항 빅데이터의영역이급속히확장하여기존 DW 의영역으로급속히밀어들어가는현상을보임 (2) 대규모데이터베이스와 NoSQL DB 가. 대규모데이터베이스 (Large Database) 본서의주제가빅데이터라면빅데이터베이스도존재하는가? 오늘날 Small database 와 big database 라는것을따로구별하지는않는다. 그러나기존데이터베이스보다훨씬큰규모를대상으로한대형의데이터베이스영역이존재하는것은사실이다. 소형데이터베이스증형데이터베이스대형데이터베이스 메인메모리에서만운영한대의서버에서운영여러대서버에서운영 DBA 없이사용 1~2 명의 DBA 여러사람의 DBA 10 만개이하의 record 10 만개 ~1000 만개의레코드 1000 만개 ~ 수십억개의레코드 데이터 <10 GB 이하 10GB ~ 40GB > 40GB No Partitions 최소한의 Partitioning 대규모의분할처리 7 7 샤딩 (Sharding) 은데이터베이스를여러개의 DB 서버로분할하여분산처리하는기법이다. 구체적분할기법은다음과 같이다양하다.
대규모데이터베이스에서는무엇보다성능이슈가가장크며이를위해대규모의분산클러스터환경의구축과함께특별한형태의 index 관리기술이동원한다. 심할경우에는관계형자체를포기하고데이터간의 consistency 모델을훨씬완화함으로써앞서언급한수평적확장과고가용성을추구하기도한다. 최근특화된대형데이터베이스로서관심을모으고있는것은다음과같다. HBase Cassandra Vertica CloudTran HyperTable 장점 Key 기반 Key 기반 SQL 기반 OLTP 특화속도가매우 NoSQL NoSQL 빠름 단점어렵다, 어렵다, 특정업체 특정업체 아직초기 Tool 부족 Tool 부족 기술 귀속기술 특기 사항 오픈소스오픈소스상용 (HP) 상용오픈소스 이러한빅데이터베이스의새로운기류를총괄적으로나타내는개념은 NoSQL 데이터베이스라하겠다. 나. NoSQL DBMS 빅데이터에서는비정형데이터가큰비중을차지하기때문에정형화된 (atomic) 데이터를중심으로한기존의관계형데이터베이스는적합하지않은경우가많다. 이에대해여러대안이제시되었고그중에서도 NoSQL 데이터베이스가큰반향을얻고있다. NoSQL 데이터베이스는대부분 Key 와이에대응되는 Value 형태로 즉, (Key, Value) 의 pair 로 데이터를관리한다는특징을가진다. key-value pair란? key-value pair (KVP) 란서로연관성을가진 2 개데이터로이루어진집합으로서이때 key 는고유한값을가지는식별자이고 value 는 key 에의해식별된데이터또는그에대한주소값을말한다. 예컨대 key 가이름 (name) 이라면 value 는그이름에해당되는내용물인것이다 방법설명특징 Vertical Partitioning 영역 (Range) 기반 Partitioning Key 또는 Hash 기반의 Partitioning 테이블별로서버를분할하는방식 Table 크기가커질때서버를분리하는방식 Hash 함수의계산값에따라서버를선정 구현이간단하고, 전체시스템에큰변화가필요없으나데이터가거대해지면추가샤딩이필요데이터를분할하는방법이예측가능해야함 Hash 함수의선정이중요함
Key-value pair 는흔히참조표 (lookup table), 해쉬테이블 (hash table) 등을통해구현되는데넓게 보면프로그램상의모든변수와변수값의지정도일종의 key-value pair 라고할수있을것이다. 예를들어다음과같이기술된상황을가정해보자. key country city year value 대한민국서울 2013 년 구체적표기방법은솔루션에따라다르지만 MongoDB 및 Python 의경우다음과같이표현한다. { "country" : " 대한민국 ", "city" : " 서울 ", "year" : 2013 } Java 의경우여러가지방법이있으나대표적인것은 Map 을이용하는것이다. 즉, Map 을실행시킨 HashMap ( 비동기화 ) 과 HashTable ( 동기화 ) 를이용하면된다. 예컨대다음과같이하면된다. Map map = new HashMap(); map.put("country", " 대한민국 "); map.put("city", " 서울 "); map.put("year", 2013); 해쉬테이블 (hash table) 한편 (Key, Value) pair 의동작원리를이해하기위해서해쉬테이블을이해하는것도중요하다. 이러한 해쉬테이블의동작원리가빅데이터의 (key, value) pair 의내부동작원리에그대로구현되기때문이다. 우선해쉬테이블이란 key 를효율적으로저장하고관리하기위해만들어진일종의참조표 (lookup table) 이다. Hash 테이블은해싱함수에의해만들어지며이함수에의해 key 를소위 hash bucket 에저장한다. 이때 bucket 이란 key value pair 의목록이다. 사용자가특정 key 로이에해당하는 value 를찾으려할때 key 를가지고 bucket 을뒤져서해당 key-value pair 를찾게된다. 여러개의 key 가하나의 bucket 에해당될수도있으므로 hash 테이블설계의목적은최대한골고루 key-value pair 를분배하는것이다.
NoSQL DBMS 는대용량의데이터처리및비정형의데이터베이스에특히적합하며프로그래밍도용이하고성능또한탁월하다. 이처럼 SQL 이외의방식으로데이터를조회 (Query) 한다는의미로이름붙여진 NoSQL 은최근기존의관계형데이터베이스의 SQL 까지도포함하는개념으로확장되면서 Not Only SQL 로확장해석하게되었다. NoSQL 데이터베이스의 4가지종류구체적구현방식에따라다음과같이분류할수있다. key-value store 모델 : key/value lookup 방식으로데이터를관리하는데 Amazon의 Dynamo가대표적이다. Column Families: Google BigTable 논문에서제시된것으로서각각의 key를여러개의 attribute (column) 에연결시킴으로써 column은일종의 hybrid row/column을저장하게된다. HBase, Cassandra가대표적예이다. 문서 (Document) 중심데이터베이스 : semi-structured 형태 ( 예를들어 JSON 8 ) 의문서로데이터를저장하는데 CouchDB, MongoDB가이에속한다. 그래프데이터베이스 : 그래프이론에의거하며 Neo4j 등이있다. 빅데이터의대표격인 Hadoop 에서의데이터베이스는 HBase 이며 Google 의 BigTable 을상당부분 모방하였다. 또한 Cassandra 는 HBase 에가장근접한것으로서 BigTable 과 Dynamo 의혼합 솔루션 이라할수있다. (HBase 등의 NoSQL 데이터베이스에대해서도뒤에서설명할예정임 ) 제품별특징을다음표에서정리해보았다. 8 JSON (JavaScript Object Notation) 은사람과컴퓨터가모두이해할수있도록설계된텍스트기반의데이터교환의표준이다. JavaScript 언어의표준에따라제정되었으나다른어떤컴퓨터언어에서도이용이가능하다. 객체를스토리지에저장하거나네트워크상으로전송하도록변형 (serializing) 하는것이용이하고구문도간략해서 XML 을대체하는기술로도인기를얻고있다.
장단점 HBase Cassandra Vertica MongoDB Hyper-Table 장점 Key 기반 Key 기반 Closed- Document- HBase 대용, NoSQL, NoSQL, source, oriented. 모든 오픈소스, 빠름 Cloudera 지원 Amazon SQL 표준, 사용 속성에 full-index 지원 용이, 가상화 제공 도구, 질의어가 다소복잡. 단점 어렵다, tool 어렵다, tool 벤더에의존 Arbitrary 데이터 후발주자. 부족, 단순한 queries 부족, 단순한 queries 타입에는제한적적용 아직검증이완벽하지않음 비고 신규로 설치가 기존 SQL 기반 성숙 대안으로검토하는 적용하면좋은 까다로움. appl. 을 것을권장 솔루션이됨 HDFS 와 확장하는데 독립적, 완전 용이 분산시스템 SQL 과비교 관계형데이터베이스에서는데이터에게 ACID 9 기준을요구하면서주제별로 Table 을만들고이들상호간의관계를 relation 으로규정한다. (RDB 에서의 relational 이란바로이러한테이블상호간의관계를뜻하는것이다.) 그리고이러한 DB 에대한질의어로 SQL 문을이용한다. SQL 이란일종의고급선언문 (high-level declarative language) 으로서구조화된데이터에대해사용자가제시하는질의어로서 10 다음몇가지단계를거쳐처리된다. 9 Atomicity (All or Nothing), Consistency (referential integrity 문제 ), Isolation 및 Durability 를의미하며 transaction 처리시의지침이된다. 10 그러나 SQL 과 Hadoop 은기능상보완적측면이있다. SQL 을 Hadoop 위에서사용하도록하는확장모듈이개발되고있기때문이다.
질의사항수동입력 Query parsing Query 분석 Query 최적화 Query 실행 결과출력 그런데 RDB 가정규성 (normalization) 규약을철저히준수해야했던반면 XML, JSON 같은형태는인위적변형을통해서처리해야했다. 반면빅데이터에서는비정형데이터의비중이높아서관계형 DB 와는다른방식으로데이터를처리해야했다. 즉, 빅데이터에서는데이터의구체적처리방식을프로그램으로작성하고실행한다. 이때데이터를 <key, value> 로표현하고데이터의처리작업의순서역시사용자프로그램에서지정한다. 결국 SQL 에서의질의어해석과실행계획까지사용자 ( 개발자 ) 가직접지시하는것이다. 빅데이터 ( 내지 NoSQL) 은역설적이게도이런점때문에훨씬다양하게데이터를표현할수있으며 concurrency 제어도편리해지고획기적으로성능이개선되었다.
4. Google 과 Apache 프로젝트 (1) Google 빅데이터 역사에서 BC ( 기원전 ) 과 AD ( 기원후 ) 로나누어시대구분하는것에빗대어정보기술발전단계별로시대구분시도가있었다. 즉, 컴퓨터이전 (BC: Before Computer) 과컴퓨터이후 (AC: After Computer) 로나누거나인터넷이전 (BI: Before Internet) 과인터넷이후 (PI: Post Internet) 으로나누기도하였는데. 11 설득력있는설명중하나가 Google 의등장이라할수있겠다. 특히검색회사인 Google 은모든작업에수학이론을깊숙이접목하고웹을대상으로방대한프레임워크를구축하였다. 12 빅데이터역시시작점에는 Google 이자리잡고있다. 서비스초기부터빅데이터에대한연구가있었는데이노력은단지 MapReduce 나 GFS 에그치지않고계속되어방대한프레임워크를구축하였다. 각구성모듈 (stack) 의대략적인내용은다음과같다. GFS: 데이터저장 MapReduce: 데이터처리 MyDQL gateway: 데이터입력 (ingest) BigTable: 대규모데이터제공 Sawzall: 도메인특화언어 (DSL: domain specific language) Evenflow ( 왼쪽 ): 복잡한 workloads의연결 Evenflow ( 가운데 ): 스케쥴링 Dremel ( 오른쪽 ): Columnar storage + 메타데이터 Dremel ( 왼쪽 ): End user의데이터질의 (query) Chubby: 시스템내에서의조정 11 보통과학학술및국방용으로만사용되던인터넷백본망의상용화 ( 보통 1994 년 ) 를기점으로함. 12 한편구글에서는특히검색에서의 PageRank 알고리즘에선형대수이론을이용하였다. 뿐만아니라광고의경매에 Game 이론을그리고 Google Maps 에그래프이론을이용하는등수학을적극활용하였다. 요컨데수학은 Google 의모든제품과 서비스에있어핵심적역할을한다고하겠다.
이러한 Google 의빅데이터관련프레임워크를일종의참조모델로하여다수의유력한인터넷회사역시 각자나름의개발을시작했다. 그리고이들결과물은고스란히오픈소스화하였으며상당수는 Apache 프로젝트로등재되어전세계개발자의적극적인참여를유도하였다. Sqoop는일종의 SQL to Hadoop 으로서 JDBC 데이터베이스를 Hadoop으로 import하는기능을가진다. Cloudera가개발. Pig는 Dataflow 지향의고급언어인 Pig Latin의컴파일러이다. Hive는 SQL기반의데이터웨어하우스로서 Facebook이개발. Oozie는 Hadoop의 job에대한워크플로우 /coordination 서비스소프트웨어로서 Yahoo가개발하였다. 이상을포함한모든소프트웨어의개발은각회사가주도하였지만 Apache 프로젝트에등재한오픈소스소프트웨어라는공통점을가진다. 결과적으로일반인으로서는빅데이터에대한거대한프레임워크를 Apache 오픈소스로서이용하거나참여할수있게된것이다.
(2) Apache 빅데이터프로젝트 빅데이터를효율적으로처리하려는노력은 Hadoop 이전에도있었고현재에도다양한시도가이루어지고있다. 13 그러나이후논의는주로대표적빅데이터프로젝트인 Hadoop 및이와관련된주요 Apache 프로젝트를중심으로진행될예정이다. 다만한가지유념할것은 Hadoop 의 MapReduce, HDFS, HBase 등이중심적위치를차지하기는하지만전체적관점에서는약 20 여개의관련프로젝트가거미줄처럼연결되어있으며지금이순간에도지속적으로새로운프로젝트가제안되거나채택되고있다는점이다. 14 따라서전체적균형을유지하면서 Hadoop 프로젝트를접근하는것이중요하다. Hadoop 을중심으로살펴보면아래그림에서보는바와같이 HDFS 와 MapReduce 를핵심 (core) 으로 하고여기에 HBase, Pig, Hive 등을비롯한수십가지의관련프로젝트가밀접하게연결되어있다. 이제다음장에서이들각각을소개하기로한다. 13 예컨대다음의 Hadoop Fatigue 라는논의를살펴볼것. http://www.bytemining.com/2011/08/hadoop-fatiguealternatives-to-hadoop/ 한편또다른대표적빅데이터프로젝트로 HPCC Systems 를들수있는데 ECL 이라는자체언어기반의프로그래밍모델을통해빅데이터처리를시도하고있다. ( http://hpccsystems.com 참조 ) 14 Apache 프로젝트는심사후 Incubation 프로젝트가되고이후일정한절차를거쳐본프로젝트로등재된다. 최근우리나라개발자가중심이된빅데이터에근거한데이터웨어하우스프로젝트인 tajo 가 incubation 프로젝트로선정된바있다. (http://tajo.incubator.apache.org/ )