티스토리 뷰

1. 관계형 데이터 베이스 관리 시스템

  1) 데이터 베이스 관리 시스템은 네트워크(Network)의 계층 모델에서 관계형 모델로 발전하였다.
  2) 데이터 베이스에서 가장 많이 사용되는 모델은 관계형 데이터 베이스 모델이다.  
  3) 관계형 모델의 특징

구조
(Structure)

 데이터 베이스에 데이터를 읽거나 쓰기에 필요한 테이블(Table), 뷰(View), 인덱스(Index)등과 같은 객체를 말한다.

조작
(Operations)

 데이터 베이스에 데이터와 구조를 조작할 수 있도록 미리 정의 된 명령어로 무결성 규칙을 따른다.

무결성규칙
(Integrity Rules)

데이터 조작을 사전에 결정한 규칙으로 데이터와 구조를 보호하는 기능을 한다. 

 4) 관계형 모델의 장점 
    - 물리적 데이터 저장 영역과 논리적 데이터 베이스 구조의 독립적이다. 
    - 모든 데이터에 대해서 쉽고 다양하게 조회할 수 있다. 
    - 데이터 베이스 설계시의 완벽한 융통성을 부여한다. 
    - 데이터 저장 영역과 중복성이 감소한다. 
    - 특수한 경우에 데이터베이스를 닫을수도 있다.

2. 물리적 데이터베이스 구조(Logical Database Structure)

  1) 테이블 스페이스 (Table space)
    - 데이터베이스의 논리적 저장공간을 테이블스페이스라 한다. 
    - 테이블스페이스는 연관된 논리구조를 그룹화하여 사용한다. 
    - 데이터베이스, 테이블스페이스, 데이터파일의 관계
   

