DBMS의 탄생과 발전, 그리고 역사
상태바
DBMS의 탄생과 발전, 그리고 역사
  • 데이터넷
  • 승인 2017.09.06 09:58
  • 댓글 0
이 기사를 공유합니다

데이터 저장 플랫폼 역사…최초 DBMS ‘IDS’부터 RDBMS·하둡·블록체인까지

오늘날 대부분의 기업에서 사용되고 있는 DBMS는 컴퓨터가 발명된 이후 오랫동안 기업들의 필수 애플리케이션으로 자리해 왔다. 현재는 오라클이 전 세계적으로 DBMS 분야에서 명성을 날리고 있지만, 그 밑바탕에는 여러 사람들이 일궈낸 결과물들이 자리 잡고 있다. DBMS가 어떻게 발전해왔는지 그 역사를 조명해본다. <편집자>

▲ (왼쪽부터) 엑셈 연구콘텐츠팀 권건우 상무, 이근오 부장, 김숙진 연구원, 이대덕 연구원

톰 길번과 가상메모리

2차 세계대전을 전후해서 대서양을 사이에 두고 유럽과 북미에서 진행됐던 진공관을 이용한 전자식 컴퓨터의 개발은 아이오와 대학의 ABC 컴퓨터, 펜실베니아 대학의 애니악, 폰 노이만의 애니박 등 많은 성과를 낳았다. 펜실베니아 대학에서 애니악을 만든 에커트와 모클리가 QWERTY 키보드 타자기로 유명한 레밍턴 랜드사에 합류해 최초의 상용 컴퓨터인 유니박을 만들고, 이에 자극 받은 토마스 왓슨 주니어가 IBM의 본격적인 컴퓨터 산업 진출을 결정하고 IBM 701을 만들면서 두 회사간 본격적인 메인 프레임 컴퓨터 경쟁의 시대에 접어들게 됐다.

당시 보조기억장치에 비해서 턱없이 부족한 메인 메모리 사이트에 대한 대안으로 멘체스터 대학의 톰 길번은 가상 메모리와 페이징, 그리고 멀티 프로그래밍이이라는 개념을 제안했다. 톰 길번이 제안한 가상 메모리 개념은 현대의 컴퓨터에서도 여전히 중요하게 쓰이는 혁신적인 개념으로, 1956년 시작돼 1962년에 완료된 아틀라스(Atlas) 프로젝트에서 완성된다. 이후 발전하는 가상메모리와 페이징 그리고 페이징 교체 알고리즘에 대한 다양한 아이디어는 DBMS의 버퍼 캐시를 관리하기 위한 알고리즘의 토대가 됐다.

찰스 바크만과 DBMS의 탄생

▲ 찰스 바크만 (Charles Bachman, 1924~2017)

1960년 제너럴 일렉트릭(GE)에 입사한 찰스 바크만은 GE의 제조생산라인을 관리하기 위한 MIACS(Manufacturing Information And Control System)을 구축하면서 프로그램 로직과 별도로 데이터를 독립적으로 관리하기 위해 IDS(Intergrated Data Store)를 만들었다. 이 IDS는 최초의 상용 DBMS로 평가받는데, 디스크 기반의 가상 메모리를 사용해 데이터를 동일한 크기의 페이지로 분할해 메인 메모리의 버퍼 프레임에 불러와 사용했다. 이러한 버퍼 관리(Buffer Management) 기능은 가장 최근에 엑세스한 데이터를 지연 없이 빠르게 사용할 수 있게 함으로써 DBMS 성능에 매우 중요한 역할을 했으며, DBMS 탄생과 함께 처음부터 가장 중요한 주제가 될 수밖에 없었다.

최근에는 모든 데이터를 메인 메모리에서 관리 가능한 인메모리(In-Memory) DB가 나왔지만 일반적으로 디스크에 저장된 전체 데이터와 크기와 메인메모리가 수용 가능한 데이터의 사이즈는 매우 큰 차이가 난다. 그러므로 DBMS는 프로세스가 요구하는 페이지를 버퍼로 가져오고, 이후 새로운 페이지를 가져오기 위한 공간을 확보하기 위해서 기존에 메인메모리에 존재하는 페이지 중 일부를 선택해서 공간을 비워줘야 한다. 이를 ‘교체 정책(Replacement Policy)’이라 하며, 전통적으로 몇 가지의 교체 알고리즘(Replacement Algorithm)이 존재해 왔다.

IBM 시스템/360과 ISAM
IBM 700 시리즈를 내놓으면서 진공관 컴퓨터 시장을 석권하기 시작한 IBM은 호환성을 극대화하고 모든 요구조건에 대응할 수 있는 트랜지스터 컴퓨터인 시스템(System)/360을 발표하게 된다. 이 시스템/360에서 제공하는 유틸리티 중의 하나가 바로 ISAM(Indexed Sequential Access Method)이다. 인덱스의 개념을 처음으로 도입한 ISAM은 그 이후 VSAM, B 트리 인덱스로 변형되고 발전했는데, 이는 데이터를 최초로 구조화했다는데 그 의미가 있었다.

