Download presentation
Presentation is loading. Please wait.
1
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
제10장 저장 장치와 파일 구조 물리 저장 매체의 개요 자기 디스크 RAID 3차 저장 장치 저장 장치 액세스 파일 구조 파일내 레코드의 구조 데이터 사전 저장 객체 지향 데이터베이스의 저장 구조 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
2
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
물리 저장 매체의 분류 데이터를 액세스할 수 있는 속도 데이터 단위당 비용 신뢰도 - 정전 또는 시스템 고장시 데이터 유실 - 저장 장치의 물리적 고장 저장 장치는 다음과 같이 구분할 수 있다. - 휘발성 저장 장치: 정전시 내용이 유실됨 - 비휘발성 저장 장치: 정전시 내용이 유실되지 않는다. 2차 및 3차 저장 장치와 함께 배터리 백업 메인 메모리 등이 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
3
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
물리 저장 매체 캐쉬 - 가장 빠르고 가장 비싼 유형의 저장 장치; 휘발성; 하드웨어와 운영체제가 관리한다. 메인 메모리: - 범용 기계 명령은 메인 메모리에 놓인 데이터에 연산한다. - 액세스가 빠르지만, 일반적으로 전체 데이터베이스를 저장하기에는 너무 작다. - 때때로 코어 메모리라 하기도 한다. - 휘발성: 정전 또는 시스템 고장이 발생하면 메인 메모리의 내용은 보통 유실된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
4
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
물리 저장 매체(계속) 플래시 메모리 - 읽기는 대량 메인 메모리 만큼 빠르다; 정전시에도 데이터는 유실되지 않는다; 그러나 한정된 횟수의 쓰기/지우기 사이클만을 지원한다. 자기 디스크 저장 장치 : 주된 장기 데이터 저장 매체; 일반적으로 데이터베이스 전체를 저장한다. - 액세스를 위해서는 데이터가 디스크에서 메모리로 이동해야 하고 저장을 위해서는 디스크에 다시 쓰인다. - 직접 액세스 - 어떠한 순서로도 디스크상의 데이터를 읽을 수 있다. - 정전과 시스템 고장에도 데이터는 보통 유실되지 않는다; 디스크 고장이 데이터를 파괴할 수 있지만, 시스템 고장보다는 빈번하지 않다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
5
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
물리 저장 매체(계속) 광 저장 장치 - 비휘발성, CD-ROM 이 가장 범용적인 유형이다. 보관용 저장 장치로는 WORM(write-once, read-many) 광 디스크가 사용된다. 테이프 저장 장치 - 주로 백업용(디스크 고장으로부터 회복하기 위한) 및 보관용 데이터로 사용되며, 비휘발성이다. - 순차 액세스 - 디스크에 비해 훨씬 느리다. - 대용량임(5GB 테이프가 보통이다). - 테이프는 드라이브로부터 탈착될 수 있으며, 저장 비용이 디스크 보다 훨씬 싸다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
6
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
저장 장치 계층 캐쉬 메인 메모리 플래쉬 메모리 자기디스크 광 디스크 자기 테이프 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
7
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
저장 장치 계층(계속) 주 저장 장치: 가장 빠르지만, 휘발성이다 (캐쉬, 메인 메모리). 2차 저장 장치: 계층상에서 다음 계층이며, 비휘발성이 고 비교적 빠른 액세스 시간을 가진다. 온라인 저장 장치라 하기도 한다 (플래시 메모리, 자기 디스크). 3차 저장 장치: 계층상에서 가장 하위 계층이며, 비휘발성이고 액세스 시간이 느리다. 오프라인 저장 장치라 하기도 한다 (자기 테이프, 광 저장 장치). Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
8
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
자기 디스크 구조 트랙 t 회전 축 섹터 s 암 축 실린더 c 읽기-쓰기 헤드 디스크 판 암 회 전 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
9
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
자기 디스크 읽기 - 쓰기 헤드 - 디스크 판 표면의 가까이에 위치해 있는 장치로서 코드화된 정보를 자기적으로 읽고 쓴다. 디스크 판의 표면은 원형의 트랙으로 나뉘어 있으며, 각 트랙은 섹터로 나뉘어 있다. 섹터는 데이터를 읽고 쓸 수 있는 가장 작은 단위이다. 섹터를 읽고/ 쓰려면 - 디스크 암이 앞뒤로 움직여 해당 트랙에 헤드를 위치시킨다. - 디스크 판은 계속해서 회전하고 있으며, 헤드 아래에 섹터가 올 때 데이터를 읽고/ 쓴다. 헤드 - 디스크 조립- 공통 암에 장착된 여러 헤드(디스크 판당 하나)를 가진 한 회전 축상의 여러 디스크 판 실린더 i 는 모든 디스크 판의 i 번째 트랙들로 구성된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
10
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
디스크 서브 시스템 디스크 제어기 – 컴퓨터 시스템과 디스크 드라이브 하드웨어간에 인터페이스 한다. - 고급 명령으로 섹터를 읽고 쓰도록 한다. - 디스크 암을 해당 트랙으로 움직이도록 하는 행위와 실제로 데 이터를 읽고 쓰는 행위 등을 시작하도록 한다. 디스크 제어기 시스템 버스 디스크 들 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
11
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
디스크의 성능 측정 액세스 시간 - 읽기 또는 쓰기 요청이 제기되어 데이터 전송이 시작할 때까지 걸리는 시간. 다음과 같이 구성된다. - 탐색 시간 - 해당 트랙상에 암이 위치하는데 걸리는 시간. 평균 탐색 시간은 최악의 경우의 탐색 시간의 1/3이다. - 회전 지연 - 액세스될 섹터가 헤드 아래에 나타나는데 걸리는 시간. 평균 지연은 최악의 지연 시간의 1/2이다. 데이터 전송율 - 데이터가 디스크로부터 검색되거나 디스크에 저장될 수 있는 비율 평균 고장 시간(MTTF) - 디스크가 고장없이 연속적으로 실행될 평균 예상 시간 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
12
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
디스크 블록 액세스의 최적화 블록 - 한 트랙상의 연속적인 일련의 섹터 - 데이터는 디스크와 메인 메모리간에 블록 단위로 전송된다. - 크기는 512 바이트에서 수 KB 까지이다. 디스크 - 암 - 스케쥴링 알고리즘은 디스크 암의 이동이 최소화 되도록 트랙 액세스를 요구한다 (승강기 알고리즘이 보통 사용된다). 파일 구성 - 데이터가 액세스될 방법에 상응해 블록을 구성함으로 써 블록 액세스 시간을 최적화 한다. 관련있는 정보를 동일 실린더 또는 근처 실린더에 저장한다 . 비휘발성 쓰기 버퍼는 비휘발성 RAM 버퍼에 즉시 블록 쓰기를 함으로써 디스크 기록 시간을 향상시킨다 . 그리고 제어기는 디스크에 다른 요청이 없을 때마다 디스크에 기록 한다. 로그 디스크 - 블록 갱신의 순차 로그를 기록하는데 사용되는 디스크; 이것은 탐색 시간을 제거한다. 비휘발성 RAM 처럼 사용된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
13
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
RAID Redundant Arrays of Inexpensive Disks 값싸고 대중성 있는 디스크를 사용하는 장점을 취한 디스크 구성 기법 원래는 비싼 대형 디스크에 대한 비용 - 효과 대안임 오늘날의 RAID는 경제적 이유보다는 높은 신뢰도와 밴드폭을 위해 사용된다. 따라서, “I”는 inexpensive 대신 independent로 해석되고 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
14
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
중복을 통한 신뢰도의 향상 N 디스크 집합중의 몇 개의 디스크가 고장 날 기회가 특정 단일 디스크가 고장 날 기회보다 훨씬 더 높다. 예를 들어, 각각이 100,000 시간(약 11년)의 MTTF를 가진100개의 디스크를 가진 시스템은 1,000시간(약 41일)의 MTTF를 가진 시스템을 갖게 될 것이다. 중복 - 디스크 고장으로 잃어버리는 정보를 재구축하는데 사용될 수 있는 여분의 정보를 저장한다. 예를 들어, 거울형(또는 그림자). - 각 디스크를 이중으로 둔다. 논리 디스크는 두개의 물리 디스크로 구성된다. - 각각의 쓰기는 양쪽의 디스크에서 수행된다. - 쌍 중의 한 디스크가 고장 나면, 다른 쪽의 디스크는 여전히 사용 가능하다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
15
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
병렬화를 통한 성능의 향상 디스크 시스템에서 병렬화의 두가지 주요 목표 1. 여러 개의 작은 액세스로 균등하게 분배하여 처리율을 높인다. 2. 커다란 액세스를 병렬화하여 응답 시간을 단축시킨다. 여러 대의 디스크에 걸쳐 데이터를 분산시킴으로써 전송율을 향상 시킨다. 비트 단위분산 - 각 바이트의 비트를 여러 디스크에 분산시킨다. - 8개 디스크의 배열에서, 각 바이트의 i 번째 비트를 디스크 i 에 기록한다. - 각 액세스는 단일 디스크의 비율보다 8배로 데이터를 읽을 수 있다. - 그러나 탐색/ 액세스 시간은 단일 디스크보다 더 나쁘다. 블록 단위 분산 - n 대의 디스크에서, 파일의 i 번째 블록은 ( i mod n ) + 1 번 디스크로 간다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
16
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
RAID 계층 패리티 비트로 결합된 디스크 분산을 사용해 저렴한 비용으로 중복을 제공하는 기법 서로 다른 RAID 구조 또는 RAID 계층은 서로 다른 비용, 성능 및 신뢰도의 특징을 가지고 있다. 계층 0 : 블록 계층에서의 분산; 중복 없음. 데이터 손실이 치명적이지 않은 고성능 어플리케이션에서 사용된다. 계층 1 : 거울형 디스크 ; 최상의 쓰기 성능을 제공한다. 데이터베이스 시스템에서의 로그 파일 저장과 같은 어플리케이션에 주로 사용된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
17
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
(a) RAID 0 : 비중복 분산 (b) RAID 1 : 거울형 디스크 (c) RAID 2 : 메모리 유형 오류 정정 코드 (d) RAID 3 : 비트 인터리브 패리티 (e) RAID 4 : 블록 인터리브 패리티 (f) RAID 5 : 블록 인터리브 분산 패리티 (g) RAID 6 : P+Q 중복 C P p Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
18
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
RAID 계층(계속) 계층 2 : 비트 분산을 가진 메모리 유형 오류 정정 코드(ECC) 계층 3 : 비트 인터리브 패리티; 하나의 패리티 비트가 오류 탐지가 아닌 오류 정정에 사용될 수 있다. - 데이터를 기록할 때, 패리티 비트가 또한 계산되어 기록되어야 한다. - 단일 디스크보다 데이터 전송은 더 빠르지만, 각 입출력에 참여하기 때문에 초당 입출력은 더 적다. - 계층 2를 포함한다( 적은 비용으로 계층 2의 장점을 모두 제공한다). Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
19
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
RAID 계층 (계속) 계층 4 : 블록 인터리브 패리티; 블록 계층의 분산을 사용하고 N 개의 서로 다른 디스크 블록에 상응하는 패리티 블록을 별도의 디스크에 가진다. - 독립 블록 읽기에 대해 계층 3 보다 높은 입.출력율을 제공 한다 (블록 읽기는 하나의 디스크에 동작하므로, 서로 다른 디스크에 저장된 블록들이 병렬로 읽힐 수 있다). - 여러 블록의 읽기에 대해 보다 높은 전송율을 제공한다. - 그러나, 각 블록 쓰기는 또한 패리티 디스크에 쓰기를 하므로 패리티 블록은 독립 블록 쓰기에 대해 병목이 된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
20
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
RAID 계층(계속) 계층 5 : 블록 인터리브 분산 패리티; 데이터를 N 개의 디스크에 저장하고 패리티를 1 개의 디스크에 저장하는 대신, 데이터의 패리티를 N + 1 개의 모든 디스크에 분할한다. - 예를 들어, 5 개의 디스크가 있으면, n 번째 블록 집합의 패리티 블록은 (n mod 5) + 1 번째 디스크에 저장되고 데이터 블록은 다른 4 개의 디스크에 저장된다. - 계층 4 보다 입출력 비율이 높다 (블록과 패리티 블록이 서로 다른 디스크에 있으면, 블록 쓰기는 병렬로 처리된다). - 계층 4를 포함한다. 계층 6 : P + Q 중복 기법; 계층 5와 유사 하지만, 여러 디스크의 고장에 대비하기 위해 별도의 중복 정보를 저장한다. 비용이 많이 들지만 계층 5 보다 신뢰도가 높다 . 널리 사용되지는 않는다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
21
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
광 디스크 Compact disk - 읽기 전용 메모리( CD-ROM) - 드라이브에 디스크를 장착하고 탈착할 수 있다. - 대용량의 저장 장치이다(디스크에 대략 500MB 수록). - 탐색 시간과 지연 시간이 높다; 자기 디스크보다. 데이터 전송율이 낮다. 디지털 비디오 디스크(DVD) - 새로운 광 양식; GB를 보관한다. WORM 디스크 - 읽어 온 동일한 드라이브를 사용해 기록할 수 있다 - 데이터는 한번만 기록될 수 있으며, 지울 수는 없다. - 대용량이며 생명 주기가 길다; 보관용 저장 장치로 사용된다. - WORM 주크박스 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
22
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
자기 테이프 대용량의 데이터를 보관한다( 5GB 테이프가 보통이다). 현재로서는 가장 저렴한 저장 매체임. 자기 및 광 디스크에 비해 액세스 시간이 매우 느리다; 순차 액세스만이 가능하다. 자주 사용하지 않는 정보를 저장용 및 한 시스템에서 다른 시스템으로 정보를 전달하기 위한 오프라인 매체로 주로 사용된다. 대용량의 저장 장치 (terabyte(1012) - petabyte(1015))로 테이프 주크박스가 사용된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
23
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
저장 장치 액세스 데이터베이스 파일은 블록이라는 고정 길이 저장 단위로 분할된다. 블록은 저장 장치 할당과 데이터 전송 단위이다. 데이터베이스 시스템은 디스크와 메모리간에 최소한 블록 수 가 전송되도록 탐색한다. 가급적 많은 블록이 메인 메모리에 있도록 하여 디스크 액세스 수를 줄일 수 있다. 버퍼 - 디스크 블록의 사본을 저장하는데 사용되는 메인 메모리 부분 버퍼 매니저 - 메인 메모리에 버퍼 공간을 할당하는 서브 시스템 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
24
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
버퍼 매니저 프로그램은 디스크에서 블록이 필요할 때 버퍼 매니저를 호출한다. - 필요한 블록이 버퍼내에 이미 존재하면, 메인 메모리 내의 블록 주소가 요청하는 프로그램에 주어진다. - 블록이 버퍼내에 없으면, 버퍼 매니저는 필요에 따라 새로운 블록을 위한 공간을 마련하기 위해 일부 블록을 내보내어 버퍼내에 공간을 할당한다. - 내보내진 블록은 디스크에 수록되고 읽히어진 최근 시점 이후 갱신되었을 때만 디스크에 되쓰인다. - 버퍼에 공간이 일단 할당되면, 버퍼 매니저는 디스크에서 버퍼로 블록을 읽어 들이고 메인 메모리내 블록의 주소를 요청자에게 전달한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
25
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
버퍼 대치 전략 대부분의 운영체제는 최근에 가장 사용되지 않은 (LRU) 블록을 대치한다. LRU - 미래의 참조 지표로서 과거의 블록 참조 패턴을 사용한다. 질의는 잘 정의된 액세스 패턴 (순차 스캔과 같은) 을 가지며, 데이터베이스 시스템은 미래의 참조를 예측하는데 사용자 질의 내의 정보를 사용할 수 있다. LRU는 데이터의 반복 스캔을 포함한 어떤 액세스 패턴에 대해 서는 나쁜 전략일 수 있다. 질의 최적기가 제공하는 대치 전략상의 지침을 가진 혼잡 전략이 더 낫다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
26
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
버퍼 대치 전략(계속) 붙박이 블록 - 디스크에 되쓰이기가 허용되지 않은 메모리 블록 즉시 던짐 전략 - 블록의 마지막 튜플이 처리되자 마자 그 블록이 점유한 공간을 해제한다. MRU 전략 - 시스템은 현재 처리중인 블록을 고정 시켜야 한다. 그 블록의 마지막 튜플이 처리된 후, 블록은 해제되며 그것은 가장 최근에 사용한 블록이 된다. 버퍼 매니저는 요청이 특정 릴레이션을 참조한 확률에 관한 통계 정보를 사용할 수 있다. - 예를 들어, 데이터 사전은 빈번히 액세스 된다. 경험에 따르면 메인 메모리 버퍼내에 데이터 사전 블록을 유지한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
27
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
파일 구성 데이터베이스는 파일의 모임으로 저장된다. 각 파일은 레코드로 구성된다. 레코는 필드로 구성된다 한가지 방법 - 레코드의 크기가 고정길이라 가정한다. - 각 파일은 한가지 유형만의 레코드를 가진다. - 서로 다른 파일이 서로 다른 릴레이션에 사용된다. 이 경우는 구현하기가 가장 쉽다; 가변길이 레코드는 후에 고려 하기로 하자. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
28
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
고정길이 레코드 단순한 방법 - 레코드 i 를 n * ( i - 1) 번째 바이트부터 시작해 저장한다. 여기서 n 은 각 레코드의 크기이다. - 레코드 액세스는 단순하지만 레코드들이 블록에 걸칠 수 있다. 레코드 I 의 삭제 - 대안들 - 레코드 i + 1 , …, n 을 i, …, n-1 로 이동 - 레코드 n 을 i 로 이동 - 자유 리스트상의 모든 자유 레코드를 연결 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
29
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
자유 리스트 내용이 삭제된 첫 번째 레코드의 주소를 파일 헤더에 저장한다. 이 첫 번째 레코드를 사용해 두 번째 사용 가능한 레코드 등의 주소를 저장한다. 이들 저장된 주소는 레코드의 위치를 가리키기 때문에 포인터로 생각할 수 있다. 헤 더 Perryridge A-102 레코드 0 400 레코드 1 Mianus A-215 레코드 2 700 Downtown A-101 레코드 3 500 레코드 4 Perryridge 레코드 5 A-201 900 레코드 6 Downtown 레코드 7 A-110 600 Perryridge 레코드 8 A-218 700 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
30
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
자유 리스트(계속) 공간 효율이 보다 좋은 표현법: 자유 레코드의 정상 애트리뷰트의 공간을 재사용해 포인터를 저장한다 (사용중인 레코드에는 포인터가 저장되지 않는다). 허상 포인터는 또 다른 레코드가 포함하는 포인터가 가리키는 레코드를 이동 시키거나 삭제할 때 발생한다. 그 포인터는 더 더 이상 원하는 레코드를 가리키지 않는다. 다른 레코드가 가리키는 레코드의 이동 또는 삭제를 피한다. 그러한 레코드를 붙박이라 한다 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
31
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
가변길이 레코드 가변길이 레코드는 데이터베이스 시스템에서 여러 방법으로 발생한다: - 한 파일에 여러 레코드 유형을 저장 - 하나 이상의 필드에 가변길이를 허용하는 레코드 유형 - 반복 필드를 허용하는 레코드 유형 (몇몇 구식 데이터 모델에서 사용됨) 바이트 스트링 표현법 - end - of - record () 제어 문자를 각 레코드의 끝에 붙인다 - 삭제가 어려움 - 데이터 증가가 어려움 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
32
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
가변길이 레코드 : 슬롯 페이지 구조 블록 헤더 헤더에는 다음을 포함한다: - 레코드 엔트리의 수 - 블록내 자유 공간의 끝 - 각 레코드의 위치와 크기 레코드는 그들간에 빈 공간이 없이 연속해 있도록 페이지내에서 이동할 수 있다; 헤더내의 엔트리는 갱신되어야 한다. 포인터는 레코드를 직접 가리켜서는 안된다. - 대신에 헤더내 레코드의 엔트리를 가리켜야 한다. # 엔트리 크기 위치 자유 공간 자유 공간의 끝 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
33
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
가변길이 레코드(계속) 고정길이 표현법 - 공약 예약 - 포인터 공간 예약 - 이미 알고 있는 최대 길이의 고정길이 레코드를 사용할 수 있다; 보다 짧은 레코드의 사용되지 않은 공간은 널 또는 레코드 끝 기호로 채운다. Perryridge A A A Round Hill A ┸ ┸ ┸ ┸ Mianus A ┸ ┸ ┸ ┸ Downtown A A ┸ ┸ Redwood A ┸ ┸ ┸ ┸ Brighton A ┸ ┸ ┸ ┸ 1 2 3 4 5 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
34
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
포인터 방법 1 2 3 4 5 6 7 8 Perryridge A Round Hill A Mianus A Downtown A Redwood A A Brighton A A A 포인터- 최대 레코드 길이는 모른다; 포인터로 서로 연결된 고정길이 레코드 리스트로 가변길이 레코드가 표현된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
35
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
포인터 방법(계속) 포인터 구조의 단점; 체인내 첫번째를 제외한 모든 레코드에서 공간이 낭비된다 파일내에 두가지 종류의 블록을 허용해 해결한다; - 기본 블록 - 체인의 첫번째 레코드들을 내포한다 - 오버플로 블록 - 체인의 첫번째 레코드들 이외의 레코드를 내포한다. Perryridge A Round Hill A Mianus A Downtown A Redwood A Brighton A 기본 블록 A A A 오버프로 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
36
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
파일내 레코드의 구성 힙 - 레코드는 파일내에 공간이 있는 어느 곳에라도 위치할 수 있다. 순차 - 각 레코드의 검색 키 값에 근거해 레코드를 순차적으로 저장한다. 해슁 - 각 레코드의 일부 애트리뷰트에 해쉬 함수가 계산된다; 결과는 파일내의 어떤 블록에 레코드가 위치할 지를 지정 한다. 군집 - 여러 다른 릴레이션의 레코드들이 같은 파일에 저장될 수 있다; 관련된 레코드들은 동일 블록에 저장된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
37
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
순차 파일 구성 전체 파일의 순차 처리를 요구하는 어플리케이션에 적합하다. 파일내의 레코드는 검색 키로 정렬된다. Brighton A Downtown A Downtown A Mianus A Perryridge A Perryridge A Perryridge A Redwood A Round Hill A Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
38
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
순차 파일 구성(계속) 삭제 - 포인터 체인을 사용한다. 삽입 - 레코드가 삽입된 파일내의 위치를 찾아야 한다. - 자유 공간이 있으면, 그 곳에 삽입 - 자유 공간이 없으면, 오버플로 블록에 삽입 - 어떤 경우든, 포인터 체인은 갱신해야 한다 순차적으로 저장하기 위해 항상 파일을 재구성할 필요가 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
39
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
군집 파일 구조 단순한 파일 구조에서는 각 릴레이션을 별도의 파일에 저장한다.. 군집 파일 구조를 사용해 하나의 파일에 여러 릴레이션을 저장할 수 있다. customer 와 depositor 의 군집 구조 - depositor와 customer를 자연 죠인한 형태를 내포한 질의와 한 고 객의 계좌를 내포하고 있는 질의에 좋다. - 고객만을 내포한 질의에는 좋지 않다. - 가변 크기의 레코드가 발생한다. Hayes Main Hayes A-102 Hayes A-220 Hayes A-503 Turner Putnam Turner A-305 Brooklyn Stamford Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
40
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
데이터 사전 저장 구조 데이터 사전 (시스템 카타로그라 한다) 에는 메타 데이터를 저장한다: 즉, 다음과 같은 데이터에 관한 데이터이다. 릴레이션에 관한 정보 - 릴레이션명 - 애트리뷰트명과 유형 - 물리 파일 구성 정보 - 각 릴레이션내 튜플의 수와 같은 통계 정보 무결성 제약 조건 뷰 정의 사용자 및 계정 정보 인덱스에 관한 정보 (11장) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
41
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
데이터 사전 저장 구조(계속) 카타로그 구조 : 다음 중 하나를 사용할 수 있다. - 효율적인 액세스를 위해 설계된 특수한 데이터 구조 - 효율적인 액세스를 위해 사용된 기존의 시스템 기능을 가진 릴레이션의 집합 후자의 방법을 일반적으로 선호한다. 가능한 카타로그 표현 System-catalog-schema = (relation-name, number-of-attributes) Attribute-schema = (attribute-name, relation-name, domain-type, position, length) User-schema = (user-name, encrypted-password, group) Index-scheme = (index-name, relation-name, index-type, index-attributes) View-schema = (view-name, definition) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
42
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
객체를 파일로의 대응 객체를 파일로 대응시키는 것은 관계형 시스템에서 튜플을 파일로 대응시키는 것과 유사하다. 객체 데이터는 파일 구조를 사용해 저장할 수 있다. 객체지향 데이터베이스에서의 객체는 균일성이 부족하며 매우 클 수 있다; 그러한 객체는 관계형 시스템에서의 레코드와는 달리 처리해야 한다. - 적은 수의 원소를 가진 집합 필드는 연결 리스트와 같은 데이터 구조를 사용해 구현할 수 있다. - 많은 수의 원소를 가진 필드는 B-트리 또는 데이터베이스내의 별도의 릴레이션으로 구현할 수 있다. - 집합 필드는 또한 정규화로 저장 장치 단계에서 제거될 수 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
43
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
객체를 파일로의 대응(계속) 객체들을 객체 식별자(OID)로 식별한다; 저장 장치 시스템은 OID가 주어진 객체를 찾는 기법이 필요하다. - 논리 식별자는 객체의 물리적 위치를 직접 지정하지 않는다; OID를 객체의 실제 위치에 대응시키는 인덱스를 유지해야만 한다. - 물리 식별자는 객체가 직접 발견될 수 있도록 객체의 위치를 코드화한다. 물리 식별자는 일반적으로 다음과 같은 부분으로 구성되어 있다; 1. 볼륨 또는 파일 식별자 2. 볼륨 또는 파일내의 페이지 식별자 3. 페이지내의 옵셋 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
44
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
영속 포인터의 관리 물리적 OID에는 유일한 식별자를 갖는다. 이 식별자는 객체내에 또한 저장되어 허상 포인터를 통한 참조를 검출하는데 사용된다. Vol. Page Offset Unique-Id 물리적 객체 식별자 Unique-Id Data……... 객체 …. data…. (a) 일반적인 구조 위치 유일한 식별자 데이터 Good OID Bad OID (b) 사용 예제 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
45
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
영속 포인터의 관리(계속) OID를 사용해 영속 포인터를 구현한다; 영속 포인터는 메모리내 포인터보다 대체로 길다. 포인터 스위즐링은 메모리에 이미 존재하는 영속 객체를 찾는 비용을 줄인다. 소프트웨어 스위즐링(포인터 역참조에서의 스위즐링) - 영속 포인터가 처음 역참조될 때, 객체가 메모리에 위치한 후 스위즐된다 (메모리내 포인터로 대치된다). - 같은 포인터의 연속적인 역참조는 보다 쉬워진다. - 메모리내 객체의 물리적인 위치는 스위즐된 포인터가 가리키고 있으면, 변경되어서는 안된다; 해결책은 메모리내에 페이지를 고정시키는 것이다. - 객체가 디스크에 되쓰일 때는, 그것이 내포하는 어떠한 스위즐된 포인터는 역스위즐될 필요가 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
46
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링 객체내의 영속 포인터는 메모리내 포인터와 같은 양의 공간을 필요로 한다 - 객체 외부의 별도 저장 공간이 포인터 정보의 나머지를 저장하는데 사용된다. 영속 포인터와 메모리내 포인터간의 효율적이고 내부적인 변환을 위해 가상 메모리 변환 기법을 사용한다. 페이지내의 모든 영속 포인터는 페이지가 처음 읽힐 때 스위즐된다. - 따라서, 프로그래머는 한가지 유형의 포인터 즉, 메모리내 포인터로만 작업해야 한다. - 몇몇 스위즐된 포인터는 현재 실제 메모리에 할당되지 않은 가상 메모리 주소를 가리킬 수도 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
47
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링(계속) 영속 포인터는 개념적으로 두 부분으로 나누어진다 : 페이지 식별자와 페이지내에서의 옵셋 - 포인터내 페이지 식별자는 짧은 간접 포인터이다: 각 페이지 식별자로부터 완전 데이터베이스 페이지 식별자로의 대응을 제공하는 변환 테이블을 가진다. - 페이지의 변환 테이블은 작다 (4096 바이트의 페이지에 4바이트 짜리 포인터가 기껏해야 1024개 있다). - 같은 페이지에 대한 페이지내의 여러 포인터는 변환 테이블 내에서 같은 엔트리를 공유한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
48
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링(계속) 디스크에 있을 때(스위즐링 전)의 페이지 이미지 PageID Off 객체1 객체2 객체3 PageID FullPageID 변환 테이블 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
49
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링(계속) 메모리내 포인터가 역참조될 때, 운영체제에서 아직 할당되지 않은 저장 공간을 가리키는 페이지를 탐지하면, 분할 위배가 발생한다. mmap call이 분할 위배시 호출되는 관련 함수이다. 함수는 페이지를 위한 저장 공간을 할당하고 디스크로부터 페이지를 읽어들인다. 그리고 페이지내의 모든 영속 포인터에 대해 스위즐링이 수행된다(객체 유형 정보를 사용해 찾은). - 포인터가 가상 메모리 주소가 아직 할당되지 않은 페이지를 가리키면, 가상 메모리 주소가 할당된다(아직 사용되지 않았으면, 짧은 페이지 식별자내의 주소). 페이지에 저장 공간은 아직 할당되지 않는다. - 포인터내의 페이지 식별자 (그리고 변환테이블 엔트리)가 페이지의 가상 메모리 주소로 변경된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
50
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링(계속) PageID Off 객체1 객체2 객체3 PageID FullPageID 변환 테이블 스위즐링 후의 페이지 이미지 짧은 페이지 식별자 2395를 가진 페이지가 주소 5001에 할당되었다. 포인터와 변환 테이블 내의 변경에 주목하라. 짧은 페이지 식별자 4867을 가진 페이지가 주소 4867에 할당되었다. 포인터와 변환 테이블에 변화가 없다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
51
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
하드웨어 스위즐링(계속) 스위즐링 후, 모든 짧은 페이지 식별자는 그 페이지에 할당된 가상 메모리 주소를 가리킨다. - 객체를 액세스하고 있는 함수는 그것이 영속 포인터를 가지고 있는지 알 필요가 없다. - 메모리내 포인터를 사용하는 기존의 코드와 라이브러리를 재사용할 수 있다. 모든 페이지가 짧은 페이지 식별자에서와 같은 주소로 할당되면, 페이지 내에서 어떠한 변경도 필요없다. 역스위즐링의 필요가 없다 - 스위즐링 후의 페이지는 디스크에 직접 보관될 수 있다. 프로세스는 가상 메모리 크기 이상의 페이지를 액세스해서는 안된다 - 다른 페이지에 대한 가상 메모리 주소의 재사용은 비용이 많이 든다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
52
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
객체의 디스크 구조와 메모리 구조 메모리에 저장된 객체의 형식과 데이터베이스로 디스크에 저장된 형식이 다를 수 있다. 그 이유는 다음과 같다: - 소프트웨어 스위즐링 - 영속 포인터와 메모리내 포인터의 구조가 다르다. - 서로 다른 표현을 가진 서로 다른 컴퓨터에서 데이터베이스를 액세스할 수 있다. 데이터베이스내 객체의 물리적 표현을 컴퓨터와 컴파일러에 독립되도록 한다. 객체(또는 페이지)가 메모리로 올 때 디스크 표현으로 부터 특정 컴퓨터, 언어 및 컴파일러에서 요구되는 형으로 내부적으로 변환할 수 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
53
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
대형 객체 대형 객체는 일반적으로 이진 데이터를 포함하기 때문에, binary large object(blob)이라 한다.아래와 같은 예가 있다: - 텍스트 문서 - 이미지 및 컴퓨터 지원 설계와 같은 그래픽 데이터 - 오디오 및 비디오 데이터 대형 객체는 메모리로 올 때 연속된 바이트 순서로 저장될 필요가 있다. - 객체가 페이지 이상이면, 버퍼 풀의 연속 페이지가 그것을 저장하기 위해 할당되어야 한다. - 연속 저장 공간의 필요성을 제거하기 위해서는 데이터에 직접 액세스를 허용하지 않고 파일 시스템형의 API를 통해서만 액세스하도록 하는 것이 좋다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
54
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
대형 객체의 수정 B-트리 구조를 사용해 객체를 표현한다 : 객체의 특정 영역으로 부터 바이트의 갱신, 삽입 및 삭제와 함께 전체 객체의 읽기를 허용한다. 데이터베이스 외부의 특수 목적 어플리케이션 프로그램이 대형 객체를 조작하기 위해 사용된다: - 텍스트 데이터는 에디터와 포매터가 조작하는 바이트 스트링으로 취급한다. - 그래픽 데이터는 비트맵 또는 기하 객체의 집합으로 표현된다; 데이터베이스 시스템내에서 또는 특수 소프트웨어(즉, VLSI 설계)로 관리할 수 있다. - 오디오/비디오 데이터는 일반적으로 별도의 어플리케이션 소프트웨어로 생성하고 디스플레이하며 특수 목적의 편집 소프트웨어를 사용해 수정한다. - 동시성 제어와 버전의 생성을 위한 체크 아웃/체크 인 방법 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Similar presentations