SQL - 파일 안의 레코드 구조

s2ul3·2022년 12월 21일
0

릴레이션 : 레코드들의 집합
파일 안에서 레코드를 어떻게 구성할 것인가?

1. Heap file organization

레코드들 간에 아무 순서 없이 그냥 저장하는 것. 일반적으로 하나의 릴레이션은 하나의 파일로 존재.

2. Sequential file organization

  • 레코드들은 검색 키(search key)값에 따라 연속적인 순서로 저장됨.
    (linked list 자료구조와 비슷하게 link를 사용하여 레코드들을 연결)
  • 정렬 기준 : search key (반드시 PK일 필요 없다.)
  • 모든 레코드들을 순차적으로 접근해야하는 연산이 많이 발생할 때 유리한 구조
  • 소수의 레코드를 찾는 연산에서는 비효율적인 구조
  • 삽입, 삭제 연산이 빈번할 수록 링크가 복잡해짐 -> 검색 성능 저하, 공간 사용 효율 저하
    -> 파일을 주기적으로 reorganize 해줘야함.

3. Multitable Clustering File Organization

논리적으로 다른 여러 릴레이션들을 동일한 하나의 파일에 저장.
? 왜 이런 구조를 사용할까?

  • 특정 테이블 간의 join 질의가 자주 발생할 경우 --> 레코드를 클러스터링 하여 하나의 file에 저장하면 이미 조인 된 것 같은 효과를 얻을 수 있고 block I/O 횟수도 감소하게 됨.

3. Hashing file organization

추후 작성

4. B+ tree file organization

추후 작성

Data Dictionary Storage

데이터 사전 저장소
데이터에 대한 데이터인 메타데이터를 저장하는 공간.
메타데이터?

  • 릴레이션에 대한 정보
    • 릴레이션 이름
    • 릴레이션 속성 이름
    • 속성과 도메인 길이
    • 무결성 제약 조건
    • 릴레이션 저장 위치
  • 사용자에 대한 정보
    • 권한이 부여된 사용자 이름
    • 사용자 인증하기 위해 사용되는 비밀 번호 혹은 다른 정보
  • 통계 데이터
    • 각 릴레이션의 투플 수
    • 각 릴레이션의 저장 방법 (clustering or not clustering)
  • 물리적인 저장 구조에 대한 정보
  • 인덱스에 대한 정보

이런 메타데이터들 또한 디스크에 관계형 테이블로 저장된다.

Storage Access

  • 블록 : storage allocation과 데이터 전송의 단위
  • DBMS의 주요 목적은 디스크와 메모리 사이에 블록의 전송 수를 최소화 하는 것
    -> 메인 메모리에 모든 블록을 유지하는 것은 불가능하기 때문에 가능한 많은 블록들을 미리 보유한다.
  • Buffer : 디스크 블록의 복사본을 저장하기 위해 이요할 수 있는 메인 메모리의 일부분
  • 버퍼 관리자 : 버퍼 공간의 할당을 책임지는 하부 시스템
    버퍼 교체 방법 : LRU (Least Recently Used) : 최근에 가장 적게 사용된 블록을 교체한다.
profile
statistics & computer science

0개의 댓글