
데이터베이스란 무엇일까?
네트워크 서비스를 사용하는 모든 전자 활동들의 기반이 되는, 세상의 온갖 데이터들의 집합이라고 보면 될 것이다.
데이터베이스에는 일상생활 대부분의 정보가 저장되고 관리된다. 당신이 오늘 보내거나 받은 카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 자바칩 푸라푸치노 등의 정보가 모두 데이터베이스에 기록된다는 뜻이다.
당신이 웹 앱 퍼블리싱을 꿈꾼다면 꼭 알아두어야 할 데이터베이스에 대해 알아보자.
[ 1세대 ] 계층형& 네트워크형 데이터베이스
A. 계층형 데이터베이스
1세대 데이터베이스 모델로, 데이터가 계층적으로 이루어져 있으며 상하 종속적인 트리 구조로 되어있다.
- 장점 : 데이터 엑세스 속도가 빠르다. 데이터 사용량을 쉽게 예측할 수 있다.
- 단점 : 상하부가 종속되어있기 때문에 프로세스를 변경하려면 수정 작업이 상당히 고통스럽다.
B. 네트워크형 데이터베이스
또다른 1세대 데이터베이스 모델로, 데이터 구조를 노드형으로 표현한 데이터 모델이다. 각각의 자료를 서로 대등한 관계로 구성한 시스템이라고 생각하면 편하다.
- 장점 : 더 이상 상하 종속적이지 않기 때문에, 프로세스 변경이 수월하다.
- 단점 : 구성과 설계가 상당히 복잡하게 되었으며, 이 때문에 구조를 이해하기 전에는 수정작업 또한 까다롭다. 또한, 데이터베이스의 구조를 변경하려면 참조했던 모든 응용 프로그램의 수정이 필요하다.
[ 2세대 ] 관계형 데이터베이스
2세대 데이터베이스 모델로, 행열로 구성된 테이블 형태의 구조를 가졌다. 가장 대중적인 데이터베이스로, 우리는 흔히 SQL을 사용하여 관리한다.
장점 : 유지보수가 편리하여 생산성이 높다. 데이터의 일관성이 보증되며, 구조적 독립성 또한 갖는다.
단점 : 대량의 데이터를 처리하여야 하기 때문에 다른 DBMS 보다 더 많은 자원이 활용되어 시스템의 부하가 높다.
[ 3세대 ] 객체지향형 데이터베이스
데이터와 프로그램을 독립된 객체로 구성되었다. 개념적으로만 존재하는 데이터베이스라고 알고 있는데, 이 부분은 나도 아는 바가 자세히 없어 기술할 내용이 딱히 없는 점, 이해해 주시리라 믿는다.
객체지향형 DB는 1980년대 후반에 등장한 객체 지향 프로그래밍에서 객체라는 개념을 데이터 베이스에 사용한 형태의 객체지향 DBMS인데, 객체 관계 DBMS는 관계형 데이터 모델에 객체 지향 개념을 도입한 것이다.
오늘날에 관계 DBMS와 객체 관계 DBMS, 그리고 객체 지향 DBMS를 서로 구분하는 게 이론적으로 크게 의미가 있어보이지는 않는다. 그리고 엄밀히 말하면 관계형 DBMS의 각 테이블을 모두 객체로 볼 수 있는 것이 아닌가? 개인적으로 3세대를 보고 있자면 결국 2세대 DBMS들이 발전하면서 3세대의 특성을 그대로 반영하고 있는 것 같다는 생각이 든다.
[ 4세대 ] NoSQL & NewSQL DBMS
상단의 3세대 객체지향형 데이터베이스를 찾다가 우연찮게 알아낸 최신형 DBMS이다.
오늘날 SNS가 폭발적으로 발전하면서 사진, 동영상, 구글 검색 기록과 같이 정형화해서 저장할 수 없는 데이터, 즉 비정형 데이터들이 함께 대량으로 생성된 것이 발단이 되었다고 한다.
2세대 관계형 DBMS는 이러한 빠르게 생성되는 비정형 데이터를 처리하는데 매우 비효율적이고 (애초에 정형화를 시켜 저장하는 것이 맞는가에 대한 의문도 있다) CPU, Memory 등 하드웨어 성능을 끌어올려 해결할 수 있는 문제로 볼 수 없다는 게 판단인 것 같았다.
따라서 이 문제를 해결하기 위해 관계형 데이터베이스가 주는 안정성과 일관성 유지의 장점을 포기하고, 데이터 구조를 “미리 정해놓지 않는” 형태로 처리하는 게 적합하다고 생각해 생겨난 것이 NoSQL DBMS이다.
처음 언급된 것은 1998년이나 2009년부터 주목을 받기 시작했고, 구글, 페이스북, 트위터 같은 기업들이 필요성을 갖오하면서 주목이 커지기 시작했다.
대표 서비스에는 MongoDB, Redis, Cassandra 등이 있고, MongoDB의 경우 Javascript로 빌드되어 있어 웹 프로젝트를 할 때, React.js(또는 Vue.js || Angular.js) + Node.js로 통일해 사용하는 경우가 많아졌다.
그러나 NoSQL은 RDB(관계형 DBMS)를 완벽하게 대체할 수 없어서 새롭게 NewSQL DBMS라는 것도 등장했지만, 2011년에 처음 언급되었고, 아직 많은 연구가 필요한 단계라고 한다.
내가 과연 이걸 언제 쓰게 될까? 가늠조차 힘드네.
이번 시간엔 간단하게 DBMS의 정의와 각 세대별 특성을 간단하게 기술해보았다.
다음 시간에는 DBMS의 장 단점에 대해 이야기해보도록 하겠다!