|
"RDBMS 약사"는 예전에 SQL에 관한 책을 초기 구상했을때, 작성했던 내용이다.
하지만 역사라는 특성상 정확히 알기 어려운 부분이라, 다른 여러책을 참고하여 작성하였다.
따라서 기술한 내용이 독창적이라기 보다는 짜집기에 가까워 최종적으로 책의 본문에서는 제외하였다.
여러 책의 내용을 종합한 것임을 염두에 두고, 단순한 가십거리로 읽히길 바란다.
RDBMS 약사(略史)
역사는 항상 다양하고 우연적인 사건들, 그 분야의 발전과정과 그에 동반한 약점 등을 다룬다. 따라서 한 분야의 역사를 아는 것은 그에 대한 약간의 철학과 인과관계를 이해할 수 있게 한다. 여기에서의 RDBMS의 역사는 에피소드를 중심으로 하여, SQL 학습의 흥미를 주는 목적으로 기술했다.
(1) 관계형 데이터베이스의 태동
1960, 70년대 초기에 제시된 데이터베이스 모델은 계층적 모델(Hierarchical Model)과 네트워크 모델(Network Model)이었다. 그러나 계층적 모델과 네트워크 모델로 구성된 초기의 데이터베이스 시스템은 이를 사용하기 위하여 프로그래머들이 매우 낮은 단계의 구현에 대해 막대한 지식을 익히고 질의를 절차적으로 작성해야 하는 어려움이 있었으며, 데이터 구조의 변경에도 매우 취약하였다.
1970년 6월 IBM연구소의 에드가 F 코드(Edgar F. Codd)박사는 '대량 공유 데이터뱅크를 위한 데이터의 관계형 모델(Relational Model of Data For Large Share Data Bank)'이라는 논문을 발표하여 최초로 관계형 모델(Relational Model)을 제시하였다. 수학자였던 그는 데이터의 중복성, 취약한 데이터의 무결성, 그리고 물리적 구현에 대한 데이터베이스 구조의 지나친 의존성과 같은 문제들을 해결하기 위해 수학의 특정 분야를 적용할 수 있으리라 믿었고, 집합이론과 관계대수에 근거하여 사용자들이 비교적 이해하기 쉬운 모델을 제시하였다. 당시로는 획기적인 모델이었으며 많은 사람들의 주목을 받았으나, 그는 논문에서 관계형 모델을 적용할 수 있다는 논의는 했지만 실제로 어떻게 작용하리라는 것은 없는 아직은 이론에 불과하였다. 이제 누군가가 실제로 관계형 데이터베이스를 개발해야만 했다. 늘 그랬듯이 그 것은 IBM의 몫이었고, 그들은 코드의 이론에 바탕을 둔 관계형 데이터베이스의 실효성을 연구하기 시작했다.
1970년대 중반 IBM은 'System R'프로젝트를 시작했다. 'R'은 예상대로 Relational(관계형)에서 따왔다. 그들의 작업 중에는 데이터베이스의 질의에 쓰일 컴퓨터언어를 만드는 것도 포함되어 있었다. 그들은 팀원 중의 한 명인 돈 챔벌린(Don Chamberlin)과 몇 명이 몇 년 전에 만든 'SQUARE'를 바탕으로 영어에 바탕을 둔 간단하고 기능적인 언어를 개발했고, 이름을 '구조적 영어식 질의어(Structured English Query Language : SEQUEL)'이라고 명명했다. 그러나 SEQUEL이 영국항공회사의 등록상표인 것을 알고는 '구조적 질의어(Structured Query Language : SQL)'로 명칭을 변경하였다. SQL은 획기적인 것이었고, 사용자들은 SQL을 통해 관계형 데이터베이스를 제대로 이용할 수 있었다.
그 즈음 버클리의 캘리포니아 주립대학 내 일부의 교수들도 코드의 이론을 바탕으로 관계형 데이터베이스를 연구하고 있었다. 그 프로젝트는 '잉그레스(INGRES)'라 불렸으며, 그들은 'QUEL(Query Language)'라는 질의어를 연구하고 있었다. IBM팀과 버클리팀은 서로가 아이디어를 도용했다고 비난하며 사이가 좋지 않았다. 1976년 IBM은 여러 기술 잡지에 지금까지 연구한 관계형 데이터베이스에 대한 작동원리와 SQL에 대한 상세한 설명을 공개했다. 이후로도 IBM은 연구에 박차를 가하여 이를 보완하였고 1979년 System R 프로젝트를 종료하였으며, 관계형 모델이 상업적 잠재력을 지닌 실용적인 데이터베이스기술이라는 결론을 내렸다. 그러나, 최초의 상업용 관계형 데이터베이스는 IBM도 버클리도 아닌 실리콘밸리의 조그만 개발사에서 만든 '오라클(ORACLE)'이었다. 컴퓨터업계의 빅브러더인 IBM은 기술리더의 자부심으로 자신들의 연구결과를 공개해 관계형 데이터베이스의 개발에 토대를 만들어 주었으나, 정작 자신들은 엄청난 보고체계를 가진 거대한 관료조직이었고, 자신들에게 많은 이익을 남겨주고 있던 '정보관리시스템(Infomateion Management Systme : IMS)'라는 계층형 데이터베이스 제품의 고객을 잃지 않기 위한 내부 저항에 부딪혀 그 동안 축적된 관계형 데이터베이스에 대한 기술을 빠르게 활용하지 못했던 것이다.
(2) 오라클과 래리 엘리슨
현 오라클의 CEO인 래리 엘리슨(Larry Ellison)은 부와 명예에 대한 욕심과 야망이 많은 사람이었다. IBM이 관계형 데이터베이스에 대해 연구를 하고 있던 시절 그는 프로그래머로서, 암펙스(Ampex)를 비롯한 실리콘밸리의 소프트웨어개발사들을 전전하고 있었다. 그러나 나름대로의 소득은 있었다. 이전에 다니던 회사에서 후에 오라클 제국을 건설할 로버트 마이너(Robert N. Minor)를 비롯한 몇몇 유능하고 탁월한 프로그래머들을 만날 수 있었던 것이었다.
1977년 초여름, 엘리슨은 그들과 '소프트웨어개발연구회사(Software Develolment Laboratories : SDL)'란 회사를 창립하였다. SDL은 기업에서 수주한 일을 맡아서 개발해주는 일을 하고 있으면서, 점차 상업용 제품을 만들어 판매해야 한다는 것을 깨닫고 있었다. 그들에게 IBM의 RDB연구결과는 고무적인 것이었다. 엘리슨은 IBM과 똑같은 제품을 만들면 실패할 수 없다는 것을 알고 있었다. 바로 RDBMS였다.
그로부터 몇 개월 뒤 그들은 RDBMS의 초기버전을 만들어냈다. 그리고는 과거 암펙스 시절 CIA와 진행했던 실패한 프로젝트의 이름을 재현하여 '오라클(ORACLE)'-신탁이라는 의미로 지혜를 상징-이라고 불렀다. 초기 오라클은 형편이 없어서 소량의 데이터를 조회할 수 있는 기능밖에 없었다. 그리고는 오라클은 발전해갔고, 2년이 지나지 않아 컴퓨터업계를 강타했다. 오라클은 느리고 오작동도 빈번하였지만, 당시의 고객들은 RDBMS의 아이디어를 구매한 것이었고 RDBMS가 앞으로의 대세로 발전해 갈 것을 알았던 것이다. 당시에는 오라클로 인해 회사의 중요한 데이터를 잃어 버렸었을 때도 환불을 요구하기는 커녕, 복구할 방법이 없는지 문의하는 전화가 많았다고 엘리슨은 주장한다. 이 즈음 SDL을 회사명을 관계형 소프트웨어주식회사(Relational Software INC : RSI)로 변경하였다. 이 후 이 회사가 오라클이 되기까지는 몇 년이 더 걸린다.
오라클의 장점은 다양한 플랫폼으로의 이식성이었다. 애초부터 이식가능한 소프트웨어를 만들었다기 보다는 다양한 플랫폼에서 사용하고자 하는 고객의 요구에 부응하다 보니 이식성이 좋은 소프트웨어가 되어있었던 것이다. 어찌 되었건 간에 이는 호환성, 연결성과 더불어 오라클의 훌륭한 마케팅수단이었다.
1980년 버클리팀의 마이클 스톤브레이커(Michael StoneBraker)를 비롯한 몇몇 교수들이 '관계형기술주식회사(Relational Technology INC : RTI)'를 설립하면서 학교를 떠났고, 이들은 1981년 QUEL기반의 첫 번째 상용 관계형 데이터베이스인 INGRES를 출시하게 된다. IBM도 1981년 'SQL/Data System(SQL/DS)'라는 첫 번째 RDBMS제품을 내놓게 되고, 1983년에는 SQL/DS의 새 버전인 'DATABASE 2(DB2)'를 발표하였다.
초기 RDBMS시장에서는 INGRES가 선전을 하였으나, SQL보다 우수하다고 평가 받던 QUEL이 아닌, IBM이 채택한 SQL이 업계 표준이 되면서 점차 ORACLE의 강세가 시작되었다. 또 오라클의 강점은 PC에서 실행 가능하다는 것이었다. 사실 오라클을 PC에 설치해서 할 수 있는 일은 거의 없었지만 저렴한 가격으로 오라클의 인지도를 높이는데, PC에서 사용 가능하다는 것은 중요한 역할을 했다. INGRES는 대학 프로젝트에서 시작한 학구적인 분위기의 회사로 제품이 우수하면 시장에서 성공할 수 있다고 믿는 반면, 오라클은 영업과 마케팅을 중시했다. 예를 들어, 오라클의 옵티마이저(질의최적화기)는 사용자가 타이핑한 대로 무조건 왼쪽으로 오른쪽으로 수행하는 반면, INGRES의 옵티마이저는 모든 상황을 고려하여 최선의 방법으로 최적화를 수행한다. 기술적으로 오라클보다는 INGRES가 정확하고 빠른, 우수하고 진보적인 것이었다. 그러나 엘리슨은 이 것을 마케팅으로 커버했다. 오라클은 구문론적 옵티마이저를 가졌고, 다른 회사(INGRES)는 의미론적 옵티마이저라는 것으로 단지 방식이 다를 뿐이라고 시장에 홍보하는 식이었다.
어쨌든 시장에서는 오라클을 선택했고, 오라클의 강세는 계속되었으며 오라클은 RDBMS 자체적으로도 발전해갔다. 오라클 5에서는 서브쿼리가 가능해졌으며, 1988년 출시한 오라클 6에서는 진정한 의미의 ROW LEVEL LOCKING이 가능해졌으며 롤백세크먼트를 이용한 읽기일관성이 구현되는 등 RDBMS의 모양을 갖추어 가고 있었다. 하지만, 아직도 오라클은 버그가 있어서 종종 영업사원들을 거짓말쟁이로 만들고 있었다. 이런 문제들은 1992년 오라클 7이 나오면서 말끔히 해결되면서 이제 오라클의 영업사원들도 제품에 자신감을 가지고 영업을 할 수 있는 단계가 시작되었다. 오라클 7은 이전에 나왔던 PL/SQL를 훨씬 견고하게 구현하였고, TABLE TRIGGER와 STORED PROCEDURE가 가능해졌으며, 비록 초기적인 모습이지만 비용기반옵티마이저(Cost Based Optimizer:CBO)를 구현했다.(이제 오라클도 엘리슨이 다른 RDBMS가 구현한 형태라고 했던 의미론적옵티마이저를 가지게 되었다.) 이후로 오라클은 버전 8에서 LOB타입, Partition, Materialized View, Funtion-Based Index, Bitmap Index등이 지원되고, 버전 9, 10등이 이어서 출시되면서 발전되어왔다.
(3) MS SQL Server의 발전
1985년 마이크로소프트는 PC용 운영체제를 주력으로 하는 업체로 데이터베이스가 필요하진 않았다. 그러나 IBM의 새로운 운영체제인 OS/2 개발에 참여하면서 데이터베이스가 필요해졌다. 마이크로소프트와 협력 후에 IBM은 자체적으로 OS/2의 확장판인 OS/2 Extended Edition을 발표하면서 거기에 OS/2 Database Manager라 불리우는 RDBMS를 포함했는데, 이것은 DB2와 호환이 되었다. 이렇게 되면 시장에서는 마이크로소프트의 OS/2가 아닌 IBM의 OS/2를 선택할 것이었다. 마이크로소프트는 OS/2에 포함할 데이터베이스가 필요하였고, 새로 등장한 Sybase에 주목하였다. 그들은 Sybase의 제품에 대해 마이크로소프트의 모든 운영체제에서 독점권을 확보하려 하였다. 또한 새로운 DBMS에 대한 홍보를 위해 당시 PC시장에서 dBASE로 각광을 받던 Ashton-Tate와 제휴하였다. 1988년 그들은 Ashton-Tate/Microsoft SQL Server라는 다소 장황하고 어색한 이름의 데이터베이스 제품을 발표하였고, OS/2 시장에서 교두보를 확보하기 위해 Ashton-Tate와 Microsoft, Sybase는 협력하였다. 그러나, OS/2의 판매부진으로 그들의 DBMS는 성공적이지 못했다. 마이크로소프트는 Ashton-Tate와 결별하고, 1990년 Microsoft SQL Server 1.1을 발표하였는데, OS/2는 부진하였으나 새로이 발표한 운영체제인 Windows 3.0이 대대적인 성공을 거두었고 SQL Server는 Windows에서 실행이 가능하였다.
마이크로소프트에는 SQL Server 지원팀이 있었으나 관련 유틸리티를 제공할 수 있는 정도였고, 핵심 엔진은 Sybase에 의해 만들어졌고, 마이크로소프트는 소스도 볼 수 없었으며 소스 코드에 대한 수정도 Sybase에 의해 이루어졌다. 1991년이 되어서야 지원팀은 소스코드를 읽을 수 있게 되었고, 마침내는 직접 수정할 수도 있었다. 그 즈음 마이크로소프트와 IBM은 OS/2 개발 협약을 파기하였고, 마이크로소프트는 차세대 운영체제인 Windows NT를 계획하고 있었다.
1993년 3월 마이크로소프트는 Sybase와 협력 하에 OS/2와 Windows에서 실행 가능한 Microsoft SQL Server 4.2를 발표하였다. 그러나 이것은 마이크로소프트에서 발표한 마지막 OS/2용 SQL Server였으며, 마이크로소프트는 Windows NT용 SQL Server에 주력하기 시작했다. Sybase와의 협력관계도 Windows NT용 DBMS에서 마이크로소프트의 제품과 Sybase의 제품이 경쟁하기 시작했기 때문에 지속될 수 없었다. 1994년 4월 마이크로소프트와 Sybase는 협력개발을 종료하였고, 1992년 초 SQL Server 4.2가 발표되었을 때 받은 소스코드가 마이크로소프트가 Sybase로 받은 마지막 소스코드였다. OS/2를 포기하였기에 마이크로소프트의 SQL Server 개발팀은 이제 다른 운영체제에 포팅할 필요가 없는 Windows NT에 최적화된 RDBMS를 구현할 수 있었다. 그들은 1995년 6월 SQL Server 6.0을 출시하였고 곧이어 SQL Server 6.5를 출시하였다. Windows NT의 성공으로 SQL Server도 점점 그 영역을 확대해 나가게 되었다.
SQL Server 6.5가 출시되기 전부터 완전히 새로 조직된 개발팀이 스핑크스라는 코드명의 SQL Server 7.0을 개발하기 시작했다. 이들은 SQL Server 제품이 사용자들이 원하는 만큼의 큰 규모로 될 수 있도록 데이터베이스 엔진 전체의 구조를 새로 만드는 것이다. 예를 들어 ROW LEVEL LOCKING을 완벽하게 구현하는 것 등이 포함되어 있었다. SQL Server 7.0은 1998년 11월에 발표되었다. 그리고 SQL Server 7.0에 빠진 기능들(User-Defined Funtion, 참조무결성의 보완)을 포함하여 2000년 2월 SQL Server 2000이 발표되었다.
(4) 맺음말
간략하게 RDBMS의 초기와 오라클, SQL Server의 역사를 돌아보았다. RDBMS는 꾸준히 발전해왔으며 수많은 기능이 추가 또는 변경되면서 아직도 발전하고 있다. 각 RDBMS마다 기능의 차이가 있고, 있는 기능도 없는 기능도 있다. 차이가 생기는 건 역사에서 보듯이 필요성이나 기술, 기존의 것과의 호환성 등 여러 가지 이유 때문에 당연히 생기는 것이다. 그러나 중요한 것은 어느 것이라도 결국은 RDBMS라는 것이다. 즉, 대부분의 RDBMS는 기본 컨셉 자체가 다르지 않다는 것이다. 조금 다르게 구현되어 있거나, 조금 다르게 작동할 뿐이라는 것이다. 하지만, 개별 RDBMS의 차이는 개별 4GL의 그 것에 비해 크게 차이가 나지 않는다. 특히 RDBMS를 관리하는 입장이 아닌 사용하는 입장에서는 더욱 그렇다. 따라서 RDBMS를 사용하는 사용자, 더 구체적으로 개발자의 입장에서 RDB의 기본을 알고 개별 RDBMS의 차이를 안다면 쓰는데 그다지 문제가 없을 것이다. 프로그램언어나 개발툴에 비해 상대적으로 차이가 적기에 그보다는 적은 노력으로 그 이상의 효과를 거둘 수 있기에 RDBMS를 배워가는 것은 비용대비 효과가 높다. 독자 여러분이 이런 것들을 염두에 두고 조금의 시간만이라도 투자하여 RDBMS를 공부할 수 있기를 바란다.
<참고서적>
* 운명적 존재를 위한 SQL 쿼리, Michael J.Hernandez.John L. Viescas/
* CEO 래리 엘리슨과 오라클 신화, 마이크 윌슨/김욱송 역, 영언문화사, 2001, 서울
* 실리콘밸리 스토리, 데이비드 A. 캐플런/
* Oracle Insights, Dave Ensor 외, Apress, New York
* Inside Microsoft SQL Server 2000, Kalen Delaney/