번 와츠와 IMS/DB
GE의 찰스 바크만이 최초의 네트워크 DBMS를 만든 이래 1966년 미국 항공우주국(NASA)의 아폴로 우주선의 디자인을 맡은 로크웰(Rockwell)사는 엄청난 수의 부품(BOM)을 관리하기 위한 IBM의 번 와츠(Vern Watts) 등 IBM 연구진과 공동으로 계층형 DBMS를 개발하기 시작했다.

마침내 1968년 ICS/DL/I(Information Control System and Data Langugage/Interface)를 완성했는데, 이후 ICS는 컴퓨터 역사의 기념비적인 IBM 시스템/360 메인프레임의 핵심 DBMS인 IMS/DB로 발전했고 성공적으로 NASA의 아폴로 우주계획을 도왔다.

DBMS의 시대를 열었던 찰스 바크만과 번 와츠 등은 현장에서 시스템을 만들고 문제를 해결하던 엔지니어였다. 엔지니어들은 실전적으로 현실의 프로그램을 작성하면서 불편했던 문제를 해결하기 위해 DBMS라는 데이터 전용관리 모듈을 생각해 냈고 발전시켜나갔다.

E. F. 코드 박사와 시스템 R 프로젝트

▲ E. F. 코드 (Edgar Frank Codd, 1923~2003)

한편 IBM 연구소에서 근무하고 있었던 수학자인 E. F. 코드(Codd) 박사는 엔지니어 관점이 아닌 수학자의 관점에서 데이터 관리를 효율적으로 하기 위해서 관계 대수의 원리를 이용해 저장하고 조회하면 된다는 아이디어를 논문으로 발표하게 된다. 그러나 이미 시스템/360의 IMS/DB로 DBMS 시장을 석권하고 있었던 IBM은 코드 박사의 논문에 큰 관심을 가지지 않았지만, E. F. 코드 박사의 거듭된 파일럿 프로젝트 요청에 IBM 연구소 내에 흩어져 있던 연구인력을 모아서 프로토타이핑 프로젝트를 하게 된다.

이때 W. F. 킹(King), 짐 그레이(Jim Gray), 레이몬드 보이스, 도날드 체임벌린 등이 모여서 프로젝트를 하게 됐는데, 처음에 프로젝트 이름조차 없었으나 몇 개월 후 관계(Relation)에서 R을 가져와 ‘시스템 R’이라고 프로젝트를 명명했다.

시스템 R 프로젝트는 비록 상용화 되지는 못했지만 RDBMS가 가져야 되는 대부분의 아키텍처가 설계됐고 테스트됐다. 예를 들면 시스템 R 프로젝트에서 SQL이 처음으로 만들어졌고, 패트리시아 G. 셀링거에 의해서 코스트 기반 옵티마이저(Cost Based Optimizer)가 만들어졌으며 짐 그레이에 의해서 트랜잭션 처리를 위한 다양한 아키텍처들이 설계됐다.

▲ 마이클 스톤브레이커 (Michael Stonbraker, 1943~ )

IBM은 시스템 R을 발전시켜 SQL/DS에 이어 DB2로 발전시켰고, 메인프레임의 독점적인 시장점유율을 바탕으로 시장에서 큰 성공을 거두게 됐다.

마이클 스톤브레이커와 잉그레스 프로젝트
실리콘 밸리의 IBM 산호세 연구소 인근에 위치한 버클리 대학의 마이클 스톤브레이커는 E. F. 코드 박사의 논문 및 시스템 R에 대한 소식을 듣고 잉그레스(Ingres) 프로젝트를 시작해 학교차원에서 RDBMS를 연구하기 시작한다. 잉그레스 프로젝트는 이후 소스가 오픈됐고, 이후 개발되는 많은 DBMS의 모태가 됐다. 또한 잉그레스 프로젝트에 참여했던 밥 엡스타인 등 많은 엔지니어들이 흩어져 수많은 RDBMS를 발전시키게 된다.

RDBMS 완성한 시대의 천재 밥 마이너

▲ 밥 마이너(Bob Miner, 1941~1994)

한편 1970년 중반 암펙스(Ampex)라는 회사에서 CIA 관련 프로젝트를 하고 있었던 밥 마이너(Bob Miner), 래리 앨리슨(Larry Ellison), 에드 오츠(Ed Oates) 등은 E. F. 코드 박사의 논문을 접한 뒤 RDBMS의 상업적인 성공을 확신하고 SDL이라는 회사를 설립한다. 그리고 밥 마이너는 혼자서 1년 만에 오라클(Oracle) DBMS 버전(Version) 1을 어셈블리어로 완성한다.

