아직 인터넷이 익숙하지 않았던 어린 시절, 우리 집에는 ‘브리태니커백과사전’이 있었다. 브리태니커백과사전은 책 한 권에 몇백 장이나 되는 두꺼운 사전이었고, ㄱ부터 ㅎ 순으로 총 27권이나 있는 어마어마한 사전 시리즈이다. 숙제할 때 항상 펼쳐보던 사전으로, 나만의 지식인 같은 곳이었다랄까.
데이터베이스를 공부할수록 처음 사전을 찾는 방법을 익힐 때가 생각났다. 종이 사전을 끼고 살던 시절로부터 불과 10여 년 만에, 키워드 검색이 대세가 되고 이젠 음성 인식 검색도 가능하다. 지금 우리는 데이터가 넘치는 시대를 살고 있고, 데이터를 찾고 이용하는 것은 일상생활에서 너무나도 자연스러운 일이 되었다. 지금부터 함께 이 데이터의 집합인, 데이터베이스와 데이터베이스 관리시스템에 대해 알아보자.
■ 좀 더 빠르게 데이터를 찾아 쓰고 싶다? 데이터 관리가 필요할 때다.
마구 어지럽혀진 옷장에서 원하는 옷을 찾을 때는 상상해보자. 여기 뒤적, 저기 뒤적하다 보면 빨랫감이 나올 수도 있고, 살 빼면 입어야지 하고 둔 새 옷을 발견할 수도 있다. 이런 저런 유물을 발견하다 보면, 원하는 옷을 찾기 까진 그만큼 시간이 걸릴 것이다.
데이터도 마찬가지다. 데이터가 많아질수록, 정리가 안 될수록 필요한 데이터를 찾는 데 시간이 걸린다. 이를 돕기 위해 데이터 관리 장치가 생긴다. 데이터 관리 장치란, 대량의 데이터를 저장, 관리하고 필요 데이터를 빠르게 검색하는 보조 장치를 말한다.
데이터 관리는 1970년대 IBM에서 SQL을 만들고, 2000년 중반에 클라우드 컴퓨터가 생기면서 급격히 발전하게 된다.
■ 데이터베이스가 나오기 전 시스템: 파일 처리 시스템(File Processing System)
파일 처리 시스템의 구조의 모습은 아래와 같다. 윈도우즈 폴더를 생각하면 이해하기 쉽다. 폴더별(애플리케이션별)로 묶어 데이터를 개별 관리하는 시스템인데, 사용하고자 하는 애플리케이션이 직접적으로 데이터를 관리하기 때문에 다음의 문제가 발생한다.
■ 기존 파일 처리 시스템의 대표 문제점
1. 데이터 종속의 문제 (Data Dependency Issue)
데이터가 특정 사용자, HW, SW에서만 사용되는 제한이 생긴다. 위 그림에서 애플리케이션2가 파일 1이나 파일 3에 접근하지 못하는 문제로, 물리적/논리적 종속에서 기인한다.
2. 데이터 중복의 문제 (Data Redundancy Issue)
애플리케이션별로 데이터를 생성해야 하기 때문에, 동일한 데이터가 여러 번 생성될 수 있는 문제다. 그림에서 파일 1의 회색 데이터가 파일 2에도 있음을 알 수 있다.
데이터가 중복되면 일관성이 떨어지는 문제가 발생한다. 즉, 어떤 데이터를 수정할 때 이곳 저곳 흩어져 있는 동일한, 모든 데이터를 수정해야 하기에 유지보수가 어려워진다. 마찬가지로 동일 데이터가 저장 공간을 차지하여 경제성이 떨어지고, 같은 데이터에 같은 수준의 보안을 유지하기 어려워 보안성도 떨어진다.
3. 무결성 훼손의 문제 (Integrity Issue)
데이터의 무결성이란 말은 조금 어렵다. 쉽게 말하면, 데이터는 아주 정확해야 한다는 말이다. 이게 무슨 말 장난인가, 싶겠지만 생각해보자. 우리가 사용하는 데이터는 ‘제약조건’을 수반하기 마련이다. 여기서 제약 조건이란, 예를 들어 ‘이 파일의 데이터는 최대 10자리를 넘을 수 없다’와 같은 가능 범위를 말한다. 중복 데이터가 많아질수록 개별 데이터를 지속적으로 모니터링하기 어렵고, 반대로 데이터의 무결성이 훼손될 가능성이 커진다.
4. 동시 접근의 문제 (Concurrent Sharing Issue)
파일 처리 시스템에서 다수의 사용자가 동시 접근하면 데이터 관리의 일관성이 떨어진다. 예를 들어 동시간 대에 사용자 A와 사용자 B가 데이터 1에 접근해서 작업한다고 하자. 이때 동시 작업한 것이 반영되어 서로 공유가 되어야하는데, 파일 처리 시스템을 이러한 기능을 적절히 제공하지 못한다.
■ 데이터베이스 관리시스템(Database Management System) 구조
데이터베이스 관리시스템(이하 DBMS)은 데이터베이스에 저장된 데이터의 구성, 저장, 관리와 사용을 위한 소프트웨어 패키지를 말한다. DBMS는 다음과 같은 구조로 이뤄져있 다. 가장 큰 특징은 데이터의 사용 영역과 관리의 영역이 명확하게 구분되었다는 점이다. DBMS는 3단계 구조로 나뉘는데, 뷰(외부 스키마)로 이뤄진 외부단계 | 개념 스키마로 이뤄진 개념단계 | 내부 스키마로 이뤄진 내부단계이다.
1. 외부단계: 사용자가 보는 뷰
외부–개념 사상 과정에서 논리적 데이터의 독립성을 확보한다.
2. 개념단계: 데이터의 규모, 구조
개념–내부 사상 과정에서 물리적 데이터의 독립성을 확보한다.
3. 내부단계: 물리적인 요소로, 어떤 디스크 어디에 어떤 크기로 저장되는지 따위를 가짐
보다 자세한 DBMS의 3단계 구조에 대한 설명은 다음 링크로 생략하고자 한다.
https://k9e4h.tistory.com/106
이렇게 기존의 파일 처리 시스템의 구조와 문제점, DBMS의 구조에 대해 알아보았다. 다음 글에서는 DBMS의 장단점, 특징에 대해 알아보고, 데이터베이스의 언어 시스템 아키텍처에 대해 알아보도록 하자.