728x90
반응형
sequential files(ordered files)는디스크에 물리적으로 레코드들이 정렬되어 있다.
정렬된 파일은 이전 포스팅에서의 heap file같이 정렬되어있지 않은 파일에 비해 다음과 같은 장점을 가진다.
- 일반적으로 다음 레코드에 접근하기 위해서 블록에 새롭게 접근할 필요가 없다. (같은 블록에 있기 때문)
- key field가 정렬되어 있기 때문에 이진 탐색으로 빠르게 찾아낼 수 있다.
삽입 연산
이렇게 정렬되어있는 파일의 경우 삽입이 어렵다.
중간을 삽입하게 되면 그 뒤부터 전부 한 칸씩 밀리기 때문이다.
그래서 이를 해결하는 방법은 두 가지가 있다.
- 애초부터 블록에 삽입할 여분의 공간을 남겨둔다.
- 삽입의 경우 별도의 공간에 따로 진행하고 나중에 합친다.
삭제 연산
정렬된 파일에서 삭제 연산의 경우 deletion mark를 사용한다.
실제로 지우는 것은 아니고 지웠다는 표시를 해 둔 다음 주기적으로 정렬을 해준다.
트랜잭션 파일 (transaction file)
트랜잭션 파일이란 정렬되어 있지 않은 임시적인 파일이다.
이는 위에서 나타나는 연산들의 문제점을 해결하기 위한 또다른 방법이다.
메인 파일에 삽입을 하려할 때 메인 파일에 직접 넣는 것이 아닌 일단 트랜잭션 파일에 보관해두는 것이다.
트랜잭션 파일에서는 정렬을 하지 않고 들어오는 순서대로 보관한다.
메인 파일에서 삭제를 하려할 때는 트랜잭션 파일에는 영향을 주지 않고 메인 파일에 deletion mark를 달아놓는다.
메인 파일에서 수정을 하려할 때는 상황에 따라 크게 두 가지로 나뉜다.
- key field가 바뀌었을 때 : 정렬의 기준이 되는 key field가 바뀐다면 메인 파일의 순서가 바뀌어야 한다. 그렇기에 해당 key field를 삭제하고(deletion mark) 새로운 key field를 삽입해야 한다.
- key field가 아닌 field가 바뀌었을 때 : 메인 파일의 순서가 바뀌지 않으므로 그냥 바로 바꾼다.
이렇게 메인 파일과 트랜잭션 파일이 존재한다면 주기적으로 이 두 파일을 합쳐야 한다.
이 두 파일을 합치는 과정은 다음과 같다.
합치기 난 후 메인 파일과 트랜잭션 파일은 곧 백업 파일이 되곤 한다.
728x90
반응형
'공부 > Database' 카테고리의 다른 글
[Database] dynamic hashing의 종류와 방법 (0) | 2022.11.26 |
---|---|
[Database] 해싱 기법 (hashing techniques)과 충돌 해결 기법(collision resolution) (0) | 2022.11.25 |
[Database] 더블 버퍼링 (double buffering) (0) | 2022.11.23 |
[Database] 디스크 안에 파일 레코드를 저장하는 방법 (0) | 2022.11.23 |
[Database] 데이터 전송 연산 시간 계산 (0) | 2022.11.22 |
댓글