티스토리 뷰



위키피디아의 "Commodity Computing(Commodity cluster Computing)"에 대한 정의를 정리해 보면 Commodity Computing은 비싼 고사양의 컴퓨터 대신 공개 표준 기반으로 저렴하면서도 어떤 벤더에서 만들었더라도 큰 차이를 보이지 않는 Commodity Computer들로 이루어진 시스템을 말합니다. 고가, 고사양의 단일 서버를 저가, 저사양인 다수의 서버군으로 대치 시킴으로써 비용을 절감할 뿐만아니라 시스템의 확장성과 안정성을 높이는 시스템을 말합니다. 냉장고로 비유하자면 S사의 냉장고이든 L사의 냉장고이든 아니면 이름없는 중소형 제조사의 냉장고이든 성능상의 큰 차이는 없다는 이야기입니다.


그렇다면 "Commodity DBMS"는 어떤 의미일까? 두가지 측면에서 바라 볼수 있을 것 같습니다. 첫째로는 공개 표준에 기반하여 제작되는 Commodity Computer 처럼 DBMS 표준(SQL)을 수용하면서도 일정한 성능을 보장하는 오픈 소스 DBMS들을 지칭할 수 있습니다. 상용에 뒤지지 않는 성능에 저렴한 도입 비용은 오픈소스 DBMS의 커다란 매력입니다. 엄청난 도입 비용과 매년 지불되는 작지 않은 금액의 유지 보수 비용, 그럼에도 불구하고 썩 만족스럽지 못한 서비스를 제공하는 상용 DBMS와 비교하면 오픈소스 DBMS와 연관된 비용은 조직의 TCO 절감을 위한 핵심 요소 역할을 충분히 감당할만 합니다. 저비용의 오픈 소스 DBMS는 가격적 매력 뿐만아니라 SQL 표준을 수용하고 있다는 측면에서도 매력을 가지고 있습니다. 응용 프로그램에서 사용하고 있는 SQL 문장들이 표준에서 벗어나지 않는 구문들을 적용하고 있다면 응용 프로그램의 수정 없이 환경 설정만으로도 DBMS를 변경할 수 있는 아키텍처를 가질 수도 있습니다. 물론 오픈소스 DBMS간에 SQL 표준의 수용 수준이 제품마다 차이가 있어서 PostgreSQL처럼 버전 상승에 따라 SQL 표준의 진화를 따라잡는 DBMS가 있는 반면 MySQL, CUBRID, Firebird 처럼 성능과 신뢰성을 해치지 않는 범위에서 나름의 로드맵에 따라 기능을 추가하는 경우도 있습니다. 그렇지만 일반적인 개발자들에게 필요한 SQL 구문은 크게 다르지 않다고 해도 무방합니다. 또한, 이러한 차이를 감안하여 자유롭게 DBMS를 사용할 수 있도록 해주는 프레임워크들도 존재하기 때문에 DBMS간의 차이에 부담을 느낄 필요는 없습니다.


Commodity DBMS의 의미를 해석하는 두번째 시각은 일반화된 상품으로써의 DBMS라는 시각입니다. 엔터프라이즈급 상용 DBMS와 오픈소스 DBMS간에 기능이나 성능에 있어 큰 차이가 없고 어떤 DBMS를 사용하더라도 대다수 사용자의 필요를 채울 수 있는 수준이기 때문에 슈퍼에 가서 자신의 취향이나 입맛에 따라 라면을 고르듯 시스템의 필요나 브랜드, 개인적 취향에 따라 어떤 DBMS를 선택하더라도 시스템 적용에는 큰 문제가 없다는 시각입니다. 전체 시스템의 성능은 오로지 DBMS의 성능에 좌우되는 것이 아니라 네트워크, 업무 흐름 설계, 하드웨어 등 다양한 요소가 복합적으로 영향을 주기 때문에 아무리 고가의 엔터프라이즈급 상용 DBMS를 도입하더라도 잘 튜닝한 오픈소스 DBMS만큼의 성능을 내지 못할 수도 있는 것입니다. 이러한 시각은 특정 DBMS에 의존적인 시스템을 탈피하여 기업의 적절한 IT 전략를 구사하도록 도움을 줄 수 있고 후발 DBMS에는 기회가 될 수도 있습니다.

  

