테이블(Table)



  • 데이터 스토리지의 기본 단위로, 행(row)과 열(column)로 저장됩니다.

  • 실제 디스크 공간을 사용하지 않지만 사용자가 지정한 표현식이나 함수에 의해 계산될 수 있는 가상 컬럼(virtual column)을 지정할 수 있습니다.

  • 테이블에 대한 압축 기능을 사용할 수 있습니다.

  • 파티셔닝 옵션을 통해, 다양한 파티셔닝 기법을 사용할 수 있습니다.

  • 테이블의 열로 또 다른 테이블을 정의할 수 있는 Nested Table 기능을 지원합니다.

  • 특정 트랜잭션이나 세션에 한해 임시 테이블(temporary table)을 사용할 수 있습니다. 해당 트랜잭션이나 세션이 종료되면 해당 데이터는 자동으로 사라집니다.


  • 데이터베이스 외부에 존재하는 일반 데이터에 대해 이를 데이터베이스 내의 일반 테이블처럼 읽기 작업을 할 수 있는 외부 테이블(external table)을 사용할 수 있습니다.

       


    뷰(View)


  • 뷰는 하나 혹은 그 이상의 테이블이나 다른 뷰에 저장된 데이터에 대한 맞춤형 표현 방법입니다.

  • 뷰는 테이블처럼 사용할 수 있지만, 테이블과는 달리 별도의 저장 공간이 필요치 않습니다.

  • 조인 뷰(Join View)를 사용할 수 있으며, DML 문장을 사용할 수 있는 경우를 Updatable Join View라고 합니다.


  • 별도의 스키마 오브젝트는 아니지만, SQL 문장 안에 뷰처럼 사용할 수 있는 subquery를 Inline View라고 합니다.

       


    클러스터(Cluster)


  • 주로 함께 사용되는 공용 컬럼 값들을 기준으로 동일한 데이터 블록에 테이블 데이터 들이 저장되도록 하는데 사용됩니다.


  • Index cluster 형태를 쓸 수도 있고, cluster key 값에 대한 hash function의 결과 값에 따라 저장하는 형태를 사용할 수도 있습니다.

    Materialized View


  • 데이터에 대한 요약, 계산, 복제, 분산 등에 사용되는 스키마 오브젝트입니다.


  • 별도의 저장 공간 사용, 마스터 테이블이 변경되면 반영되는 점, SQL 실행 속도의 향상, Query Rewrite에 의한 SQL의 투명성 등의 의미에서 인덱스와 유사한 개념입니다.

    Materialized View Log



  • Materialized View가 정의된 마스터 테이블의 데이터가 변경된 경우, 이를 점진적으로 빠르게 반영할 수 있도록 마스터 테이블의 변경 내역을 저장하는 오브젝트입니다.

       


    차원(Dimension)


  • DW 환경에서 많이 사용되는 일/월/년 등과 같이, 컬럼들 혹은 컬럼 집합들 간의 계층적 관계를 정의하는 오브젝트입니다.


  • 별도의 저장 공간이 필요치 않습니다.

       


    시퀀스(Sequence)


  • 유일한 일련 번호를 쉽고 빠르게 얻을 수 있는 오브젝트입니다.


  • 오름차순/내림차순으로 사용할 수 있고, 번호들 간의 인터벌을 둘 수 있고, 메모리에 캐쉬 시킬 수도 있습니다.

       


    Synonym



  • 테이블, 뷰, materialized view, 시퀀스, procedure, function, package, type, 또 다른 synonym에 대한 alias로 data dictionary에 정의만 저장될 뿐이지, 별도의 저장 공간이 필요치 않습니다.

       


    인덱스(Index)



  • 다음과 같이 다양한 인덱스 기법을 지원합니다.


    • B-tree index

    • B-tree cluster index

    • Hash cluster index

    • Reverse key index

    • Bitmap index

    • Bitmap join index

    • Function-based index

    • Domain index

  • Unique index와 Nonunique index를 생성할 수 있습니다.

  • 여러 컬럼을 조합해서 인덱스를 생성할 수 있습니다.


  • 인덱스를 invisible 상태로 변경할 수 있습니다. 이 경우 DML 오퍼레이션의 결과는 이 인덱스에 유지되지만, 옵티마이저에 의해서는 사용되지 않습니다. 인덱스 생성 결과를 검증한 후 visible 상태로 변경하면, 이 때부터 옵티마이저가 이 인덱스를 사용하게 됩니다.

       


    Index-Organized Table(IOT)



  • 이는 인덱스와 테이블을 하나로 합친 것과 같은 개념으로, 일반 테이블의 경우엔 데이터가 순서없이 저장되는 반면, 이 IOT에서는 primary key 순으로 B-tree 인덱스 구조에 저장됩니다. 또한 primary key 컬럼 값 뿐 아니라, 다른 컬럼들의 값들도 모두 이 한 오브젝트에 저장됩니다.

       


       

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다