참조: https://docs.oracle.com/cd/B19306_01/server.102/b14220/img/cncpt037.gif

    - 각 데이터베이스는 논리적으로 하나 이상의 테이블스페이스로 구성된다. 
    - 각 테이블스페이스는 하나 이상의 데이터파일로 구성되며, 논리적 구조와 데이터를 테이블스페이스에 저장한다.
    - 테이블스페이스의 저장영역은 테이블스페이스에 포함된 파일의 크기를 합한 것과 같다.
    - 데이터베이스의 데이터베이스에 포함된 테이블스페이스의 크기를 합한 것과 같다. 
  2) 스키마 & 스키마 오브젝트(Schema & Schema objects)
    - 스키마는 객체들을 말하며, 스키마 오브젝트는 데이터베이스의 데이터를 직접 참조하는 논리구조이다. 
    - 동일한 스키마 객체가 각기 다른 다른 테이블스페이스에 존재할수 있다.

    - 하나의 테이블스페이스는 여러개의 스키마 객체를 가질수 있다. 
  3) 테이블 (Table)
    - 데이터베이스에서 동알한 구조의 데이터를 저장하는 기본단위로 사용자가 읽을 수 있는 모든 데이터를 저장한다.

    - 테이블에서 데이터는 행과 열에 저장된다. 
    - 모든 테이블은 테이블 이름과 열의 집합으로 정의 한다. 
    - 각 열은 열의 이름, 데이터 타입, 길이등의 속성을 가진다. 
    - 테이블이 생성되면 데이터를 행에 추가한 후 행에 대하여 조회, 수정, 삭제가 가능하다. 
    - 테이블 데이터에 정의된 규칙은 무결성(Integrity)조건, 트리거(Trigger)로 정의할 수 있다. 
  4) 뷰(View)
    - 하나 이상의 테이블에 있는 데이터를 사용자가 보고 싶은 형태로 저장해 놓은 쿼리(Stored Query)이다.

    - 뷰는 실제적인 데이터를 저장하지 않으며, 원본인 테이블의 데이터를 조회하는 것이다. 
    - 뷰에 수행되는 모든 작업은 원본 테이블에 영향을 준다. 
    - 뷰는 데이터의 복잡성을 줄일 수 있다. 
    - 미리 결정된 테이블의 행과 열에 대한 조회를 제한하고 테이블에 대한 보안 기능을 제공한다. 
    - 사용자의 명령을 단순화 시킬 수 있다. 
    - 복잡한 질의를 저장가능 하다. 
    - 원본 테이블과 다른 관점에서 데이터를 제공한다. 
  5) 시퀀스(Sequence)
    - 데이터베이스 테이블의 숫자열에 고유한 숫자 목록을 생성한다. 
    - 하나 이상의 테이블의 열에 숫자값을 자동으로 생성하여 응용 프로그램을 단순화 시킨다. 
    - 시퀀스가 생성하는 번호는 테이블과는 독립적이며 동일한 스퀀스를 여러개의 테이블에서 사용할 수 있다. 
    - 한번 생성되면 여러 사용자가 중복되지 않는 번호를 생성할 수 있다. 
  6) 프로그램 단위(Program units)
    - 내장프로시즈(Stored Procedure), 함수(Function), 팩키지(Package) 등이 있다. 

    - 내장 프로시즈나 함수는 특정 작업을 수행하기 위해 실행 가능한 단위로 만들어진 SQL, PL/SQL 명령문의 집합이다.
    - 함수는 항상 하나의 값을 호출자에게 반환해아 한다. 
    - 내장 프로시즈는 호출자에게 값을 돌려주지 않아도 된다. 
  7) 시노임(Synonyms)
    - 테이블, 뷰, 시퀀스 또는 프로그램에 대해서 별칭을 말한다. 
    - DBA(Database Administrator)가 범용명칭 생성하여 모든 사용자가 시스템 전역에서 같은 이름을 사용하게 한다. 
    - 동의어는 실제로 객체는 아니나 객체를 직접 참조할 수는 있다. 
    - 객체의 실제 이름과 소유주를 숨길 수 있다. 
    - 객체에 대한 범용 액세스를 제공한다. 
    - 원격 데이터베이스에 있는 테이블, 뷰, 프로그램 단위의 투명성을 제공한다. 
    - 데이터베이스 사용자를 위해 SQL 명령문을 단순화 시킨다.  
  6) 인덱스(Index)
    - 테이블과 관련된 선택적 구조로 테이터 검색 성능을 향상시킨다. 
    - 테이블 데이터에 대해 빠른 조회경로를 제공한다. 
    - 테이블의 질의를 처리할 때 일부 또는 모든 인덱스를 사용하여 데이터를 효율적으로 찾는다. 
    - 하나 이상의 열을 참조하여 생성한다. 
    - 성능에 대하여 자동으로 유지 관리하고 완벽한 투명성을 제공한다. 
    - 데이터와 물리적 논리적으로 독립적이다.
    - 테이블이나 다른 인덱스에 영향을 주지않고 언제든지 생성, 제거 할수 있다. 
  8) 클러스트(Cluster)
    - 테이블 데이터를 저장하는 방법이다. 
    - 공통열을 공유하고 하나 이상의 테이블을 물리적으로 함께 저장하는 것을 말한다. 
    - 서로 연관된 행이 물리적으로 함께 저장되므로 디스크를 읽어들이는 시간을 줄일 수 있다. 
    - 클러스트에 있는 테이블의 서로 관련된을을 클러스트 키(Cluster Key)라고 한다. 
    - 클러스트 키는 인덱스되어 클러스트의 행이 최소한의 입출력을 할수 있도록 한다. 
    - 인덱스 클러스트는 클러스트 키가 한번만 저장하므로 테이블을 각각 저장할 때 보다 효과적이다. 
    - 클러스트는 데이터의 분산 정도와 어떤 SQL문을 자주 사용하느냐에 따라 데이터 검색성능이 달라진다. 
    - 조인된 테이블을 질의 할 때 공통된 행에 동일한 입출력 작업으로 조회 하므로 효과적이다. 
  9) 해쉬 클러스트(Hash Cluster)
    - 인덱스 클러스트와 비슷한 방법으로 테이터를 클러스트한다. 
    - 해쉬 클러스트의 행은 클러스트 키 값에 해쉬 함수를 적용한 결과를 기초로 한다. 
    - 테이블에 등가 질의가 많이 발생하는 경우 인덱스 테이블이나 인덱스 클러스트를 사용하는 것보다 효과적이다.
  10) 데이터 링크(Data Links)
    - 한 데이터베이스에서 다른 데이터베이스로의 경로를 나타내는 객체이다. 
    - 분산 데이터베이스의 글로벌 객체 이름(Global Object Name)을 만들때 사용한다. 

3. 데이터 블럭(Data Block), 확장(Extents), 분할(Segments)

  1) 데이터 블럭(Data Block)
    - 가장 작은 단위의  데이터 블럭에 저장된다. 
    - 데이터 블럭의 크기는 데이터 베이스가 생성될때 지정할 수 있다. 
  2) 확장(Extends)
    - 연속적인 데이터 블럭이 한번에 할당되며 특정 형태의 정보 저장에 사용된다. 
  3) 분할(Segments)
    - 확장 영역위의 논리적 데이터베이스 저장 영역  

