데이터베이스 저장소 구조

Database storage structures

데이터베이스 테이블인덱스는 정렬/순서가 지정되지 않은 플랫 파일, ISAM, 힙 파일, 해시 버킷 또는 B+ 트리를 포함한 다수의 양식 중 하나로 디스크에 저장될 수 있다. 각각의 형태는 각각의 특별한 장단점을 가지고 있다. 가장 많이 사용되는 형태는 B-tree와 ISAM이다. 그러한 형태나 구조는 데이터베이스 엔진이 정보를 저장하기 위해 사용하는 전체 스키마의 한 측면이다.

주문되지 않음

주문되지 않은 저장소는 일반적으로 레코드를 삽입한 순서대로 저장한다. 이러한 스토리지는 삽입 효율성은 좋지만(( ) 검색 시간은 비효율적이다(( {\right 그러나 대부분의 데이터베이스는 기본 키에 인덱스를 사용하므로 일반적으로 이러한 검색 시간이 더 좋으며, 따라서 스토리지 시스템 내에서 데이터베이스 행 오프셋과 동일한 키의 검색 은 O ) n 또는 1)가 된다.[citation needed]

주문된

주문형 스토리지는 일반적으로 레코드를 순서대로 저장하며, 새 레코드를 삽입할 때 파일 크기를 재배열하거나 늘려야 하므로 삽입 효율성이 낮아진다. 그러나, 주문 보관소는 레코드가 미리 정렬되어 있어 보다 효율적인 검색을 제공하므로 의 복잡성이 발생한다[citation needed]

구조화된 파일

힙 파일

힙 파일은 순서가 지정되지 않은 가변 크기의 레코드 목록이다. 비슷한 이름을 공유하지만 힙 파일은 인메모리 과는 크게 다르다. 인메모리 힙은 힙 파일 대신 주문된다.

  • 가장 간단하고 가장 기본적인 방법
    • 효율적인 삽입, 파일 끝에 새 레코드가 추가되고 시간순서가 제공됨
    • 메모리에 대한 핸들이 메모리의 주소일 때 검색 효율적
    • 검색이 선형이어야 하므로 검색이 비효율적임
    • 선택한 레코드를 "일반"으로 표시하여 삭제
    • 파일이 매우 휘발성이 높은 경우 정기적인 재구성 필요(빈도)
  • 이점
    • 데이터 대량 로딩에 효율적인
    • 인덱싱 오버헤드가 방지되므로 상대적으로 작은 관계에 효율적임
    • 검색이 저장된 레코드의 많은 부분을 포함할 때 효율적임
  • 단점들
    • 특히 큰 경우 키 값을 사용한 선택적 검색에 효율적이지 않음
    • 정렬은 시간이 많이 걸릴 수 있다.
    • 휘발성 테이블에는 적합하지 않음

해시 버킷

  • 해시함수는 레코드에 있는 하나 이상의 필드를 기준으로 레코드를 저장할 페이지의 주소를 계산한다.
    • 주소가 주소 공간에 고르게 분산되도록 하기 위해 선택한 해싱 기능
    • 일반적으로 'complete'는 전체 파일 크기의 40%~60%이다.
    • 고유 주소가 보장되지 않아 충돌 감지 및 충돌 해결 메커니즘이 필요함
  • 오픈 어드레싱
  • 체인/체인이 없는 오버플로우
  • 장단점
    • 키 필드에서 정확한 일치에 효과적
    • 순차적 저장이 필요한 범위 검색에 적합하지 않음
    • 레코드의 필드를 기준으로 레코드가 저장되는 위치 계산
    • 해시함수는 데이터의 고른 확산을 보장한다.
    • 충돌이 가능하므로 충돌 감지 및 복구가 필요하다.

B+나무

이것들은 실전에서 가장 흔히 쓰이는 것이다.

  • 동일한 수의 노드가 검색되므로 레코드에 액세스하는 데 걸리는 시간이 동일함
  • 인덱스는 전체 인덱스이므로 데이터 파일을 정렬할 필요가 없음
  • 장단점
    • 다용도 데이터 구조 – 순차 및 랜덤 액세스
    • 접속이 빠르다
    • 정확한 범위, 부품 키 및 패턴 일치를 효율적으로 지원한다.
    • 휘발성 파일이 효율적으로 처리되는 이유는 인덱스가 동적이기 때문이다. 테이블이 커지고 줄어들수록 확장 및 축소
    • 상대적으로 안정적인 파일에 적합하지 않음 – 이 경우 ISAM이 더 효율적임

데이터 방향

대부분의 기존 관계형 데이터베이스는 "행 지향" 스토리지를 사용하며, 이는 주어진 행과 관련된 모든 데이터가 함께 저장된다는 것을 의미한다. 이와는 대조적으로, 열 지향 DBMS는 데이터 웨어하우스 스타일의 쿼리를 더 빨리 처리하기 위해 주어진 열의 모든 데이터를 함께 저장한다. 상관 데이터베이스는 행 기반 데이터베이스와 유사하지만, 동일한 값의 여러 인스턴스를 동일한 숫자 식별자에 매핑하기 위해 리디렉션 계층을 적용한다.

참고 항목