Physical Database Design(3)
File Organizations
- 하드디스크에 데이터들을 물리적으로 어떻게 저장하는 지에 대한 테크닉
- Factors for selecting file organization
- 빨리 데이터를 찾아냄
- 효율적인 데이터 공간 관리
- 데이터를 실패와 유실로 부터 보호
- Reorganization의 최소화
- 성장을 촉진하는지
- Sequential, indexed, hashed 3가지 종류가 있다.
Indexed File Organization
- Indexed File Organization
- 소프트웨어가 각각의 레코드들을 찾는데 인덱스를 가지고 찾는 방식
- index
- 어떠한 조건을 만족하는 레코드들의 장소들을 파일에서 결정하는데 사용되는 테이블
- PK로 선언하는 순간 dbms로 indexing됨
- 다른 key들에도 indexing이 걸릴 수 있음
- secondary key라고 하고, nonunique key라고도 함
- Join index
- 한쪽에 PK, 한쪽에 FK인 경우에 indexing을 걸면 훨씬 더 빠르게 join operation이 가능함
Hashed File Organization
- Hashed File Organization
- Hashing argorithm을 사용하여 각각의 레코드들의 주소가 결정됨
- 레코드의 PK값을 hash function에 넣어서 결과값을 주소로 결정함
- 순차적이지 않고 균등분배됨
- 같은 값이 결정되면 list에 저장함
- 초기단계에 레코드들이 로드된 상태에 레코드들을 집어넣고 지우고 하는데에 추가적인 공간이 필요할 수 있음
- 순차적으로 데이터를 꺼내는데 적합하지 않지만, 랜덤하게 꺼내는데 매우 빠르다
Clusting Files
- 몇몇의 reltaional dbms들에서 다른 테이블들인데 관련된 레코드들은 같은 하드디스크 장소에 저장될 수 있음
- join operation을 향상시키는데 유용함
- Oracle은 CREATE CLUSTER 명령어가 있음
Rules for Using Indexes
- 큰 테이블들에서 사용함
- 각각의 테이블의 PK를 indexing함
- 보통 WHERE 절이 있을 때 indexing함
- ORDER BY, GROUP BY같은
- 100개 이상의 다른 값들이 있을 때 사용
- indexing을 긴 값들에 거는 걸 피해야함
- indexing을 거는 개수와 byte에 제한이 있음
- null 값을 갖는 attribute에 indexing을 거는데 조심해야함(dbms는 indexing을 하는데 null 값을 인식 안할 수도 있음)