DATABASE

데이터베이스는 어떠한 구조로 데이터를 저장할까?

Fehoon- 2023. 6. 20. 14:57

데이터베이스는 어떠한 구조로 데이터를 저장할까?

- 데이터베이스 저장방식

데이터베이스에서는 다양한 저장 방식을 사용하여 데이터를 구성하고 관리합니다. 주요한 데이터베이스 저장 방식에는 힙(Heap) 구조 외에도 B-트리(B-Tree), 해시(Hash), 클러스터드 인덱스(Clustered Index) 등이 있습니다.

1. 힙(Heap) 구조:

  • 힙(Heap) 구조는 데이터베이스에서 테이블의 저장 방식 중 하나입니다. 힙 구조는 데이터를 정렬되지 않은 상태로 순차적으로 저장하는 방식을 말합니다. 힙 구조에서는 새로운 데이터가 테이블에 삽입될 때 데이터가 마지막에 추가되며, 데이터의 물리적인 순서는 중요하지 않습니다.
    힙 구조는 데이터의 논리적인 순서와 물리적인 순서가 일치하지 않는 특징을 가지고 있습니다. 이는 데이터를 효율적으로 읽는 것보다 데이터를 추가하거나 삭제하는 작업에 효율적입니다. 데이터의 삽입이나 삭제가 발생할 때 다른 데이터의 이동 없이 해당 위치에 직접 삽입 또는 삭제가 가능하기 때문입니다.
    하지만 힙 구조에서는 데이터를 검색하는 과정에서 모든 데이터를 순차적으로 검색해야 하므로 검색 속도가 느릴 수 있습니다. 이는 테이블의 크기가 커지면 커질수록 성능에 영향을 미칩니다.
    따라서, 힙 구조는 테이블에 정렬된 인덱스가 없고 데이터의 추가와 삭제가 자주 발생하는 경우에 주로 사용됩니다. 데이터의 순서가 중요하지 않거나 데이터베이스의 특정 기능에 의해 데이터가 자주 재정렬되는 경우에도 힙 구조가 사용될 수 있습니다.

2. B-트리(B-Tree):

  • B-트리는 데이터를 정렬된 상태로 저장하는 트리 기반의 자료구조입니다. B-트리는 인덱스 구조로 사용되며, 데이터의 검색, 삽입, 삭제를 효율적으로 수행할 수 있습니다. 트리의 균형을 유지하기 위해 자동으로 노드 분할과 병합 작업이 이루어집니다.
  • 정렬된 데이터 저장: B-트리는 데이터를 트리 형태로 저장하며, 모든 노드는 정렬된 상태로 유지됩니다. 이를 통해 데이터베이스에서 범위 검색, 정렬 작업 등을 빠르게 수행할 수 있습니다.
  • 노드 구성: B-트리의 노드는 일정한 개수의 키-값 쌍으로 구성됩니다. 각 키는 노드 내에서 정렬된 순서로 저장되고, 키에 대응하는 값은 해당 키와 연관된 데이터의 위치를 가리킵니다.
  • 균형 잡힌 트리: B-트리는 균형 잡힌 트리로서, 모든 리프 노드의 높이가 동일합니다. 이를 위해 B-트리는 자동으로 노드 분할과 병합 작업을 수행하여 트리의 균형을 유지합니다.
  • 다단계 인덱스: B-트리는 다단계 인덱스를 구성할 수 있습니다. 즉, 상위 레벨의 노드는 하위 레벨의 노드를 가리키는 인덱스 역할을 수행하며, 이를 통해 검색 작업의 성능을 향상시킵니다.
  • 효율적인 검색, 삽입, 삭제: B-트리는 데이터의 검색, 삽입, 삭제 작업을 평균적으로 O(log n)의 시간 복잡도로 수행합니다. 이는 트리의 균형을 유지하며, 한 번의 탐색으로 대상 데이터에 도달할 수 있기 때문입니다.
  • B-트리는 데이터베이스에서 인덱스를 구성할 때 주로 사용되며, 데이터베이스의 성능과 효율성을 높이는 데 중요한 역할을 합니다. B-트리의 차수(Degree)는 한 노드가 가질 수 있는 키-값 쌍의 최대 개수를 의미하며, 적절한 차수 설정은 B-트리의 성능에 영향을 미칩니다.

3. 해시(Hash):

  • 해시 구조는 데이터를 해시 함수를 통해 해시 버킷에 매핑하여 저장하는 방식입니다. 해시 함수를 사용하여 데이터를 빠르게 검색할 수 있으며, 유일한 키 값을 가진 데이터에 적합합니다. 하지만 데이터의 정렬이나 범위 검색에는 적합하지 않을 수 있습니다.

4. 클러스터드 인덱스(Clustered Index):

  • 클러스터드 인덱스는 테이블의 실제 데이터 행을 정렬된 형태로 저장하는 방식입니다.
  • 테이블당 하나의 클러스터드 인덱스만 생성할 수 있으며, 클러스터드 인덱스가 없는 테이블은 힙(Heap) 구조로 데이터가 저장됩니다.
  • 클러스터드 인덱스는 주로 테이블의 기본 키(Primary Key)에 대해 생성되는 경우가 많습니다.
  • 클러스터드 인덱스를 통해 데이터를 검색할 때는 해당 키의 순서에 따라 연속된 블록을 읽어오므로, 범위 검색이나 정렬 작업에 높은 성능을 제공합니다.

이 외에도 데이터베이스는 다양한 저장 방식을 활용하여 성능과 데이터 조작에 최적화된 구조를 구축합니다. 각 데이터베이스 관리 시스템(DBMS)마다 지원하는 저장 방식이 다를 수 있으며, 데이터베이스 설계와 쿼리 작성 시에 이러한 저장 방식을 고려하여 최적의 성능과 효율성을 달성할 수 있도록 해야 합니다.

반응형

'DATABASE' 카테고리의 다른 글

클러스터드 인덱스와 논클러스터드 인덱스 정의  (0) 2023.06.20