오라클 DBMS는 버전 3에서 C 언어로 포팅되면서 거의 모든 서버 플랫폼을 지원하게 됐고, 1992년 오라클이 버전 7을 발표하면서 RDBMS가 가져야 하는 주요한 모든 아키텍처를 거의 완성하게 됐다. 이후 사이베이스(Sybase), IBM, 마이크로소프트(MS) 등과의 경쟁에서 우위를 지켜 나가게 되고, RDBMS의 대명사로 자리매김하게 된다.

 

▲ (왼쪽부터) 에드 오츠(Ed Oates, 1946~ ), 브루스 스콧(Bruce Scott, 1951~), 밥 마이너(Bob Miner, 1941~1994), 래리 엘리슨(Larry Ellison, 1944~ )

밥 엡스타인과 사이베이스 DB
버클리대학에서 잉그레스 프로젝트의 멤버로 참여했던 밥 엡스타인은 1984년 마크 호프만과 함께 사이베이스를 설립한다. 사이베이스는 80년대 중반 본격적으로 태동하기 시작한 클라이언트/서버환경에서 최적의 DBMS를 제공함으로써 오라클의 강력한 경쟁자로 떠올랐고, 빌 게이츠의 마이크로소프트에 MS SQL 서버를 공급했다.

한편 1995년에는 컬럼 스토어 방식의 DBMS인 사이베이스 IQ를 발표해 분석용 DBMS 시장에서 강력한 우위를 점하게 된다.

오픈소스 DBMS의 시대

▲ 헤이키 튜리(Heikki Tuuri, 1964~ )(왼쪽), 몬티 와이디니어스(Monty Widenius, 1962~ )

MySQL은 1985년 스웨덴의 TcX라는 회사에서 몬티 와이드니어스(Monty Widenius)에 의해 Unireg라는 리포팅 툴로 시작됐다. Unireg는 ISAM 기반의 저장 구조를 가진 리포팅 툴이었는데, 1990년대에 웹에서 사용되기 시작하면서 SQL 지원이 필요해졌고 1996년 몬티는 Unireg의 ISAM에 데이비드 휴즈(David Hughes)의 MSQL을 참고해 MySQL 버전 1.0을 발표하게 된다.

한편, 핀란드의 헤이키 튜리(Heikki Tuuri)는 1995년 이노베이스(Innobase Oy)를 설립해 트랜잭션 ACID를 지원하는 이노DB(InnoDB)를 발표하게 된다. 이노DB는 초기에 오픈소스가 아니었는데, 투자자를 찾다 실패한 후 2000년 MySQL과 협력을 하게 된다. 그리고 2001년 MySQL 버전 4.0에서 처음으로 MySQL/이노DB 콤비가 출시됐다.

2005년 이노DB는 오라클에 인수됐고, 2008년에는 MySQL이 썬(Sun)에 인수됐다가 2010년 썬이 오라클에 인수됐다. 오라클은 이노DB와 MySQL 모두를 인수하게 되면서 2010년에 MySQL 5.5에서 이노DB를 MySQL의 기본 스토리지 엔진으로 채택했다.

포스트그레SQL(PostgreSQL)은 1974년 버클리에서 진행된 잉그레스 프로젝트에서 처음 시작됐다. 프로젝트 리더는 마이클 스톤브레이커(Michael Stonebraker)였는데, 그는 잉그레스의 상용화를 위해 잠시 학교를 떠났다가 1985년에 다시 학교로 돌아와 포스트 잉그레스(Post-Ingres) 프로젝트를 시작했다. 이후 1995년 버클리 졸업생 졸리 첸(Jolly Chen)과 앤드 류 유(Andrew Yu)가 SQL의 해석기를 추가하며 포스트그레95를 만들어내고, 1996년 새로운 SQL질의어가 추가됐다는 것을 알리기 위해 포스트그레SQL로 이름을 변경한다. 그리고 현재는 브루스 맘진(Bruce Momjian)이 속해있는 포스트그레SQL 코어 팀에서 릴리즈 배포 및 공지 등을 진행하고 있다.

MySQL과 포스트그레SQL은 소스코드가 공개돼 있기 때문에 이후 다양한 DBMS들의 시초가 됐다. DBMS 계보도에 정리된 바와 같이 많은 DBMS가 이 두 개의 오픈소스 DBMS를 바탕으로 개발됐다.

