파일 시스템
컴퓨터 시스템은 1980년대까지 EDPS(Electronic Data Processing System) 이라고 불렸을 만큼, 데이터 처리는 밀접한 관계를 가지고 있다. FORTRAN 등 프로그래밍 언어를 사용할 수 있게 되면서, 컴퓨터 시스템은 단순히 값을 계산하는 것 뿐만 아니라 데이터를 저장, 분석하고 처리하는 역할을 갖게 되었기 때문이다.
이 시기에 도입된 파일 시스템(File System) 개념은 데이터를 저장하는 기본적인 방법으로, 특히 각 OS에서 제공하는 디렉토리(directory) 구조를 사용하여 파일을 관리하므로, 편리하고 직관적이게 데이터를 분류/보관/저장할 수 있어 오늘날까지 널리 이용되고 있다. 파일 시스템에서는 개별 애플리케이션이 직접 파일로 접근하여 데이터를 기록, 갱신, 삭제할 수 있으며, 파일 내 데이터가 올바르게 관리되고 있는지의 여부는 전적으로 사용하는 애플리케이션에 의존한다. 그러나 파일 시스템에는 아래와 같은 단점이 있다.
- 데이터 종속성(dependency) 발생
파일 시스템에서는 데이터를 사용하는 애플리케이션의 구조가 파일 구조에 종속된다. 파일에 저장되는 데이터는 레코드(record) 단위로 기술되어 있으며, 이를 여러 부분의 필드(field)로 처리한다. 하나의 레코드를 어떤 단위로 나누어 필드로 처리할지에 대한 정보는 애플리케이션 내부에 기술되어 있다. 따라서 만약 파일의 구조가 바뀌면, 이를 사용하는 애플리케이션의 구조 역시 변경되어야 한다. - 데이터 무결성 침해
무결성(integrity) 이란 저장된 데이터의 내용이 본래 의도했던 형식, 범위를 준수해야 한다는 성질이다. 예를 들어 일반적으로 "사람의 나이는 양수여야 한다" 와 같은 규칙을 준수해야 하는 것이다. 파일 시스템에서는 무결성의 입증 책임이 애플리케이션, 즉 개발자(혹은 사용자)에게 있다. 제대로 검수가 되지 않는다면 실수 혹은 의도적으로 무결성을 해치는 데이터가 저장될 수 있다. - 데이터 중복성(redundancy)
파일 시스템을 사용하면 같은 내용의 데이터더라도, 개별 부서나 애플리케이션에서 필요로 하는 파일을 새롭게 만들어 저장하는 일이 많다. 이는 단순히 저장공간의 낭비 뿐 아니라, 중복 저장된 데이터끼리의 불일치가 나타나서 일관성(consistency) 이 보장되지 않을 수도 있다. 또한 접근성이 높은만큼 보안을 유지하기조차 어렵다. - 데이터 표준화(standardization)의 어려움
일정 규모 이상의 컴퓨터 시스템에서는 많은 개발자들이 협업하기 위한 작업 방식의 표준화가 필수적이다. 파일 시스템 상에서는 각 개발자가 다른 형식의 애플리케이션을 사용할 수 있고, 전달된 표준화 규칙을 개발자가 실수로 지키지 않을 수 있으므로 표준화에 대한 신뢰성이 많이 떨어진다.
데이터베이스 시스템
파일 시스템의 단점을 극복하기 위해, 분산된 데이터를 하나로 모아 관리하되 사용자(애플리케이션)와 데이터 사이의 인터페이스 역할을 할 수 있는 프로그램을 두는 새로운 형식의 데이터 관리 시스템이 등장하게 된다. 이 데이터의 집합을 데이터베이스(DB; Database) 라 부르고, 인터페이스 프로그램을 데이터베이스 관리 시스템(DBMS: Database Management System) 이라고 부른다. 데이터베이스 시스템은 파일 시스템의 단점을 아래와 같은 방식으로 극복하였다.
- 데이터 독립성(independency)
데이터베이스 시스템에선 사용자 혹은 애플리케이션이 직접 데이터에 접근할 수 없으며, 무조건 DBMS를 통해서만 접근 가능하므로, 데이터와 그를 직접 사용하는 애플리케이션이 독립적이다. - 데이터 무결성 유지
DBMS는 DB내에 저장될 데이터의 규칙에 대한 다양한 정보를 지니고 있으며, 이를 위반하는 데이터가 들어오면 처리를 거절하여 무결성을 유지한다. - 데이터 중복성 및 불일치 최소화
DB내의 데이터는 조직 전체의 관점에서 처리하기 위해 설계되어, 데이터 공유가 용이하고 중복성이 최소화된다. 사용자 권한에 따라 각 DB에 대한 접근 권한을 다르게 할 수 있어 데이터 보안성 역시 높다. - 표준화 용이성
일반적으로 DB관리자(DBA) 가 존재하여 설계과정을 주도하므로 데이터 표준화가 쉽다. 또한 DBMS내의 데이터 구조에 관한 정보를 가지고 있고, 애플리케이션이 데이터에 접근하기 위해서는 이 형식을 따라야 하므로 자연스럽게 표준화가 된다.
RDBMS
과거에는 파일시스템의 디렉토리 구조와 비슷한 계층형 데이터베이스 와, 그의 단점을 보완하기 위한 네트워크 데이터베이스 가 많았으나, 1970년 E. F. Codd 에 의해 관계형 데이터베이스(RDBMS; Relational ~)가 제안되었고, 현재는 상업용 DB 시스템의 대부분(Oracle, MySQL 등)을 RDBMS가 차지하고 있다.
RDBMS는 모든 데이터가 표(테이블) 형태로 표현되며, 사용자가 데이터를 쉽게 다룰 수 있도록 질의어(SQL; Structured Query Language) 를 제공한다. 테이블 형태는 누구나 직관적으로 이해하기 쉽고, SQL은 자연어와 비슷한 형식이며 표준 문법이 있어 대부분의 RDBMS에서 공통적인 명령어를 사용할 수 있다. RDBMS를 최초로 제안한 E.F.Codd는 아래와 같은 방식으로 데이터베이스 용어들을 정의한다.
- 릴레이션(relation)
릴레이션은 현실세계의 특정 개체(entity)를 구분하여 저장하는 기본 단위로, 테이블 혹은 파일 시스템의 파일 과 동격의 의미를 지닌다. 예를 들면 학생의 정보를 저장하기 위해 STUDENT라는 릴레이션이 필요한 것이다. 동일 DB에는 같은 이름을 지닌 릴레이션이 존재할 수 없다. - 속성(attribute)
속성은 릴레이션을 구성하는 단위로, 각 개체의 구체적인 정보 항목을 의미한다. 테이블의 컬럼(column) 혹은 파일 시스템의 필드(field) 와 동격의 의미를 지닌다. 예를 들어 STUDENT 릴레이션엔 이름, 나이, 성별 등 다양한 속성들이 존재한다. 속성 역시 고유한 이름을 가지므로 동일 릴레이션 내에서 중복이 불가능하다. - 튜플(tuple)
튜플은 실제 객체들의 정보를 의미하는 것으로, 테이블의 로(row) 혹은 파일 시스템의 레코드(record) 와 동격의 의미를 지닌다. STUDENT 릴레이션 내에 여러 명의 학생 정보가 저장된다면, 이 각각의 학생들이 튜플이 된다. - 도메인(domain)
도메인은 각 속성이 가질 수 있는 값의 집합이다. 예를 들어 학년의 범위가 1학년,2학년,3학년까지 있다면 GRADE라는 도메인에 {1,2,3}을 넣어놓고 GRADE 속성은 GRADE 도메인 내의 값만 가질 수 있다고 지정해 놓음으로써 일관성과 무결성을 보장할 수 있다.
도메인의 이름은 일반적으로 속성 이름과 같지만 다를 수 있고, 여러 속성에서 공유할 수도 있다. 다만 속성별로 도메인이 무한히 많이 존재하는 경우도 있기에, 실무적으로 도메인을 많이 사용하진 않고, 보통은 데이터 타입과 길이 정도만 속성의 제약조건으로 지정하는 편이 많다.