냉장고에도 대형, 중형, 소형에 와인 냉장고, 김치 냉장고, 양문형, 업소형등 제작 업체도 다양하고 제품 군도 다양하듯이 DBMS도 용도와 규모에 따라 다양한 제품군과 브랜드가 존재합니다. 어떤 냉장고 제품들이 있는지 많이 접할 수록 자신의 필요에 가장 잘 맞는 것을 선택할 수 있듯이 시장의 DBMS 현황과 종류를 살펴 보는 것은 DBMS의 이해와 어떤 DBMS를 적용할지 결정하는 전략적 판단에 도움을 줄 수 있습니다.



■ 상용 DBMS(국내 DBMS 시장의 90% 이상 점유) 


Commodity DBMS라는 말이 무색하게 실제 업무 현장에서는 메이저 IT 업체의 DBMS 입지가 흔들리지 않고 있습니다. 특정 DBMS를 기반으로 구축한 시스템을 교체하기가 쉽지 않고 업무 담당자와 개발자가 자신에게 익숙한 시스템을 또다시 선택하는 경향이 있기 때문에 후발 DBMS가 자리 잡기란 여간 어려운 일이 아닐 것입니다.

한국 IDC 2010년 자료에 의하면 한국 오라클, 한국 IBM, 한국 마이크로소프트가 아래의 그림 처럼 시장의 90%이상을 과점하고 있는 상황인데 오라클에 대한 국내 업체들의 공격적인 윈백 영업이 있지만 외산 상용 DBMS에 의존성은 여전한 것으로 보입니다.

국내 시장을 과점하고 있는 DBMS 업체들의 주요 DBMS를 살펴보면 아래와 같습니다. 


- Oracle Database 11g

    • 신뢰성이 요구되는 핵심 업무에 많이 적용.
    • Real Application Cluster (RAC)
    • Data Guard for standby database
    • Virtual Private Database
    • Automatic Memory, Storage and Undo Management
    • OLAP, Partitioning, Data Mining
    • Advance Queuing, XML DB, Support for Spatial data
    • Flashback Database, Query, Table and Transaction  
    • Compliance To Core SQL:2003
    • 개발자는 Oracle Database Express Edition 11g를 http://www.oracle.com/technetwork/products/express-edition/downloads/index.html에서 무료로 다운로드 받아 사용 가능.


- IBM DB2

    • 메인프레임부터 리눅스, 윈도우 까지 다양한 플랫폼에서 사용.
    • BLU Acceleration
    • Data Warehouse Analytics
    • High Availability, pureScale
    • NoSQL Support, pureXML
    • Compliance To SQL:2003
    • 오라클과의 SQL 호환성으로 윈백이 용이
    • 개발자는 DB2 Express-C를 http://www-01.ibm.com/software/data/db2/express-c/download.html에서  무료로 다운로드 받아 사용 가능.

 

- Microsoft SQL Server 2012


■ 오픈 소스 DBMS(상용 DBMS를 대체 가능)


오픈 소스 DBMS는 코드가 공개되어 있기 때문에 마음만 먹으면 기능을 추가하거나 변경할 수 있고 혹시 발생할 수 있는 버그를 찾아 직접 손볼 수도 있지만 무엇보다 가장 큰 장점은 도입 비용 및 유지보수 비용 절감과 함께 표준 SQL을 통하여 응용 프로그램 수정을 최소화하면서 DBMS를 변경할 수 있다는 점입니다. 전세계 수많은 웹 사이트에서 사용중일 뿐만아니라 그 적용 영역을 넓혀가고 있어서 이제는 단순한 웹사이트 뿐만아니라 신뢰성이 요구되는 핵심 업무에 까지 적용되고 있는 상황입니다. 

 

