뜌릅
데이터베이스(1) 개요 본문
데이터베이스의 정의
특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합이라고 정의한다.
데이터베이스의 주요 특징으로는 다음 4가지가 존재한다.
1. 실시간 접근이 가능해야 한다. 응답시간에 차이가 있을지언정 몇초안에는 응답해야한다.
2. 계속 변화가 가능해야 한다. 데이터에 대한 CRUD가 가능해야 한다.
3. 동시 공유가 가능하다. 여러 사용자들이 접근을 허용하고, 같은 데이터를 동시에 사용가능하게 해야 한다. 동시에 같은 데이터를 사용하게 할려면 까다로운 처리가 필요하다.
4. 내용으로 참조가 가능해야 한다. KEY값으로 참조가 아닌 값으로도 가능해야 한다.
DBMS 정의
데이터 베이스 관리 시스템의 약자이다.
데이터 베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 필요한 정보를 생성해 주는 시스템이다.
DBMS 개요
동일하게 데이터를 관리하기 위한 시스템인 파일 시스템과 대조적이다.
하지만 파일 시스템은 다음과 같은 문제점들이 존재했고, 이들을 해결한 것이 DBMS이다.
1. 같은 내용의 데이터가 여러 파일에 중복 저장된다. 파일 시스템에서는 응용프로그램별로 파일을 유지하므로 같은 데이터가 여러 파일에 저장될 수가 있다. 데이터 중복성 문제가 발생한다.
2. 응용 프로그램이 데이터 파일에 종속적이다. 따라서 사용하는 파일의 구조를 변경하면 응용 프로그램도 변경해야 한다. 이러한 data dependency가 지켜지지 않는다.
3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다. 같은 내용의 파일을 여러개 만들어 응용 프로그램마다 제공할 수도 있지만, 중복성 문제가 해결되지 않으므로 더 큰 문제가 될 수 있다.
4. 응용 프로그램을 개발하기가 쉽지 않다고 한다. 데이터 관리하는 모든 작업을 응용프로그램이 함으로, (DBMS는 DBMS가 알아서함) 개발이 힘들어진다.
DBMS는 위의 문제점을 해결하기위해 나왔다.
하지만 애도 단점이 있다.
1. 공짜인 파일시스템과 달리 DBMS는 별도로 구매해야 하기 때문에 구매비용이 존재한다.
2. 백업과 회복 방법이 복잡하다. 동시 공유, 구조 복잡 등의 이유로 힘들다.
3. 중앙 집중 관리로 인한 취약점 존재.
DBMS의 구조 (스키마)
스키마란 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것이다.
위의 그림같은 애도 스키마라고 볼 수 있다.
데이터베이스 스키마에는 3단계가 존재하는데 외부 external level, 개념 conceptual level, 내부(physical) internal level으로 나뉜다.
내부에서 외부 단계로 갈수록 추상화 레벨이 높아진다.
외부 단계(external schema)
외부 단계에서는 개별 사용자 관점에서 데이터베이스를 이해하고 표현한다. 따라서 개별 사용자마다 스키마가 다를 수 있고, 하나의 스키마를 여러 사용자가 공유할 수 있다.
개념 단계(conceptual schema)
데이터베이스를 이용하는 사용자들의 관점을 통합하여, 데이터베이스를 조직 전체의 관점에서 이해하고 표현한다. DBMS나 관리자의 관점에서 전체 데이터베이스의 논리적 구조를 정의한다. 하나의 데이터베이스에는 개념 스키마가 하나만 존재하고, 이 개념스키마를 이용하여 외부 스키마를 정의한다.
내부 단계(Internal Schema)
내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드의 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의한다. 내부 스키마는 데이터베이스의 개념 스키마에 대한 물리적인 저장 구조를 표현하므로 하나의 데이터베이스에 하나만 존재한다.
저장 장치의 관점으로 볼 수 있다.
DBMS의 독립성(Data Independency)
Logical Data Independency
논리적 데이터 독립성은 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다. API의 실제 내부동작이 바뀌더래도 Interface는 그대로 유지하는 것과 동일한 개념이다. 사용자는 데이터베이스의 구조가 바뀌더래도, 그것을 알필요 없는 것이다.
Physical Data Independency
내부 스키마가 변경 되더래도 개념 스키마가 영향을 받지 않는것이다. 파일시스템에서는 파일 구조가 바뀌면 응용프로그램도 바뀌고 우리가 보는 디렉토리도 바뀌게 된다. 하지만 데이터베이스는 그러지 않는다. 저장 구조가 변경되어도 관련된 개념/내부 사상 정보만 적절히 수정해 주면 직접적으로 관련이 없는 데이터베이스의 논리적 구조는 영향을 받지 않는다.