[DataBase System] ch10 - 데이터베이스 저장과 접근
2023. 5. 16. 00:43ㆍDataBase/DB 문제풀이
[DataBase System] ch10 - 데이터베이스 저장과 접근
책정보, 데이터베이스 시스템 : 네이버 책 (naver.com)
데이타베이스 시스템 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
문제 풀이
1 ) 디스크에 저장되어 있는 데이터를 접근할 때 접근 시간은 어떤 요소로 구성되는지 설명하라
- 접근 시간 = 탐구 시간 + 회전 지연 시간 + 실제 데이터 전송 시간
- 탐구시간
- 헤드가 판독이나 기록할 데이터가 있는 트랙(실린더)까지 이동하는 데 걸리는 시간
- 회전 지연 시간
- 트랙에서 원하는 레코드가 회전하여 헤드 밑에 까지 올 때의 대기 시간
- 실제 데이터 전송 시간
2 ) 저장 데이터베이스의 일반적인 접근 과정을 단계별로 설명하라
- 사용자가 요구하는 레코드가 어떤 저장 레코드인지 결정해서 파일관리자에게 해당 레코드의 검색을 요청한다
- 파일관리자는 DBMS가 원하는 저장 레코드가 어떤 Page에 저장되어 있는가를 결정해서 디스크 관리자에게 해당 페이지를 요청
- 디스크와 메인 메모리 사이에 한 번의 디스크 접근으로 데이터가 전송되는 양을 말함
- 디스크 관리자는 화일 관리자가 원하는 페이지의 물리적 위치를 알아내서 그 페이지 전송에 필요한 디스크 입출력 명령을 내림
- 경우에 따라서 이 페이지가 다른 목적으로 먼저 수행된 명령에 의해 이미 메모리의 버퍼에 거주하고 있을 수도 있는데 이때는 다시 전송할 필요 없음
3 ) 디스크 관리자의 기능과 화일 관리자의 기능을 설명하고, 이들 간의 관계를 설명하라
- 디스크 관리자 - disk manager
- 운영체제의 한 구성요소
- 모든 물리적 입출력 연산에 대한 책임을 지고 있다
- 물리적 디스크 주소에 대해 알고 있어야 한다.
- 파일 관리자 - file manager
- 디스크 관리자를 이용해서 DBMS가 디스크에 저장된 저장 데이터베이스를 저장 파일들의 집합으로 취급할 수 있도록 지원
- 하나의 저장화일은 한 레코드 타이비의 저장레코드 어커런스들의 집합을 의미
- 관계
- 파일 관리자가 페이지를 요구하면 디스크 관리자는 해당 페이지가 어디에 존재하는지 알아야 함
- 다만 이때 파일 관리자는 명령을 하는 존재기에 해당 파일의 물리적 위치가 어디인지는 몰라도 된다.
- 파일 관리자는 디스크를 단순히 일정한 크기의 페이지로 구성된 페이지 세트들의 논리적 집합으로 취급
4 ) 데이터 밀집이 데이터 접근에 어떻게 영향을 주는 지를 설명하라
- 서로 관련이 된 데이터는 동시에 함께 사용되기에 보통 물리적으로도 디스크 상에 가까이 저장시키는 것을 의미
- 연속해서 읽을 두 레코드가 같은 페이지에 존재 시 첫 번째 레코드에 접근할 때 두 번째 레코드도 주기억장치의 버퍼로 올라가 있음
- 연속해서 읽을 두 레코드가 물리적으로 가까운 두 페이지에 있다면 두 번째 레코드를 접근하기 위해 별도의 물리적 입입출력이 필요하지만 이에 수반되는 탐구 시간은 아주 작을 것
5 ) 레코드 ID는 무엇이며 효율적 구현 방법을 설명하고 그 이점을 설명해 보라
- 파일 관리자가 다루는 저장 레코드들을 내부적으로 식별하는 식별자 역할
- 레코드 ID는 페이지 번호와 그 페이지 내의 유일한 값인 오프셋, 슬롯 번호로 구성되어 있음
6 ) 디스크 디렉터리를 설명하고 어떻게 활용되는가를 설명하라
- 디스크에 있는 모든 페이지 세트 리스트와 페이지 세트의 첫 페이지에 대한 포인터가 저장되어 있는 시스템 파일
- 보통 지정된 페이지(실린더 0, 트랙 0)에 위치
7 ) 디스크를 페이지 단위로 나누어 레코드를 저장할 때 페이지 구조, 페이지 관리 방식과 레코드 검색에 대해 설명하라
페이지 : 디스크와 메인 메모리 사이에 데이터를 전송하는 단위
- 페이지 구조
- 헤더와 바디로 나눠짐
- 헤더
- 페이지 번호, 페이지 크기, 레코드 수 등의 정보 저장
- 바디
- 실제 레코드들이 저장
- 레코드는 고정 길이 또는 가변 길이일 수 있으며 페이지 내에 연속 배치
- 헤더
- 헤더와 바디로 나눠짐
- 페이지 관리 기법
- 연속 할당
- 파일의 모든 페이지를 디스크의 연속적인 공간에 할당
- 디스크 접근 시간을 줄일 수 있지만 외부 단편화 문제 발생 가능
- 연결 할당
- 파일의 각 페이지에 다음 페이지의 주소를 저장하여 링크드 리스트 형태로 연결
- 외부 단편화 문제를 해결하지만 임의 접근이 어렵고 오버헤드 발생할 수 있음
- 색인 할당
- 파일의 각 페이지의 주소를 별도의 색인 블록에 저장하여 관리하는 방식
- 임의 접근 용이
- 외부 단편화 문제 해결
- 색인 블록 유지를 위한 추가적인 공간과 시간 필요
- 연속 할당
- 레코드의 검색
- 디스크에서 원하는 레코드를 찾아내는 과정
- 해당 레코드가 속한 파일을 식별하고, 그 파일의 페이지들을 디스크에서 메인 메모리로 전송, 그중에서 원하는 레코드를 선택하는 방식
- 해당 과정에서 파일 시스템이나 DBMS가 제공하는 인덱스나 해시 테이블과 같은 보조 자료구조를 활용하여 효율적 레코드 검색 가능
8 ) 키 순차 파일과 파일의 차이점을 설명하라
- 키 순차 화일
- 래코드들의 키 값의 크기 순으로 만들어짐
- 파일
- 레코드들이 시스템에 삽입되는 순서대로 만들어짐
9 ) B - 트리의 특성을 설명하고 레코드의 삽입과 삭제에 대해 그 과정을 설명하라
- 이진트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조
- 모든 리프 노드가 같은 높이에 존재
- 노드의 자식 수와 키 수가 일정한 범위 내에 존재
- 정렬된 데이터를 유지하고 검색, 순차 접근, 삽입, 삭제를 log(n)에 수행
- 디스크와 같은 보조 저장 장치에서 효율적 입출력을 위해 고안
- 삽입
- 루트 노드에서 시작하여 탐색하여 삽입을 할 위치 찾기
- 해당 위치는 리프노드이며, 삽입할 키 값은 오름차순
- 삽입할 위치의 노드가 키 값이 가득 차 있다면, 즉 최대 키 값의 개수인 U-1개를 가지고 있다면, 해당 노드를 분할
- U-1개의 키값을 오름차순으로 정렬, 중간 위치의 키 값을 부모 노드로 올림
- 중간 위치보다 작은 키 값들은 오른쪽 자식 노드로 분배
- 삽입하려는 키 값은 분배된 자식 노드 중 알맞은 위치에 삽입
- 부모 노드로 올라간 키 값은 부모 노드의 기존 키 값들과 오름차순으로 정렬
- 부모 노드도 가득 차 있으면 부모 노드도 분할
- 만약 루트 노드가 분할 시, 새로운 루트 노드 생성
- 삭제
- 루트 노드에서 시작하여 탐색을 하면서 삭제 위치 찾기
- 삭제할 위치는 리프 노드이며, 삭제 후에도 최소 키값의 개수인 L-1개 유지
- 만약 삭제 후에도 최소 키 값의 개수를 유지한다면 삭제 과정 종료
- 최소 키 값의 개수보다 작아지면 노드를 재구성
- 형제 노드 중에서 최소 키 값의 개수보다 많은 키 값을 가지고 있는 경우가 있다면, 부모 노드에서 하나의 키 값을 내려받고, 형제 노드에서 하나의 키 값을 올려줌
- 부모와 형제 사이에 있는 자식 포인터도 함께 조정
- 형제 노드 중에서 모두 최소 키 값의 개수만큼 가지고 있는 경우가 있다면, 부모 노드에서 하나의 키 값을 내려받고, 형제노드와 합치기
- 부모와 형제 사이에 있는 자식 포인터도 함께 합침
- 부모 노드로부터 내려받은 키 값이 최소 키 값의 개수보다 작아지면 부모 노드도 재구성
- 부모 노드가 없어지면, 즉 합친 자식 노드가 유일한 자식이 되면 그 자식 노드가 새로운 루트가 됨
- 형제 노드 중에서 최소 키 값의 개수보다 많은 키 값을 가지고 있는 경우가 있다면, 부모 노드에서 하나의 키 값을 내려받고, 형제 노드에서 하나의 키 값을 올려줌
10 ) B+ - 트리의 특성을 설명하고 B-트리와이 차이점을 설명하라
- 루트는 0이거나 2에서 m개의 서브트리를 가짐
- 루트와 리프를 제외한 모든 내부 노드는 최소 [m/2] 개, 최대 m개의 서브트리를 갖는다
- 리프가 아닌 노드에 있는 키 값의 수는 그 노드의 서브트리 수보다 하나 적다
- 모든 리프 노드는 같은 레벨에 존재
- 한 노드 안에 있는 키 값들은 오름차순으로 저장
B+ 트리는 B-트리의 변형이다.
- B+트리는 데이터와 키를 리프 노드에만 저장하고 내부 노드에는 키만 저장
- B+트리는 리프노드를 링크드 리스트로 연결하여 순차 접근을 용이하게 함
- B+트리는 디스크와 같은 보조 저장 장치에서 데이터베이스나 파일 시스템의 인덱스를 관리하는데 용이하다.
11 ) 버킷 해싱을 설명하고 오버플로 처리 방법을 설명하라
- 해싱 함수가 레코드의 키 값으로부터 그 레코드가 저장되어 있는 버킷주소로 해싱하는 것을 의미
- 버킷은 M/B개의 슬롯으로 구성되며, 해시 함수는 각 레코드를 버킷의 첫 번째 슬롯에 할당
- 버킷
- 하나의 주소를 가지고 있으면서 하나 이상의 레코드를 저장 가능한 파일의 한 구역
- 충돌
- 해시 키와 버킷 주소 간의 사상은 보통 다대일의 관계가 되기에 서로 다른 레코드들이 같은 주소로 사상되는 경우 존재
- 해싱 함수에 의해 같은 주소로 변환된 모든 레코드들을 동거자라고 함
- 해당 버킷이 다 차는 경우 오버플로가 생김, 즉 빈 공간이 존재하지 않기에 생기는 문제
- 선형 탐사
- 해시 함수가 계산한 슬롯부터 시작하여 순차적으로 빈 슬롯 찾기
- 제곱 탐사
- 해시함수가 계산한 슬롯에서 제곱함수 적용으로 빈 슬롯 찾기
- 랜덤 탐사
- 해시함수가 계산한 슬롯에서 랜덤 수를 +-하여 빈 슬롯 찾기
- 체이닝
- 각 슬롯의 연결리스트나 배열과 같은 자료구조를 사용하여 여러 레코드 저장
- 선형 탐사
12 ) 확장성 해싱 기법을 설명하고, 충돌을 해결하는 방법에는 어떤 것이 있는지 설명하라
- 디텍 터리와 버킷 집합을 사용
- 해시 테이블의 크기를 동적으로 조절
- 접근 구조와 파일을 분리하여 저장
- 접근 구조
- 디렉터리와 버킷으로 구성
- 접근 구조
- 해시 함수의 일부 비트를 사용하여 레코드를 버킷에 할당하며, 버킷이 가득 차면 디렉터리와 버킷 확장
- 버킷 해싱과 마찬가지로 충돌 존재
- 개방 주소법
- 충돌이 발생하면 다른 슬롯을 탐색하여 빈슬롯 찾기
- 분리 연결법
- 각 슬롯에 연결 리스트나 배열과 같은 자료구조를 사용하여 여러 레코드 저장
- 개방 주소법
'DataBase > DB 문제풀이' 카테고리의 다른 글
[DataBase System] ch11 - 객체 데이터베이스 (0) | 2023.05.19 |
---|---|
[DataBase System] ch09 - 데이터베이스 설계 (0) | 2023.04.24 |
[DataBase System] ch08 - 데이터 모델링 (0) | 2023.04.18 |
[DataBase System] ch07 - 데이터 종속성과 정규화 (0) | 2023.04.18 |
[DataBase System] ch06 - SQL (0) | 2023.04.14 |