초기 MySQL 버전의 경우 트랜잭션 기능이 없는 단순 웹사이트 용 DBMS라는 인식 때문에 오라클 DBMS와 현격한 차이가 있다고 했지만 현재의 MySQL을 포함한 주요 오픈 소스 DBMS들은 DBMS의 핵심 특징인 ACID(A:atomicity, C:consistency, I:isolation, D:durability)를 지원하여 소프트웨어나 하드웨어의 장애시에도 자료가 소실되지 않도록 지원하고 있으며 성능 측면에서도 일부 DBMS는 상용 DBMS를 능가하는 모습을 보이고 있습니다.

 

오픈 소스 DBMS에 대한 열린 시각으로 시스템을 만나보고 기반 지식을 가지고 시스템에 적절한 오픈 소스 DBMS를 선택한다면 더할 나위 없이 좋겠지만 많은 경우는 한번도 손에 잡아보지 못한 DBMS를 자신의 시스템에 적용하기란 쉽지 않은 것이 사실입니다. 오픈 소스 DBMS 진영에서 SaaS(Software as a service)의 형태로 DBMS는 오픈소스로 제공하고 서비스가 필요한 사용자에게 유료로 밀착 서비스를 제공하는 모델을 사용하는 것도 방법이지만 어찌되었든 직접 DBMS를 손에 만져보고 기능을 확인한 다음에 최적의 DBMS를 선택하는 것이 좋을 것입니다.

 

추천할 만한 주요 오픈소스 DBMS들을 살펴보면 아래와 같습니다.


- CUBRID 9.1

    • 국내에서 개발되고 있는 DBMS로 NHN에서 개발 인력을 가지고 지속적으로 발전시키고 있습니다.
    • SaaS 형태로 고객과 밀착 서비스를 제공. 
    • 엔진은 GPL V2라이선스 이고, API와 GUI 도구는 BSD로 유연한 라이선스 구조.
    • http://www.cubrid.org/  윈도우, 리눅스, 맥용을 배포.
    • SQL:1999를 지원하면서 SQL:2003의 Window function 지원
    • High-Availability with two-level auto failover(3-tier architecture)
    • Database sharding
    • API-level load balancing, Query plan caching
    • Horizontal partitioning, Hierarchical queries
    • Built in click-counter, Java stored procedures

 

- MySQL 5.6

    • LAMP 또는 APM 패키지의 한축으로 대표적인 DBMS로 현재는 오라클이 인수한 상태
    • GPL라이선스로 OEM, ISV, VAR은 별도 라이선스 구입.
    • http://dev.mysql.com/downloads/installer/ 에서 다운로드.
    • XAMPP등의 통합 패키지를 통해서 MySQL이 포함되어 있는 것을 다운로드 받는 방법도 있음.
    • SQL:1999 지원
    • Stored procedures(SQL/PSM) and Triggers
    • Query caching, Nested SELECT
    • Replication, Full-text searching
    • MySQL for Excel, MySQL for Visual Studio

 - PostgreSQL 9.2

    • 교과서와 같은 DBMS로 MIT등에서는 DB 강의의 실습 대상으로 PostgreSQL를 사용
    • PostgreSQL License(MIT style, free and open source)
    • http://www.postgresql.org/
    • SQL:2008 지원
    • Stored procedures(PL/pgSQL)
    • MultiVersion Concurrency Control (MVCC)
    • Triggers, Replication
    • Full text search

  

- Firebird

    • 볼랜드 사의 Interbase 6.0코드로 부터 시작한 프로젝트
    • Initial Developer's Public License (IDPL) - MPL의 변형
    • http://www.firebirdsql.org/en/downloads/
    • Stored procedures, Triggers
    • MultiVersion Concurrency Control (MVCC)
    • Careful writes, Incremental backups

 

