데이터베이스 관리 시스템 (DBMS)은 업무에서 필요한 방대하고 복잡한 데이터를 효율적으로 관리하여 업무의 효율성을 높인다는 측면에서 모든 산업 영역에서 필수 SW로 사용되고 있다. 그 중요성으로 인하여 70년대부터 상업용 DBMS가 꾸준하게 발전되어 왔고, 그 동안 수 많은 벤더의 부침이 있어 왔지만, 이제는 오라클, IBM, 마이크로소프트 등 실행능력이 뛰어난 대형 벤더를 중심으로 정리가 되었다. 우리나라도 90년대 초반에 ETRI 등 연구소를 중심으로 자체 개발 노력을 하였으나 개발단계부터 고객중심으로 개발하기 보다는 연구소의 완제품을 산업체에 기술이전 하는 방식으로 진행하여 결국 꽃을 피우지 못하고 말았다.
요즈음 데이터베이스 응용 개발자들에게 잘 알려진 DBMS로는 오라클, IBM의 DB2, 마이크로소프트의 SQL서버, 공개 DBMS인 MySQL, 그리고 국산 무료 DBMS인 큐브리드가 있다. 공식적이지는 않지만, 보다 폭넓은 리스트는 데이터베이스 개발자 커뮤니티인 http://database.sarang.net이나 http://dbguide.net에서 찾을 수 있다.
많은 개발자들이 궁금해 하는 것 중 하나는 이들 제품이 서로 어떻게 다른지, 어떻게 바뀌어가고 있는지, 앞으로의 추세는 어떤지 등일 것이다. 이번 블로그에서는 이러한 궁금증을 어느 정도 해소하기 위하여 대표적인 DBMS 몇 개의 예를 들어, 최근 릴리스를 중심으로 어떠한 기능이 추가되어 왔고, 현재 상태는 어떤지를 알아보고자 한다. 결론부터 얘기하면, 이제는 모든 DBMS가 기능 측면에서 대동소이하고, 그 기능이 포화되어 더 이상 기능이 경쟁력이 되지 못한다는 점이다.
기능적인 측면에서 DBMS의 최근 추세를 오라클 10g, SQL서버 2005, 큐브리드 7.0, 그리고 MySQL 5.0을 통하여 알아본다. DB2, 사이베이스 등 타제품들은 추세 측면에서 다를 바 없기 때문에 생략한다.
오라클 10g
오라클 10g는 2004년 1월 최초 릴리스 되었고 2005년 9월 업그레이드가 릴리스 되었다. 2000년 릴리스 된 9i의 후속으로서 3년여 만에 나온 제품이다. 제품의 주제는 그리드(grid) 컴퓨팅이라 할 수 있다. 10g의 ‘g’는 grid를 말한다. 그리드 컴퓨팅은 분야에 따라 다르게 해석할 수 있으나, DBMS 분야에서는 클러스터링을 통하여 DB 요구를 동시에 처리하고, 분산된 DB 자원을 자동으로 통합관리 할 수 있음을 뜻한다. 클러스터링은 9i에서 이미 제공하였고, 10g에서는 저장장치의 자동관리, DB 및 세션 이전 기능이 추가되었다. 10g는 그리드 컴퓨팅 외에 자체튜닝, PL/SQL 확장, 관리 도구 개선 등 많은 개선을 포함하고 있으나, 타제품과의 경쟁력 비교 측면에서 그리드 지원만큼 비중 있는 개선은 아니었다. 오라클 10g에서 추가된 기능에 대한 상세한 정보는 http://download-east.oracle.com/docs/cd/B14117_01/server.101/b10750/chapter1.htm에서 찾을 수 있다.
SQL 서버 2005
마이크로소프트의 SQL 서버 2005는 종래의 발표 계획이 몇 번 지연되다가 작년 말에 릴리스 되었다. 이번 릴리스의 주제는 개발생산성이라 할 수 있다. 제품 기획 때부터 필자는 SQL 서버팀에 근무하고 있었는데, 기획 당시 MVP 등 외부 개발자들을 초대하여 부트캠프를 진행하면서 차기 제품의 경쟁력을 마이크로소프트가 이미 확보한 개발자 친화력으로 보았었다. 저장프로시저를 포함한 모든 DB 프로그래밍 환경을 닷넷과 결합하고, 모든 개발도구를 Visual Studio와 통합시킨 것이 그 대표적인 예이다. 실은, 릴리스의 지연도 바로 Visual Studio (당시 코드명은 Whidbey)와의 통합 때문이었다. 개발생산성 외에 추가된 거의 모든 기능은 오라클의 9i에 어떤 형태로든 이미 제공되고 있었던 것들이다. 몇 가지 예를 들면, 클러스터링, 복제(replication), 분할(partitioning), 보안 등이다. 결국, 닷넷 등 마이크로소프트 프로그래밍 환경과 접목한 것을 제외하고는 오라클의 9i 기술을 따라잡기 한 것으로 볼 수 있다. SQL 서버 2005에 추가된 기능의 상세한 정보는 http://www.microsoft.com/korea/sql/prodinfo/overview/whats-new-in-sqlserver2005.mspx에서 찾을 수 있다.
큐브리드 7.0
국산 DBMS인 큐브리드는 지난 5월 라이센스 무료를 선언하고, 국내 최대 인터넷 포털업체인 NHN과 공동개발 형식으로 2007년 2월 7.0과 2008년 8.0 릴리스를 준비하고 있다. 주요 기능은 NHN의 각종 인터넷 서비스에서 도출되는 DBMS 요구사항이라 할 수 있다. 큐브리드 7.0은 Java에 기반을 둔 저장프로시저, Eclipse Java 개발환경과의 통합, 복제, 분할 등을 포함하고 있고, 특히, 국내환경에 적합한 서비스를 구현하기 위해 장애진단 및 패키징 등이 추가된다. 그러나, 추가되는 모든 주요 기능은 오라클 10g와 SQL 서버 2005에 어떤 형식으로든 이미 지원되고 있는 것들이기 때문에 기능측면에서 타제품과 차별성을 두거나 경쟁력을 가지려는 것은 아니다.
MySQL 5.0
스웨덴의 MySQL AB사는 작년 10월 MySQL 5.0을 출시하였다. 릴리스의 주제는 굳이 표현하면 “따라잡기”라 할 수 있다. 엔터프라이즈용으로 사용하기에 부족한 기능을 따라잡는 노력이었다. 예를 들면, 시스템 정보를 위한 스키마 지원, 저장프로시저, 트리거, 뷰, 분산 트랜잭션 등이다. 현재 베타 상태인 5.1에 클러스터링과 분할이 추가되지만 역시, 오라클, SQL 서버, 그리고 몇 가지는 큐브리드 등에서도 대부분 아주 오래 전부터 지원해온 기능들로서 기능의 경쟁력으로 볼 수 있는 것은 아니다. MySQL 5.0에 추가된 기능의 상세한 정보는 http://www.mysql.com/products/database/mysql/에서 확인할 수 있다.
여기까지는 각 제품의 최근 릴리스에서 추가된 기능을 통하여 현재 추세를 살펴 보았다. 결론은 의외로 간단하다. 오라클 10g의 그리드 컴퓨팅 지원을 제외한 타제품의 기능 추가는 대체적으로 이미 오라클 9i에 있었던 기능을 따라 잡는 방향이었다. 따라 잡기 위해 추가된 기능의 종류도 제품에 관계없이 복제, 클러스터링, 분할, 저장프로시저 등 대체로 유사하다. 그렇다고, 오라클 10g에 타제품이 앞으로 따라 잡아야 할 기능이 많이 남은 것은 아니다. 상세한 부분에서는 어느 정도 차이는 있으나, 그리드 컴퓨팅을 제외한 모든 기능은 크게 다르지 않다. 아래 표는 각 제품이 현재 지원하고 있는 모든 기능을 몇 가지 큰 항목으로 나누어 정리한 것이다.
기능 구분 | Oracle 10g | SQL 서버 2005 | CUBRID 7.0 | MySQL 5.0 |
SQL | SQL-92+ | SQL-92+ | SQL-92+ | SQL-92+ |
자료형 | Alphanumeric, BLOB, CLOB | Alphanumeric, BLOB, CLOB | Alphanumeric, BLOB, CLOB, multimedia | Alphanumeric, BLOB, CLOB |
모델링 | RDB (Table, column, RI) | RDB (Table, column, RI) | RDB (Table, column), ODB (Class, method, nested column, set) | RDB (Table, column, RI) |
개체 | Table, view, synonym, trigger | Table, view, synonym trigger | Table, view, trigger | Table, view, trigger |
API | ODBC, JDBC, OLEDB, Native API, PHP, etc. | ODBC, JDBC, OLEDB, Native API, PHP, etc. | ODBC, JDBC, OLEDB, Native API, PHP, etc. | ODBC, JDBC, OLEDB, Native API, PHP, etc. |
저장프로시저 | PL/SQL, Java SP | T-SQL, .NET SP | Java SP, method | DB2 SP |
트랜잰션 | Record locking, Online incremental backup/recovery, XA | Record locking, Online incremental backup/recovery, XA | Record locking, Online incremental backup/recovery, XA | Record locking, Online full backup/recovery, XA |
보안 | Authorization, Data encryp., secure net. | Authorization, Data encryp., secure net., PKI login | Authorization, Data encryp., PKI login | Authorization, Data encrypt., secure net. |
가용성 | Grid, HA, Replication, Mirroring | Clustering, HA, Replication, Mirroring | HA, Replication | HA, Replication |
기타 | Partition, DB-Link, flashback, OLAP, DB Transport | Partition, Link server, OLAP, notification | Partition, MDBC, feedback, multimedia framework | |
SQL 지원은 모두 SQL-92 표준을 지원하되, 제품마다 약간의 확장된 기능을 포함하고 있다. 오라클과 SQL 서버의 경우 SQL3 표준의 일부와 OLAP 기능이 보강되었고, 큐브리드의 경우에는 SQL3 표준과 객체지향 기능이 확장되어 있다. 자료형은 숫자/문자, BLOB, CLOB 등이 모두 같으나, 큐브리드의 경우에는 이 외에도 멀티미디어 프레임워크를 통하여 이미지/비디오 등 다양한 멀티미디어 자료형을 지원한다. 모델링의 경우에도 큐브리드가 객체지향DB (ODB) 기능을 추가적으로 지원하는 것을 제외하고는 모두 같은 형태의 RDB 기능을 지원한다. 개체의 경우 MySQL 5.0에서 뷰와 트리거가 포함되면서 제품간 차이가 크게 좁혀졌다.
응용개발 API는 제품별 독자적인 API (Native API)를 제외하고는 모두 같은 종류의 표준 API 집합을 지원하고 있다. 저장프로시저의 경우에는 표준이 없다 보니 제품마다 다른 방식을 지원하고 있으나, 그 표현 능력 측면에서는 모두 같다고 볼 수 있다. 참고로, 오라클과 큐브리드의 Java SP와 SQL 서버의 닷넷(.NET) SP는 범용 프로그래밍 언어를 그대로 사용하여 저장프로시저를 개발하기 때문에 제품간 표준기술로 적용할 수 있고, DB 내부에서 수행할 수 있을 뿐만 아니라 필요에 따라 변경 없이 클라이언트에서 수행할 수 있는 유연성이 있어 크게 확산될 전망이다.
엔터프라이즈 응용에 꼭 필요한 트랜잭션, 보안, 가용성 측면에서 볼 때, 오라클, SQL 서버, 큐브리드, MySQL 모두 대동소이하나, 가용성 측면에서 오라클의 그리드 환경 지원이 앞서가고 있고, 큐브리드와 MySQL은 클러스터링 지원을 따라 잡아야 할 것이다.