Data segment Cluster가 되지 않은 테이블에는 데이터 세그먼트가 존재한다.
테이블의 모든 데이터는 데이터 세그먼트의 확장 영역에 저장된다. 
Index segment 각 인덱스는 인덱스를 저장하는 인덱스 세그먼트가 존재한다.
Rollback segment 하나 이상의 롤백 세그먼트는 데이터베이스에 임시로 저장할 때 생성된다. 
Read Consistency(읽기 일관성) 데이터 베이스 정보를 생성 
Database Recovery 할때
Commit 되지 않은 트랜젝션을 Rollback 때
Temporary segment SQL 명령문의 완전한 실행을 위해 임시 작업영역이 필요할 때 생성된다. 
명령문 실행이 완료되고나면 임시 세그먼트의 확장영역을 시스템에 반환한다. 

    - 세그먼트 영역이 지정한 용량을 초과하면 동적으로 확장한다. 
    - 세그먼트 영역은 연속적 메모리공간일 필요는 없다. 
    

4. 물리적 데이터 구조(Physical database structure)


  - Data files, Redo log files, Control Files등을 포함하는 Oracle database의 물리적 구조 
  1) 데이터 파일(Data files)
    - 모든 오라클 데이터베이스는 하나 이상의 물리적 데이터 파일을 가진다. 
    - 데이터 파일은 데이터베이스의 모든 데이터를 가진다. 
    - 데이터 파일은 하나의 데이터베이스로 구성된다. 
    - 데이터 파일의 영역이 모자랄 때 자동으로 확장된다. 
    - 하나 이상의 데이터 파일이 데이터베이스 저장 영역의 논리적 단위인 테이블 스페이스를 만든다. 
    - 데이터는 데이터베이스가 정상적으로 작동하는 동안 언제든지 읽을 수 있으며, Oracle의 메모리 캐쉬에 저장한다.
    - 데이터의 수정 또는 삽입은 즉시 기록하지 않고, 메모리에 저장하였다가 적합한 데이터 파일에 일괄 기록한다. 
    - DBWR 백그라운드 프로세스가 일괄기록을 통제한다. 
  2) 리두 로그 파일 (Redo log files)
    - 모든 데이터베이스는 두개이상의 리두 로그파일을 가지고 있다. 
    - 데이터에 발생한 모든 변경사항을 기록한다. 
    - 이미 수정된 데이터가 장애 때문에 데이터 파일에 영구적으로 기록되지 못했다면
       수정된 부분이 리두 로그에 기록되어 있으므로 수행한 작업은 손실되지 않는다. 
    - 데이터 베이스 장애로 부터 보호하는 중요한 역할을 한다. 
    - 리두 로그 자체의 장애를 방지하기 위해 Multiplexed Redo Log를 사용한다. 
    - 서로 다른 디스크에 복사본을 유지 관리한다. 
    - 리두로그파일 사용은 시스템 장애나 매체고장으로 부터 데이터베이스를 복구할 때만 사용한다.
    - 복구 작업동안 리두로그를 적용하는 것을 Rolling Forward라고 한다. 
  3) 컨터롤 파일(Control Files)
    - 데이터베이스의 물리적 구조를 보관한다. 
    - 데이터베이스의 이름을 보관한다. 
    - 데이터파일과 리두 로그파일의 이름과 위치를 보관한다. 
    - 데이터베이스의 생성시간을 보관한다.
    - 보호를 위해 여러개의 복사본을 가질 수 있다. 
    - 제어파일 사용은 데이터베이스의 인스턴스가 시작될때마다
       데이터 베이스와 데이트베이스에 필요한 리두 로그파일을 연결한다. 
    - 데이터 베이스의 물리적 구성이 변경되면 제어파일을 자동으로 수정한다. 
  4) 데이터딕셔너리(Data Dictionary)
    - 데이터베이스의 논리적 구조와 물리적구조에 대한 정보를 모두 포함한다. 
    - 데이터 딕셔너리는 데이터베이스 정보를 포함하는 테이블과 부의 집합으로 읽기 전용이다. 
    - 데이터베시스를 사용하는 사용자 정보도 포함한다. 
    - 데이터베이스에 테이블에 정의된 무결성 제약 정보도 포함한다.
    - 스키마 객체에 할당된 영역과 사용중인 영역에 대한 정보도 포함한다. 
    - 데이터베이스가 생성될때 자동으로 만들어진다. 
    - 데이터구조 변경이 발생하면 데이터딕셔너리가 자동으로 갱신된다. 

'Database' 카테고리의 다른 글

[Oracle] Oracle Server  (0) 2019.09.29
[Oracle] 서버의 특징  (0) 2019.07.01
[Oracle] 서버에 대하여  (0) 2019.07.01
[Oracle] Oracle Database 11g Express Edition Install  (3) 2019.07.01
[Oracle] Oracle Database 18c Express Edition Install  (4) 2019.06.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함