7. 오라클의 데이터 구조

Kyu·2023년 3월 21일
0

오라클의 데이터 구조

저자왈: 데이터 구조는 복잡하지만 이해할 때까지 몇번이든 반복해서 학습하세요.

  • 테이블스페이스(tablespace)
  • 세그먼트(segment)
  • 익스텐트(extent)
  • 블록(block)
  • 데이터 파일(datafile)

가변 길이 데이터를 관리할 프로그램을 만들기 위헤선?

질문:
여러 테이블의 데이터를 파일로 관리하기 위한 프로그램을 처음부터 만든다고 가정합시다.
해당 프로그램의 구조를 떠올려보세요.
관리할 데이터는 가변 길이이며, 길어지는 경우도 있지만 짧아지는 경우도 있고, 삭제하거나 생성하는 경우도 있다고 하겠습니다

데이터를 차례대로 넣는다?

파일의 시작부터 a,b,c,d, .... 파일의 끝까지 차례대로 넣는다면?
데이터를 변경할 때 곤란할 수. 있다.
중간에 e 를 삽입한다고 해보자.
뒤에 데이터가 존재해서 힘들다.
동시에 처리할 수 도 없다.
데이터가 100만건이라면 100만건의 I/O 가 발생할 수도 있다.
사용하지않는 공간 관리도 힘들다

어떻게 해야할까?

완전하진 않지만 적당한 크기로 정리해서 접근 방식이라면 통할 수도 있다.
예를들면, 100만건을 적당히 1만건을 한개의 집합으로 관리하면 최대 100번의 I/O만 생기기때문이다.

정리

  • 관리 및 I/O 효율을 고려해 공간을 어느정도 크기로 뭉쳐서 할당한다
  • 데이터 변경에 필요한 공간을 확보한다
  • 비어있는 공간을 관리한다.

오라클의 데이터 구조

  • 테이블스페이스(tablespace)
  • 세그먼트(segment)
  • 익스텐트(extent)
  • 블록(block)
  • 데이터 파일(datafile)

크게 물리구조와 논리구조로 나뉜다.
물리구조 - 데이터 파일 등 OS 에서 보이는 구조
논리구조 - OS에서 식별할 수 없는 오라클 제품 내부 구조, ex) 데이터 파일 아넹 보관된 테이블이나 로우는 논리구조

책에서 이해하기 쉬운 비유를 하나 보고 가자.

집안에 책(데이터)이 늘어나서 창고(데이터베이스)에 맡긴다고 가정하자.

책을 창고에 마구잡이식으로 쌓아두면 관리하기가 어려우므로 관리하기 편하게 상자(블록)에 집어넣습니다.
고객마다 상자를 한 곳(또는 선반)에 정리해서 모아둡니다.
이런 선반 하나가 익스텐트를 의미하며, 한 고객이 맡긴 물건 전부가 세그먼트입니다.

즉, 아래와 같은 그림이 될 수 있다.

데이터 구조에는 어떤 것들이 있는가?

세그먼트

세그먼트는 사용자가 조작이 가능한 테이블이나 인덱스가 있고,
오라클에서 자동으로 만드는 데이터 정렬 세그먼트나 UNDO라고 불리는 과거 데이터를 보관하는 세그먼트도 있다.

테이블스페이스

한 개 이상의 데이터 파일로 구성.
테이블스페이스는 오라클이 디비를 관리하기위해 사용하는 테이블스페이스와 사용자가 사용하는 테이블스페이스(mysql에서 database) 등 몇가지 종류가 존재.

블록 안의 공간

오라클은 블록 안에 데이터 변경에 대비한 공간을 남겨둔다.
다시 읽어봐야함. 125p

ROWID

데이터 로우 주소를 ROWID 라고함.
그냥 연속된 숫자가 아니라 데이터파일번호나 데이터파일안의 블록 번호, 블록 안에 로우번호와 같은 정보로 구성되어있다.

profile
TIL 남기는 공간입니다

0개의 댓글