저자: 이춘식(LG CNS 데이터아키텍처팀)
소프트웨어 공학이 구조적 방법론에서 정보공학 방법론으로, 그리고 다시 객체지향기반의 방법론으로 발전되어 가면서 DBMS도 HDBMS(계층형 DBMS)나 파일 시스템에서 RDBMS(관계형 DBMS), 그리고 다시 OODBMS(객체지향형 DBMS)으로 이동할 걸로 예상하였다. HDBMS에서 RDBMS로 넘어오는 과정은 무척 빠르게 진행되었으나 RDBMS에서 OODBMS로의 전환은 현재 진행되지 않고 있다. 전문가마다 기간의 차이가 있으나 당분간 RDBMS가 계속 시장을 점유할 것으로 전망하고 있다.
[그림-1] DBMS의 발전 동향
대략 1990년 중반기를 전후하여 오픈 시스템인 클라이언트 서버 환경으로 전환되면서 그때까지 활용하였던 파일 시스템과 계층형 데이터베이스가 관계형 데이터베이스로 빠르게 전환되었다. 그리고 2000년 이후에는 클라이언트 서버 환경에서 웹 환경의 시스템으로 시스템의 구성 흐름과 개발 방법론이 바뀌어 적용되는 것이 일반화되었으나 DBMS의 구조는 객체지향형 DBMS로 전환되지 않고 역시 4세대 DBMS인 관계형 DBMS를 사용하고 있다.
객체지향 파라다임이 등장하면서 기존 관계형 DBMS의 공급업체들도 시장을 점유하기 위해 관계형 DBMS에 객체지향의 기능을 지원하는 ORDBMS(객체관계형 DBMS)로 전환하였다. 그러나 C나 코볼(COBOL)과 같은 구조적 개발 언어를 이용하여 시스템을 구성하는 세대에서 C++과 자바(JAVA)와 같은 객체지향 개발 언어로 시스템을 구성하는 것이 일반화된 반면, 데이터베이스는 ORDMS를 많이 사용하지만 기능은 대부분 RDBMS를 사용하고 있는 것이 2000년 초기 정보 기술의 추세다.
객체지향 기반의 데이터베이스는 XML과 지리정보시스템인 GIS 시스템에서 주로 활용되고 있으며 일반적인 기업의 업무를 처리하는 단위에서는 대부분 관계형 데이터베이스를 활용하여 정보 시스템을 구성하고 있다.
국내에서 사용하는 DBMS는 우리가 흔히 알고 있는 오라클, SQL 서버, My SQL을 사용하고 있다. 일반적으로 개인적 학습과 소호몰과 같은 작은 단위에서는 My SQL을 많이 사용하고 학교, 기업, 관공서에서는 대용량 데이터를 처리하기 위한 엔터프라이즈급의 데이터베이스인 오라클, SQL 서버, DB2를 많이 활용하고 있다.
다음은 모건 스텐리에서 조사한 관계형 DBMS의 시장 점유율 현황이다. 2001년 시점을 기준으로 오라클이 58.7%로 가장 많은 시장점유율을 나타내고 있고 다음은 SQL 서버가 31.6%을 점유하고 있다. IBM의 제품군이 DB2와 인포믹스(Informix)을 통합한다면 두 번째다.
[그림-2] RDBMS의 시장 점유율
대부분의 자료에는 My SQL이 관계형 데이터베이스 조사에도 포함되지 않음을 기억할 필요가 있다. 즉 우리가 학습을 할 때 엔터프라이즈급 데이터베이스로 학습을 해야 하는 이유가 여기에 있다.
그럼 어떻게 공부할 것인가?
역시 학습할 때는 가장 대중적이고 활용빈도가 높은 DBMS를 가지고 활용하는 것이 좋다. 오라클이나 SQL 서버는 모두 엔터프라이즈 환경에서 충분히 활용되고 있는 훌륭한 DBMS 다. 이미 시장의 많은 부분은 점유하고 있으며 두 분야를 학습을 한다면 DBMS의 엔진과 관련한 학습은 충분하다.
SQL 서버는 윈도우 NT 기반의 환경에서 많은 시장 점유율을 가지며, 따라서 기업의 구조가 작은 소형에서 중형까지에서 많이 활용한다. 유닉스(UNIX) 환경에서는 안정성이 탁월한 오라클을 사용하며, 주로 중형시장에서 대형 기업에서 활용한다.
SQL 서버는 윈도우 기반에서 관리하고 튜닝하기 때문에 DBMS를 처음 접하는 사람은 오라클에 비해 한층 더 쉽게 관리가 가능하다는 장점이 있으며 오라클의 경우 윈도우 환경과 유닉스 환경 모두 처리가 가능하다는 장점이 있다.
가급적 데이터베이스를 다루는 분야로 진출하기를 원한다면 두 개 모두 학습할 경우 좋은 경험으로 인정받을 수 있다.
학습은 역시 실습을 하면서 접근해야 효과가 있다. 다른 정보 기술 분야도 마찬가지지만 데이터베이스는 이론으로만 학습해서는 절대로 실제 상황에서 활용할 수 없는 경우가 많다. 먼저 분석/설계 부분부터 이해하고 그에 따라 산출된 데이터 모델을 이용하여 데이터베이스를 생성하고 생성된 데이터베이스를 이용하여 자바나 C 코드를 작성하여 프로그래밍해 보는 방법으로 학습하는 것이 좋다.
이때 데이터베이스 관리자(DBA)가 되고픈 사람은 용량에 따라 데이터베이스 객체(테이블, 인덱스, 뷰 등)를 관리하는 분야에서부터 데이터베이스 서버 성능을 튜닝하는 방법과 SQL문을 튜닝하는 분야까지 집중적으로 학습할 필요가 있다. 반면 응용 프로그램 개발에 관심이 많을 경우는 만들어진 데이터베이스에 자바나 C 소스에서 직접 SQL 문을 작성하여 트랜잭션을 발생시켜 데이터베이스의 기동 원리를 파악하는 방법으로 학습을 전개하는 것이 좋다.
역시 최선의 방법은 시나리오를 정하여 업무를 분석하고 설계하여 데이터베이스를 구축해보고 간단한 입력/수정/삭제/조회 화면을 구축해 보는 것이다.