데이터베이스의 접근 순서
1. DBMS는 사용자가 요구하는 레코드가 어떤 저장 레코드(stored record)인가를 결정해서 파일관리자(file manager)에게 그 저장 레코드의 검색을 요청한다.
2. 파일관리자는 DBMS가 원하는 저장 레코드가 어떤 페이지(page)에 저장되어 있는가를 결정해서 디스크 관리자(disk manager)에게 그 페이지를 요청한다. 여기서 이 페이지는 보통 블록(block)으로서 입출력(I/O) 단위이다. 즉, 디스크와 메인 메모리 사이에 한 번의 디스크 접근으로 데이터가 전송되는 양을 말한다. 보통 1KB, 2KB, 또는 4KB 크기의 페이지다.
3. 디스크 관리자는 파일관리자가 원하는 페이지(블록)의 물리적 위치를 알아내어 그 페이지 전송에 필요한 디스크 입출력 명령을 내린다. 경우에 따라서는 이 페이지가 다른 목적으로 먼저 수행된 명령에 의해 이미 메인 메모리의 버퍼에 거주하고 있을 수도 있는데, 이때는 물론 다시 전송할 필요가 없다.
DBMS는 데이터베이스를 저장 레코드의 집합으로 간주하고 파일관리자와 인터페이스를 한다. 파일관리자는 데이터베이스를 페이지의 집합으로 보고 다시 디스크 관리자와 인터페이스를 한다. 디스크 관리자는 디스크를 실제 있는 그대로 취급한다.
디스크 관리자(disk manager)
디스크 관리자(disk manager)는 운영체제(OS)의 한 구성요소로 모든 물리적 입출력(I/O) 연산에 대한 책임을 지고 있다. 따라서 디스크 관리자는 반드시 물리적 디스크 주소(physical disk address)에 대해 알고 있어야 한다.
예를 들어, 파일 관리자가 어떤 페이지 P를 요구하면, 디스크 관리자는 이 페이지 P가 디스크상에 정확히 어디에 위치하고 있는지를 알고 있어야 한다.
그러나 이 디스크 관리자에 명령하는 파일 관리자 자신은 그 페이지의 물리적 위치에 대해서 몰라도 괜찮다. 왜냐하면, 이 파일 관리자는 디스크를 단순히 일정한 크기의 페이지로 구성된 페이지 세트(page set)들의 논리적 집합으로 취급하기 때문이다. 각 페이지 세트는 유일한 페이지 세트 ID (page set ID)로 식별되고, 이 페이지 세트를 구성하고 있는 각 페이지는 그 디스크 내에서 유일한 페이지 번호(page number)로 식별된다. 물론 이 페이지 세트들은 서로 중첩되지 않는다.
각 페이지는 오직 하나의 페이지 세트에만 속해 있고, 페이지 세트들에 의해 공용되지 않는다.
디스크 관리자는 바로 이 페이지 번호를 물리적 디스크 주소로 변환하는 사상(mapping) 연산을 수행한다.
이런 방식은 장치에 연관된 특정 코드를 이 디스크 관리자에게만 국한시켜서 상위 레벨의 모든 구성 요소들, 특별히 파일 관리자를 물리적 장치로부터 독립시킬 수 있다는 장점이 있다.
디스크의 페이지들 전체는 서로 중첩되지 않은 페이지 세트(page set)로 분할되어 있는데, 이 페이지 세트 중에서 하나의 커다란 자유 공간 페이지 세트(free space page set)가 있어서 예비 페이지의 기능을 한다.
그 이외의 다른 페이지 세트들은 모두 실제 데이터를 저장하기 위해 할당되어 있다.
페이지 세트에 대한 페이지의 할당과 횟수는 파일 관리자의 요청에 따라 실제로 디스크 관리자가 수행한다.
디스크 관리자가 페이지 세트에 실행할 수 있는 페이지 관리 연산, 즉 파일 관리자가 디스크 관리자에게 명령할 수 있는 연산에는 다음과 같은 것들이 있다.
1. 페이지 세트 S로부터의 페이지 P의 검색
2. 페이지 세트 S내에서 페이지 P의 교체(수정)
3. 페이지 세트 S에 새로운 페이지 P의 추가(삽입)
(자유 공간 페이지 세트에서 빈 페이지를 할당받아 새로운 페이지 번호 P를 부여하고 페이지 세트 S에 삽입)
4. 페이지 세트 S에서 페이지 P의 제거(삭제)
(페이지 P를 페이지 세트 S로부터 제거하여 자유 공간 페이지 세트로 반환)
1, 2번 연산은 파일 관리자의 요청에 따라 수행하는 기본적인 페이지 레벨 입출력 연산이고,
나머지 3, 4번 연산은 디스크 관리자 자신이 필요에 따라 수행하는 연산들이다.
파일 관리자(file manger)
파일 관리자(file manager)는 디스크 관리자를 이용해서 DBMS가 디스크에 저장된 저장 데이터베이스를 저장 파일(stored file)들의 집합으로 취급할 수 있도록 지원 한다.
하나의 저장 파일(stored file)은 한 레코드 타입의 저장 레코드 어커런스(occurrence, instance)들의 집합이다.
하나의 페이지 세트는 하나 또는 둘 이상의 저장 파일을 포함 할 수 있다.
한 가지 유의할 점은 DBMS는 페이지 세트에 대한 세부적인 관리 책임은 지지 않지만, 페이지 세트의 존재에 대해서는 알고 있어야 한다. 또 DBMS는 어떤 두 저장 파일이 같은 페이지 세트에 저장되어 있는지, 어떤 두 저장 레코드가 같은 페이지에 저장되어 있는지를 알아야 한다. 서로 연관된 레코드는 보통 함께 접근되기 때문에 이들이 같은 페이지에 저장되어 있으면, 접근의 효율성을 얻을 수 있기 때문이다. 각 저장 파일은 파일이름(file name) 또는 파일 ID로 식별되기 때문에 이것은 적어도 그 파일을 포함하고 있는 페이지 세트 내에서는 유일해야 한다. 각 저장 레코드도 레코드 번호(recode number) 또는 레코드 ID(RID : Record IDentifier)로 식별되는데, 이것도 그것이 저장되어 있는 저장 파일 내에서는 유일하다. 실제로 레코드 ID들은 보통 그들이 속해 있는 파일뿐만 아니라 전체 디스크 내에서 유일하다. 이 레코드 ID는 페이지 번호와 그 페이지 내의 어떤 유일한 값인 오프셋(offset), 즉 슬롯번호(slot number)로 구성되기 때문이다. 파일관리자는 보통 운영체제의 한 구성 요소로 되어있지만, DBMS의 한 모듈로 포함되어 있는 것도 있다.
이들은 기능면에서 별 차이는 없다. 그러나 운영 체제의 한 모듈로 제공되는 파일 관리자는 범용적인 것이어서 DBMS와 같이 특수 목적을 가진 응용에 대해서는 이상적이지 않다고 평가하고 있다,
파일 관리자가 저장 파일에 대해 수행할 수 있는 파일 관리 연산, 즉 DBMS가 파일 관리자에게 명령할 수 있는 연산에는 다음과 같은 것들이 있다.
1. 저장 파일 f에서 저장 레코드 r의 검색
2. 저장 파일 f에 있는 저장 레코드 r의 수정
3. 저장 파일 f에 새로운 레코드를 추가하고 새로운 RID, r의 반환
4. 저장 파일 f에서 저장 레코드 r의 제거
5. 새로운 저장 파일 f의 생성
6. 저장 파일 f의 제거
DBMS는 이와 같은 기본적인 파일 관리 연산들을 사용해서,
데이터베이스의 저장 구조를 구축하고 관리 한다.
페이지 세트와 파일
디스크 관리자의 주요 기능은 파일 관리자가 물리적인 디스크 입출력이 아니라, 논리적인 페이지 입출력으로 작동할 수 있게끔 지원하는 것이다. 디스크 관리자의 이러한 기능을 페이지 관리(page management)라고 한다. 예를 들면,
학생 파일
페이지 |
학번 |
이름 |
학년 |
전공 |
P1 |
100 |
가가가 |
1 |
컴공 |
P2 |
200 |
나나나 |
2 |
컴공 |
P3 |
300 |
다다다 |
3 |
컴공 |
P4 |
400 |
라라라 |
4 |
컴공 |
페이지 구조
페이지 번호 |
포인터 | |
레코드 |
제일 처음엔 저장 데이터베이스에 아무런 데이터도 저장되어 있지 않다.
디스크에는 하나의 자유 공간 페이지 세트만 있게 되는데, 디스크에 있는 페이지 0번을 제외한 모든 페이지를 포함하게 된다. 이 페이지들은 1번부터 진행된다.
0 |
|
x |
1 |
|
2 |
2 |
|
3 |
3 |
|
4 |
4 |
|
5 |
5 |
|
6 |
|
|
|
|
|
| ||||||||||||
6 |
|
7 |
7 |
|
8 |
8 |
|
9 |
9 |
|
10 |
10 |
|
11 |
11 |
|
x |
|
|
|
|
|
|
파일 관리자가 학생 파일에 있는 4개의 레코드를 삽입하기 위해 페이지 세트 생성을 요구한다.
그러면 디스크 관리자는 자유공간 페이지 세트의 페이지 1에서 4까지를 학생 페이지 세트라고 이름을 지정하고 할당한다. 자유공간 페이지는 5번부터 11번까지로 변한다.
0 |
x |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
x |
5 |
6 | ||||||
P1 |
P2 |
P3 |
P4 |
||||||||||||||
6 |
7 |
7 |
8 |
8 |
9 |
9 |
10 |
10 |
11 |
11 |
x | ||||||
파일 관리자가 새로운 학생 레코드 P5(학번 500)을 삽입하려 하면, 디스크 관리자는 자유공간 페이지 세트에서 첫 번째 자유 페이지(페이지 5번)을 찾아서 학생 페이지 세트에 삽입한다.
0 |
x |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 | ||||||
P1 |
P2 |
P3 |
P4 |
P5 | |||||||||||||
6 |
7 |
7 |
8 |
8 |
9 |
9 |
10 |
10 |
11 |
11 |
x | ||||||
파일 관리자가 P2를 삭제한다고 하면, 디스크 관리자는 이 레코드가 저장되어 있는 페이지 2번을 자유 공간 페이지 세트에 반환한다. 마지막 페이지인 5번 페이지는 첫번째 자유 공간을 가르키는 포인터를 가지고 있는데, 첫번째 자유공간 페이지가 2번 페이지가 되었으므로, 2번을 가리키게 변동이 되고, 2번 페이지는 첫번째 자유 공간 페이지가 되었으므로, 두번째 자유공간 페이지를 가르키게 된다.
0 |
x |
1 |
2 |
2 |
6 |
3 |
4 |
4 |
5 |
5 |
2 | ||||||
P1 |
|
P3 |
P4 |
P5 | |||||||||||||
6 |
7 |
7 |
8 |
8 |
9 |
9 |
10 |
10 |
11 |
11 |
x | ||||||
파일 관리자가 다시 P6을 추가한다고 하면,
첫번째 자유 공간 페이지인 페이지 2번에 P6을 추가하게 된다.
0 |
x |
1 |
2 |
2 |
6 |
3 |
4 |
4 |
5 |
5 |
2 | ||||||
P1 |
P6 |
P3 |
P4 |
P5 | |||||||||||||
6 |
7 |
7 |
8 |
8 |
9 |
9 |
10 |
10 |
11 |
11 |
x | ||||||
시스템이 얼마 동안 삽입, 삭제 연산을 계속 실행하고 나면, 처음에 논리적 순서에 따라 물리적으로 인접했던 페이지들이 더 이상 물리적으로는 인접하지 않게 된다. 따라서 한 페이지 세트 내에서 페이지의 논리적 순서가 물리적 인접으로 표현되지 않는다.
따라서 자연히 포인터를 이용해 표현할 수 밖에 없다. 각 페이지는 페이지 헤드(page head)를 갖게 하여 모든 제어 정보(control infomation)를 저장하는데, 여기에는 논리적 순서에 의한 다음 페이지(next page)의 물리적 디스크 주소를 포함하고 있다.
이 페이지 헤드에 있는 다음 페이지 포인터는 디스크 관리자가 관리하기 때문에, 파일 관리자는 전혀 알 수가 없고, 알 필요도 없다.
디스크 관리자는 각 페이지 세트의 첫 번째 페이지의 주소만 알면, 나머지 페이지들은 페이지 헤드에 있는 다음 페이지 포인터를 통해 쉽게 식별 할 수 있다.
디스크는 지정된 페이지(통상 실린더 0, 트랙 0)에 바로 이런 정보를 저장하고 있다. 이 페이지를 디스크 티렉토리(disk directory) 또는 페이지 세트 디렉토리(page set directory)라고 하는데, 여기에는 현재 디스크에 있는 모든 페이지 세트의 리스트와 각 페이지 세트의 첫 번째 페이지에 대한 포인터(주소)가 저장되어 있다.
디스크 디렉토리(페이지 0번)
디스크 관리자는 파일 관리자로 하여금 물리적 디스크 입출력에 대한 세부적인 사항을 알 필요 없이, 논리적 페이지로만 동작할 수 있게 지원한다. 반면, 파일 관리자는 DBMS로 하여금 페이지 입출력에 대한 세부적인 사항에 대해 알 필요 없이, 저장 파일과 저장 레코드만으로 동작하게 한다. 이러한 파일 관리자의 기능을 저장 레코드 관리(stored record management)라고 한다.
파일 조직 방법
데이터베이스는 궁극적으로 시스템 내부에서 파일(file)로 구현된다. 파일은 같은 타입의 레코드들의 집합을 말하는데, 파일 조직 (file organization)은 파일의 레코드들을 물리적 저장장치에 저장시키기 위한 배치 방법으로 데이터베이스의 물리적 저장 방법이 된다.
파일 조직 방법은 레코드의 저장과 접근 방법을 결정해 주기 때문에 아주 중요하다.
파일 조직은 기본적으로 저장된 레코드들에 대한 어떤 접근 방법(access method)을 제공하느냐에 따라 크게 순차 방법(sequential method), 인덱스 방법(index method), 해싱 방법(hashing method) 등으로 구분 된다.
순차 방법
순차방법은 레코드들의 물리적 순서가 그 레코드들의 논리적 순서와 같게 순차적으로 저장하는 방법이다. 이 방법으로 구성하는 파일에는 히프(heap), 파일(pile), 즉 레코드가 시스템에 삽입되는 순서대로 만들어지는 엔트리 순차파일(entry-sequence file)과 레코드들의 키 값의 크기 순으로 만들어지는 키 순차 파일(key-sequence file)이 있다. 순차파일이라고 하면 보통 키 순차 파일을 뜻한다.
순차 파일에서의 레코드 접근은 기본적으로 레코드가 저장되어 있는 물리적 순차(physical sequence)에 따른다. 어느 한 레코드를 접근하기 위해서는 물리적으로 이 레코드 앞에 저장되어 있는 모든 레코드들을 차례로 접근하지 않으면 안 된다.
따라서 이 순차 파일은 파일을 복사하거나 레코드들을 순차적으로 일괄 처리(batch processing)하는 응용에서 많이 사용한다.
인덱스 방법
데이터 레코드를 접근하기 위해서 먼저 해당 인덱스를 찾아서, 그 인덱스가 가리키는 주소를 따라가 원하는 레코드를 접근할 수 있도록 하는 저장 방법이다. 인덱스된 파일은 인덱스 파일과 데이터 파일로 구성된다.
<키 값, 주소>의 쌍으로 구성된다.
인덱스를 사용하는 파일은 하나의 인덱스를 사용하는 인덱스된 순차파일과 여러 개의 인덱스를 동시에 사용하는 다중키 파일(multikey file)로 나누어 볼 수 있다. 인덱스 구조에서는 B-Tree, B+-tree 구조를 많이 쓴다.
해싱 방법
해싱 방법은 다른 어떤 레코드도 참조하지 않고, 원하는 목표 레코드를 직접 접근할 수 있게 하는 기법인데, 이 방법을 기초로 만들어진 파일을 직접 파일(direct file)이라고 한다.
직접 파일에서는 레코드를 식별하기 위한 키 값과, 저장 장치에 저장되어 있는 레코드 주소 사이에 사상, 즉 대응 관계가 성립되어 있어야 한다. 그러나 레코드의 논리적 순서와 물리적 순서가 특정 관계를 가지고 있어야 할 필요는 없다. 또, 레코드가 키 값에 따라 물리적으로 정렬되어 있을 필요도 없다.
키 값을 가지고 레코드를 직접 접근할 수 있기 위해서는 먼저 키 값과 물리적 주소 사이에 어떤 대응 관계를 정의해 두고, 어떤 키 값이 주어졌을 때 그 키 값으로부터 그 키 값을 가진 레코드가 저장되어 있는 주소를 계산해 낼 수 있는 기법이 필요한데, 이것이 해싱 함수(hashing function)이다.
따라서 이 해싱 함수는 주어진 키 값을 레코드의 물리적 주소로 사상시키는 사상 함수(mapping function)가 된다.
이 해싱 함수가 레코드 주소를 계산하기 위해 사용하는 레코드의 키 값을 해시 필드(hash field) 또는 해시 키 (hash key)라 하고, 계산 결과로 나온 하나의 주소를 해시 주소(hash address)라 한다.
직접 파일에서는 레코드를 삽입하거나 검색할 때 이 해시 함수를 이용한다.
이 해시는 인덱스와 상당히 다르다. 하나의 저장 파일은 원하는 수만큼의 여러 인덱스를 가질 수 있지만, 해시 구조는 하나밖에 가질 수 없다. 하나의 파일은 여러 개의 인덱스 필드를 가질 수 있으나, 해시 필드는 하나만 가질 수 있다.
데이터베이스 관리 시스템의 장단점
장점
데이터베이스 중복의 최소화
데이터베이스는 데이터를 통합하여 구성함으로써 데이터 중복을 사전에 통제 할 수 있다.
데이터 중복을 최소화한다는 의미이지 완전히 중복을 허용하지 않는 것은 아니다.
데이터의 공용
같은 내용의 데이터를 여러 가지 구조로 지원해 줄 수 있는 DBMS의 복잡하고도 정교한 기법 때문에 데이터베이스의 공용이 가능하다
데이터의 일관성 유지
데이터의 중복을 제어하고,
중앙 집중식 통제를 통해 데이터의 일관성을 유지한다.
데이터의 무결성(정확성) 유지
무결성(integrity)이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성(accuracy)을 말한다. 데이터베이스가 접근 처리될 떄마다 제어 기능을 통해 그 유효성을 검사하기 때문에 데이터 무결성을 유지할 수 있다.
데이터의 보안 보장
하나의 DBMS는 자기의 데이터베이스를 중앙 집중식으로 총괄, 관장하기 때문에 데이터베이스의 관리 및 접근을 효율적으로 제어할 수 있다. 정당한 사용자, 허용된 데이터와 연산등을 확인 검사하기 때문에 모든 데이터에 대해 철저한 보안 유지를 보장해 줄 수 있다.
표준화
DBMS의 필수적인 데이터 제어 기능을 통해 데이터의 기술 양식, 내용, 처리 방식, 문서화 양식 등에 관한 표준화를 범 기관적으로 쉽게 시행할 수 있다.
전체 데이터 요구의 조정
데이터베이스는 한 기관의 모든 응용 시스템들이 요구하는 데이터들을 전체적으로 통합 분석하게 하여 상충되는 데이터 요구는 조정해서 기관 전체에 가장 유익한 구조로 조직하여 효율적인 정보 처리 효과를 얻게 할 수 있다.
단점
운영비의 증대
특정 응용 프로그램의 복잡화
데이터베이스에는 상이한 여러 유형의 데이터가 서로 관련되어 있다. 특정 프로그램은 이러한 상황 속에서 여러 가지 제한점을 가지고 작성되고 수행될 수 있다. 특수 목적의 응용 시스템은 설계 기간이 길어지게 되고 보다 전문적, 기술적이 되어야 하기 때문에 그 성능이 저하될 수 있다.
복잡한 백업과 회복
데이터베이스는 그 구조가 복잡하고, 여러 사용자가 동시에 공용하기 때문에 장애가 일어났을 때
정확한 이유나 상태를 파악하기가 쉽지 않을 뿐만 아니라, 여기에 대한 백업(backup) 조치나 사후 회복(recovery) 기법을 아주 정교하게 수립해 놓아야 한다.
시스템의 취약성
데이터베이스 시스템은 통합된 시스템이기 때문에 그 일부의 장애(failure)가 전체 시스템을 정지시켜 시스템 신뢰성과 가용성을 저해할 수 있다. 데이터베이스에 의전도가 높은 환경에서는
아주 치명적인 약점이 될 수 있다.
'공부하자 > IT' 카테고리의 다른 글
[웹언어] ASP/JSP/PHP 특징 및 장단점 (3) | 2012.12.28 |
---|---|
[웹언어] 닷넷(.net) 소개 및 장단점 (3) | 2012.12.28 |
[웹언어] JSP 소개 및 장단점 (2) | 2012.12.28 |
[웹언어] ASP 소개 및 장단점 (1) | 2012.12.28 |
[웹언어] PHP 소개 및 장단점 (1) | 2012.12.28 |
[DB] 데이터 종속성과 정규화 (7) | 2012.12.28 |
[DB] DBMS시스템의 구성 (0) | 2012.12.28 |
[DB] DBMS의 구성 (0) | 2012.12.28 |
[암호학] 개인정보보호법 개정 (0) | 2012.12.28 |
[최신기술] 빅데이터 & 클라우드컴퓨팅 (1) | 2012.12.28 |