지금까지는 상용 또는 오픈소스로 배포되는 범용 DBMS 또는 Commodity DBMS를 다루었습니다. 그렇지만 지금까지 다룬 일반적인 DBMS외에도 목적과 용도에 따라 특이한 형태의 DBMS도 존재하는데 대표적으로 임베디드 DBMS, 메인메모리 DBMS등을 예로 들 수 있습니다.



■ 임베디드 DBMS(Embedded)


응용 프로그램에 내장되어 사용자 입장에서는 DBMS의 존재가 보이지 않는 것처럼 동작하는 것으로 별도의 데이터베이스 설정이나, 데이터베이스 관리가 개입되지 않는 것이 특징이라 할 수 있습니다. 저장할 자료가 크지 않거나, 여러 사용자에 대한 동시 서비스 가능성이 적은 사례, 스마트폰이나 태블릿 같은 모바일 기기에서 데이터베이스에 정보 저장이 필요한 경우 등에 적합합니다. 예를들어 주소록 관리 프로그램의 정보 저장이나, 회계 프로그램의 정보 저장등을 검토해 볼 수 있는데 이런 기능들을 SQL을 사용해서 개발하지만 무거운 DB 서비스는 동작하지 않는 형태입니다.


- SQLite3

    • 다른 DBMS와는 달리 별도의 프로세스나 서버로 동작하지 않고 라이브러리 형태로 응용 프로그램에 내장.
    • 안드로이드 OS, 웹브라우저의 로컬 DBMS등 전세계으로 가장 많이 사용하는 DBMS라 할 수 있습니다.
    • 소스는 완전 공개(Public domain)되어 누구나 사용할 수 있으며 개발자는 코드를 다운로드 받아 컴파일해서 사용하거나 미리 컴파일된 라이브러리를 링크해서 사용하면 됩니다.
    • 라이브러리 형태이지만 ACID를 지원하고 표준 SQL을 지원합니다.
    • http://sqlite.org/

 

- SQL Server Compact 4.0

 

- Oracle Berkeley DB

    • SQL을 사용하지 않고 Key-Value로 정보를 저장 및 검색하는 DBMS
    • Sleepycat Software에서 시작했으나 오라클이 인수.
    • http://www.oracle.com/us/products/database/berkeley-db/overview/index.html
    • 속도가 중요한 곳에 적당하다. 오픈소스로 배포하거나 배포하지 않는 곳에 사용하면 문제 없으나 상용 패키지에 포함되는 경우에는 상용 라이선스를 구입해야 합니다.



■ 메인 메모리 DBMS


 빠른 처리 속도를 위하여 주된 데이터 저장소로 디스크 대신 메모리를 사용하는 DBMS로 메모리 가격의 하락과 함께 전원이 나가면 데이터도 소실되는 단점을 최근에는 NAND Flash 기반의 NVDIMM(Non-Volatile DIMM)등으로 해결하면서 더욱 활성화 되고 있습니다. Main Memory DBMS, In Memory DBMS, Memory resident DBMS등으로 불립니다. 메인 메모리 DBMS는 메인 메모리 전용 DBMS 형태와 기존 DBMS에서 메모리 저장소 엔진을 제공하는 형태로 구분할 수 있습니다.

 

- SQL Server 2012

    •   xVelocity 엔진

 

- Oracle TimesTen

    •   TimesTen 단독으로 사용할 수도 있고, 기존 Oracle을 캐시할 수도 있습니다.

 

- MySQL

    •   MEMORY/HEAP Storage engine, 테이블 단위로 지정할 수 있습니다.

 

- ALTIBASE HDB

    •   국내 업체가 개발한 Memory/Disk Hybrid형 상용 DBMS

  

- UnQlite

    • SQL을 사용하지 않는 임베디드 In-Memory DBMS
    • http://unqlite.org/
    • BSD license
    • 라이브러리 형태로 배포

  

- monetdb 5



댓글
댓글쓰기 폼