1. Database 시스템 이란?
데이터베이스 시스템이란 전산화된 데이터 파일의 저장 장치라고 보시면 됩니다. 즉, 정보를 유지하고, 이 정보를 이용 가능하게 하는 시스템을 말합니다. 그리고 다음과 같은 파일 연산을 제공합니다.
- 새로운 파일을 데이터베이스가 추가할 수 있는 연산
- 새로운 데이터를 기존의 파일에 삽입할 수 있는 연산
- 기존의 파일에서 데이터를 검색할 수 있는 연산
- 기존의 파일에 있는 데이터를 갱신할 수 있는 연산
- 기존의 파일로부터 데이터를 삭제할 수 있는 연산
- 데이터베이스에서 기존의 파일을 제거할 수 있는 연산
그런데 데이터베이스에서 사용하는 단어들에 대해 주의해야 할 사항이 있습니다. 저장파일은 파일로써 보다는 테이블(Table)로 취급합니다. 테이블의 각 행은 파일의 레코드를 표현합니다. SELECT, INSERT, UPDATE와 DELETE 연산은 SQL(Structured Query Language) 데이터베이스의 문장입니다. 그리고 SQL은 하나의 프로그래밍 언어라고 보시면 되겠네요. 그럼 데이터베이스의 장점은 무엇일까요?
- 중복성(Redundancy)이 감소된다.
- 불일치(Inconsistency)를 피할 수 있다.
- 데이터의 공유성(Shared)
- 표준화(Standard)가 가능하다.
- 보안(Security)을 유지할 수 있다.
- 무결성(Integrity)을 유지할 수 있다.
- 요구사항들의 충돌이 해결될 수 있다.
- 데이터의 독립성(Data Independence)
여기에서 가장 중요한 것이 데이터의 독립성이라고 할 수 있습니다. 데이터 독립성의 목적은 "저장구조(Storage Structure)와 액세스 전략(Access Strategy)으로부터 응용을 분리시키는 것"으로 정의할 수 있습니다. 여기서 응용이란 특정 저장구조나 액세스 전략에 의존하지 않는 것을 의미합니다. 쉽게 얘기하자면 어떤 속성에 대해 수행한 변경이 동일한 관계를 위한 다른 속성들에게 어떠한 인지가능한 영향도 주지 않는다는 것을 의미합니다.
그럼 관계형 시스템과 다른 시스템의 차이는 무엇일까요? 요새 개발되고 있는 모든 데이터베이스 시스템을 관계형 시스템이라고 보시면 됩니다. 관계형 시스템에서는 데이터를 테이블(Table)로써 받아들이고, 사용자가 제시한 연산자는 새로운 테이블을 만들어내는 연산자라고 보시면 됩니다. 그럼 관계형 데이터베이스 시스템은 다음과 같은 특성이 있습니다.
- 모든 엔티티는 그 엔티티의 인스턴스를 독특하게 정의하는 일련의 속성들을 갖고 있는데, 이 속성 집합을 기본 키(Primary Key)라고 부릅니다.
- 기본 키는 어떠한 부분도 널(Null)이 될 수 없다.
- 모든 엔티티는 엔티티 내의 각 행을 독특하게 식별하는 일련의 속성들을 갖고 있습니다. 그리고 어떠한 복제 행도 테이블 내에 존재할 수 없죠. 어떻게 보면 이것은 모든 테이블이 기본 키를 갖고 있어야 한다는 말입니다. 이러한 개념을 데이터 무결성(Data Integrity)라고 부르죠.
- 각각의 테이블들은 외부 키를 통해서 서로 관계를 맺습니다. 외부 키는 가능한 값의 집합이 두 번째 테이블의 기본 키에서 발견되는 목적인 한 개의 테이블 열입니다. 그래야 테이블들을 Join해서 사용하기가 쉽죠. 참조 무결성은 어떤 외부 키 열 내에 있는 값(Value)들이 그것이 참조하는 키본 키나 널(Null) 값으로 제한될 때 성취됩니다.
- 행의 순서는 자발적입니다. 관계형 데이터베이스에서는 테이블에 함축된 순서가 없습니다. 여러분이 순서를 지정하지 않으면 테이블에서 행이 검색될 순서를 알 수가 없죠. 프로그래밍을 하다보면 ORDER BY의 문구로 순서를 정해줄 수 있습니다.
- 열의 순서도 자발적입니다. 행의 경우처럼 함축된 순서가 없습니다.
데이터베이스 시스템의 구조는 내부, 외부, 개념의 세 단계로 나누어집니다. 내부단계(Internal Level)는 물리적인 기억장소와 가장 가까운 단계로 데이터가 실제로 저장되는 방법과 관련이 있습니다. 외부단계(External Level)은 사용자와 가장 가까운 단계죠. 사용자 개개인이 보는 자료에 대한 관점과 관련이 있습니다. 그리고 개념단계(Conceptual Level)는 내부단계와 외부단계 사이에 위치하는 간접(Indirection)단계죠.
데이터베이스를 접하다 보면 DBA라는 말을 많이 듣게 됩니다. 그럼 데이터베이스 관리자(Database Administrator : DBA)에 대해서 알아보죠. 데이터베이스 관리자는 전체 시스템을 모두 제어하는 개인이나 그룹입니다. DBA의 책임은 다음과 같은 것들이 있죠.
- 데이터베이스의 정보 내용 결정. 즉 어떤 정보가 데이터베이스에 포함되어야 하는지 정확하게 결정하는 것이 DBA의 일입니다.
- 기억장치 구조와 액세스 전략 결정. DBA는 데이터베이스 안에서 데이터가 어떻게 표현되는지 결정해야 하고 기억장소 구조 정의를 작성함으로써 그 표현을 정의해야 합니다. 또한 내부적 단계와 개념적 단계 사이에 관련된 사상을 정리해야 합니다.
- 사용자와의 연락. 사용자가 요구한 데이터가 유용함을 보장하고, 필요한 외부 스키마를 응용 가능한 외부 DDL을 사용하여 기록할 수 있도록 해 준다.
- 보안 검사와 무결성 검사 정의.
- 예비조치와 회복에 대한 전략 정의. 사용자의 오류나 하드웨어 또는 운영체계 시스템의 실수로 데이터베이스의 임의의 부분에서 오류가 발생했을 때 최소한의 지연시간과 가능한 한 남은 시스템에 영향이 없도록 해서 데이터를 복구해야 합니다. DBA는 적절한 회복전략을 정의하고 구현해야 합니다.
- 변화하는 요구에 대한 적응과 성능향상에 대한 감시. DBA는 기업을 위한 최상의 실행 결과를 얻도록 시스템을 구성해야 합니다. 그리고 변화하는 요구에 적절한 조절을 해 주어야 합니다.
데이터베이스 관리 시스템(Database Management System : DBMS)은 데이터베이스의 모든 액세스를 처리하는 소프트웨어입니다. 개념적으로 다음과 같은 작업이 발생합니다.
- 사용자가 특수한 데이터 종속언어(SQL 같은)를 사용하여 액세스를 요구한다.
- DBMS가 이 요구를 받아서 분석한다.
- DBMS가 이 사용자의 외부 스키마와 외부적/개념적 사상, 개념 스키마, 개념적/내부적 사상, 기억장소 구조 정의를 차례대로 검토한다.
- DBMS가 저장된 데이터베이스에서 필요한 연산을 수행한다.
끝내기 전에 간단히 SQL이 무엇인가 살펴보도록 하죠. SQL은 보통 "시이퀄"이라고 발음합니다. SQL은 구조화 질의 언어라고 부르는데, SQL을 이용해서 여러분은 데이터베이스와 통신을 할 수 있습니다. SQL은 비 프로시저 언어입니다. 데이터에 접근하여 조작하는 방법을 정확히 기술해야 하는 C 언어나 COBOL 언어와는 달리 SQL은 해야 할 것을 지정합니다. SQL은 내부적으로 요구한 것을 수행하는 방법을 결정합니다. SQL의 산업기준은 ANSI입니다. ORACLE의 SQL은 무결성 향상 기능(Integrity Enhancement Feature)을 완전히 실행하는 ANSI X3.135-1989/ISO 9075-1989 기준의 레벨 2를 준수한다고 하네요. 뭔지 모르지만..
여기 까지 그냥 데이터베이스가 이런 것이구나! 하고 부담없이 생각하세요. |