Group B Seminar: No-SQL and Cloud Computing
(사진과 슬라이드 캡쳐는 곧 업데이트 하겠습니다.)
올해 두 번째 B 그룹 세미나는Accenture Technology Lab에 근무하는 위세욱 박사님을 모시고, 최근 클라우드 컴퓨팅 분야에서 뜨거운 주제인 No-SQL 데이터 베이스에 대한 내용을 다루었습니다.
현재 IT 산업은 시장에서의 요구 변화와 기술 발전으로 전통적인 관계 데이터베이스(RDBMS)와 더불어 새로운 데이터 플랫폼을 필요로하고 있습니다. 우선 시장관점에서는 생성되는 데이터의 양이 클라우드의 보급으로 기하급수적으로 증가하고 있고, 이렇게 홍수를 이루는 데이터에서 새로운 가치를 찾아내는 것이 경쟁력에 중요한 변수가 되고 있으며, 다양한 형태의 새로운 가치를 어떻게 만들어 낼 것인가에 대한 요구가 늘어나고 있습니다. 반면, 기술 관점에서는 가상화와 자동화 등 기술이 눈부시게 발전하고 있고, 모든 것이 서비스라는 클라우스 개념이 보편화되고 있으며, 오픈 소스 운동으로 새로운 기술에 접근성이 용이해지고 진입 장벽이 낮아지는 추세로 가고 있습니다.
이런 배경으로 인해 대규모 데이터 처리에 대한 관심과 요구가 증가하고 있습니다. 우선, 위박사님은 여기서 말하는 “big data”에 대해 핵심을 잘 파악한 정의를 인용해 주셨습니다. 즉, 데이터의 크기와 데이터 처리 성능 요구사항이 데이터 관리 혹은 분석 시스템을 구현하는 데 주요한 설계 및 결정 요소로 역할을 하면 그 데이터는 big data이다. 이는 데이터의 양이 절대적인 의미가 아니라 전체 시스템의 처리 용량에 대비한 상대적인 의미라는 것입니다. 현재는 주로 서버에서 빅데이터에 대해서 말을 하지만, 클라이언트에서도 동일한 관점이 적용되면 어떤 모습일까 생각해보게 합니다.
아무튼, 대규모 데이터 처리를 위해 특히 클라우드 분야에서는 1. Hadoop이나 CouchDB 등에서 볼 수 있는 비관계형 분산 저장과 분산 처리 방식, 2. Aster Data 등에서 사용하는 MPP(Massively Parallel Processing)라고 불리는 대규모 병렬 처리 방식, 3. TeraData 등에서 사용하는 최적화된 하드웨어를 통한 데이터 저장 방식, 4. Oracle의 TimesTen과 같은 분산 메모리 프로세싱 방식 등 크게 네 가지 형태로 발전하고 있다고 정리할 수 있습니다. 특히, 이 세미나는 네 가지 발전 형태 중에서 첫번째, 즉, No-SQL 데이터베이스로 대표되는 비관계형 분산 저장과 분산 처리 방식을 중심으로 진행되었습니다.
No-SQL 데이터 베이스는 구성 특성 혹은 최적화된 응용 영역에 따라 크게 Key-value pair store, column-oriented store, document store, 그리고 graph store 등 4가지로 구분할 수 있습니다. Key-value pair store는No-SQL 데이터 베이스 중에서 가장 단순한 형태로 주로 주어진 키를 통해 해당 내용을 신속히 찾기 위해 사용됩니다. 따라서, 데이터도 응용의 요구에 근접한 형태(denormalized form)로 저장될 수 있습니다. 특히, key-value store는 키-값 쌍을 신속하게 접근할 수 있는 기능을 제공하기 때문에 단순하고 적은 오버헤드를 요구하는 응용에 적합합니다. 또한, 키들을 다수의 노드에 분산시켜 저장함으로써 키 검색을 병렬화할 수 있고, 이에 따라 확장성을 제공합니다. 키와 연관되어 있는내용 (value)은 스트링, 리스트, 집합, 객체 등 임의 것이 될 수 있기 때문에 이 내용에 대하여 필터를 하는 등의 연산을 하기는 힘들지만,복잡하지 않은 삽입, 갱신, 삭제 등의 연산은 효율적으로 지원할 수 있다는 장점이 있습니다.
반면, column-oriented store (혹은 BigTable clones)는기존의 관계형 테이터베이스가 행 (row)형태로 데이터를 저장하는 것에 비해, 미리 정해진 구조를 갖는 테이블 대신 확장 가능한 열(column) 형태로 데이터를 저장합니다. 즉,동적으로 여러 열들을 묶어 분산 서버에 관리할 수 있습니다. 이 방식에서는 서로 연관이 있는 (함께 접근되는) 열들을 묶어 관리하기 때문에, 빈번하게 갱신(update) 연산을 하는 응용에 적합합니다. 하지만, 데이터의 구성이 특정 응용에 최적화되기 때문에 데이터의 재사용에는 문제가 있고, 삽입(insert) 연산 시, 즉 row를 추가해야 하는 경우, 여러 열들을 접근해야 하기 때문에 성능이 나빠질 수 있는 단점이 있습니다.
세번째로, document store는 문서나, 멀티미디어 데이터, JSON이나 XML과 같은 객체를 저장하기 때문에 데이터의 형식은 응용의 필요에 의해 최적화될 수 있습니다. 이 방식은 대상이 document이기 때문에 객체 내에서 쉽게 검색을 할 수 있는 기능을 제공합니다. Key-value store에 비해, 대상이 더욱 복잡하기 때문에 복잡한 데이터를 잘 표현하고 질의할 수 있다고 합니다. 특히, document에 다양한 형식의 데이터를 한꺼번에 저장할 수 있고, 많은 관련된정보가 저장되기 때문에 응용이 오프라인으로 동작할 수 있게 하는 장점을 가지고 있습니다.
마지막으로, graph store는 데이터를 테이블 형태가 아니라 그래프 형태로 저장합니다. 전통적인 방식에서 그래프는 대상을 나타내는 노드 테이블과 이 노드 사이의 연결 상태를 나타내는 에지 테이블, 그리고 이 테이블들 사이에 join 연산을 통해 구현할 수 있습니다. 하지만, 최근에 다양한 소셜 네트워크들이 등장함에 따라 이러한 관계를 잘 표현할 필요가 제기되었습니다. 이 graph-store는 화이트보드에 그래프를 그리 듯 연결 관계를 효과적으로 저장할 수 있습니다. 따라서, 탐색 등 다양한 그래프 연산들을 효과적으로 구현할 수 있고, 모델링이나 개발을 용이하게 해 주는 데이터 구조입니다.
결론으로 새롭게 등장하는 데이터 플랫폼은 공통적으로 확장성이 있는 데이터 처리 기법을 제공합니다. 기존의 데이터 처리가 하드웨어에 최적화된 데이터 저장과 처리에 중점을 두고 있다면, No-SQL 기술들은 분산 저장, 분산 처리, 분산 메모리 등을 새로운 기술을 통해 기성 하드웨어와 소프트웨어를 활용한 친환경 컴퓨팅 환경을 추구하고 있다고 할 수 있습니다. 하지만, 이 기술들은 아직 초기 단계라서 교통 정리가 아직 안되어 있고 표준도 없으며 변종도 많아 아직 갈 길이 멀다 결론을 맺으셨습니다.
마지막으로 유용한 정보를 잘 정리하고 친절히 설명해 주신 위세욱 박사님께 감사를 드립니다.