▲ DBMS 계보도(출처: Andrew Mendelsohn, Rich Niemiec | https://en.wikipedia.org/)

컬럼 스토어 DBMS
컬럼 스토어 방식의 데이터 저장 아이디어는 이미 1969년 TAXIR 시스템에서 시도된 바 있으나 상업적인 DBMS로는 1993년 KDB에서 구현됐고, 1995년 사이베이스 IQ에서 널리 쓰이게 됐다. 사이베이스 IQ는 정보계의 분석용 시장을 석권했고, 컬럼 스토어 저장방식의 새로운 가능성을 열었다.

RDBMS의 전성기와 새로운 도전
1990년대 중반부터 메인프레임을 유닉스 서버로 전환하는 다운사이징 열풍과 더불어 RDBMS가 모든 데이터 저장 플랫폼을 대표하는 단어로 자리 잡게 됐다. 기업의 모든 시스템에서 RDBMS를 사용해 데이터 처리를 하는 것이 당연하게 간주됐다. 2000대 초반에는 잠시 객체지향 언어의 영향을 받아서 객체지향 DBMS라는 새로운 시도가 있었지만 큰 흐름을 형성하지는 못했다. 그야말로 RDBMS의 천하통일이었다.

그러나 웹 아키텍처의 발달과 SNS 서비스의 대유행, 그리고 빅데이터의 등장은 RDBMS에게 새로운 도전이었다. 처음에는 이러한 새로운 도전에 대해서 RDBMS를 어플라이언스 장비에 탑재해 스케일 업 시키는 방향으로 대응했지만 근본적인 솔루션이 되지 못했다.

NoSQL의 등장
1998년대 말 카를로 스트로찌는 RDBMS의 복잡한 트랜잭션 기능을 빼고 단순화된 DBMS를 만들어 이를 NoSQL이라고 명명했으나 큰 반향은 없었다. 그런데 2000년대 중반 이후 SNS 서비스가 급속도로 발전함에 따라서 RDBMS를 단순화시켜 특정 기능만을 강조하는 다양한 형태의 데이터 저장 플랫폼이 시도됐지만, 다큐먼트형, 와이트 컬럼 스토어형, 그래프 스타일, 키 밸류(Key-Value) 형 등 네 가지로 분류할 수 있다. 이는 새로운 기술적인 돌파구를 열었다기보다 무거운 트랜잭션 처리 기능을 포기하고 과거 DBMS 역사에서 나왔던 다양한 아이디어들, 예를 들면 ISAM, 네트워크형 DBMS, XML DB, 컬럼 스토어 DB의 아이디어를 차용해 특정 서비스에 최적화된 데이터 처리 플랫폼을 개발한 것이다.

2009년 초에 라스트 FM의 요한 오스칼손(Johan Oskarsson)이 오픈소스 분산 데이터베이스를 논하기 위한 미트업 행사를 조직하면서, 이와 같은 데이터베이스의 흐름을 NoSQL이라고 불렀다. 고전적인 관계형 데이터베이스 시스템이 제공하는 ACID의 트랜잭션 기능을 제공하지 않는 수많은 비관계형, 분산 데이터 저장 플랫폼을 가리키는 용어로 이 이름이 사용되었다.

분산처리와 하둡
메인프레임을 사용하던 전산실에는 대량의 배치작업을 신속히 하기 위해서 하나의 배치작업을 100분할 또는 그 이상으로 나눠서 작업을 하고, 다시 그 결과를 합해서 작업을 해왔다. 구글은 이러한 분할작업을 위한 프레임워크 만들어서 사용했고 이를 논문으로 공개했다. 더그 커팅은 구글의 논문을 일고 HDFS 분산처리용 데이터 저장 플랫폼과 맵리듀스라는 분할처리 프레임워크를 하둡(Hadoop)이라는 이름으로 공개했다.

이후 야후를 비롯한 SNS 등 회사에서 이를 채용함으로써 하둡은 일약 빅데이터 처리를 위한 기본 플랫폼으로 떠오르게 됐고, 다양한 기능을 가진 수많은 오픈소스 모듈들이 추가되며 하둡 에코시스템을 형성했다.

분산 원장 DBMS 블록체인
DBMS는 태생부터 중앙 집중화된 구조를 가졌는데, 2008년 10월 사토시 나카모토에 의해 데이터 저장을 위한 혁신적인 방법이 시도됐다. 중앙 서버 없이 P2P 프로그램이 영화파일을 분산 복제하듯이 거래의 기록을 블록에 연결시켜 저장하고, 거래의 참여자가 중앙으로부터의 간섭 없이 상호 인증함으로써 원장의 신뢰성을 보장하는 방법이다.

이는 트랜잭션 처리에는 한계가 있어 보이지만 국가간 외환거래처럼 실시간성이 필요 없고 중앙 서버가 마땅하지 않은 거래에서 유용하게 사용될 수 있을 것으로 보였다. 1960년대 DBMS 가 처음으로 만들어진 이후 중앙 서버가 필요 없이 분산원장을 관리할 수 있는 획기적인 백엔드 DBMS가 탄생한 것이다.

▲ DBMS 역사


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.