A

[SQL]DATABASE의 구조

· 2008-09-20 (토) 22:21:33 · 3565

2. DATABASE의 구조

2.1 DATABASE의 구조

여기서는 SQL에 대한 기초적인 내용을 소개합니다. 우선 SQL의 특성에 대해서 간단히 알아보죠.

Segment

Segment라는 것은 이름을 갖고 있는 저장 공간의 최소 단위입니다. 일반적으로 우리들이 부르는 Table, Index, Rollback은 Segment의 종류이죠.
여기서 설명한 Segment(Table, Index, Rollback)은 OS상의 File System에서는 그 실체를 확인할 수는 없습니다. ORACLE의 경우는 Data Directory를 이용해서 알 수 있죠.

Tablespace

Tablespace는 Segment가 들어있는 공간을 말합니다.

Tablespace는 논리적인 공간으로 File System 상에 존재하는 것으로 Data File들로 구성됩니다. File System상에 물리적인 Disk 공간 즉, Data File을 확보하여 이 공간 내에 하나 이상의 Segment를 두게 됩니다.

물리적인 Disk 공간인 Data File은 하나 이상이 모여 Tablespace를 이루게 됩니다. 즉, Tablespace 하나가 여러 개의 Data File로 구성될 수 있다는 것이죠.

일반적으로 Data File을 확장자는 .dbf로 나타냅니다.

Database

Database는 여러개의 Tablespace가 모여 하나의 DB를 이루게 합니다

위에서 설명한 Database 구조에서 Tablespace를 이루는 Data File만 실제를 확인 할 수 있으며 나머지는 Database 내부에서 관련된 정보를 갖고 있습니다.

하나의 Database를 이루는 Tablespace가 몇 개이며(즉, Tablespace는 Disk상에 Phisical하게 존재하지만, Database와 Segment는 Logical하게 존재하는 것입니다.) Tablespace를 이루고 있는 Data File은 ORACLE의 경우 내부에 있는 v$datafile을 확인해 보면 됩니다.

SELECT * FROM v$datafile ;

2.2 OBJECT의 이해

ORACLE DATABASE에는 여러 가지의 Object가 있으며 이중 대표적인 Object는 Table, View, Synonym, Index, Sequence 등이 있습니다.

테이블(TABLE)

기존의 파일시스템에서 데이터를 저장하는 곳은 파일이지만 데이터베이스에서는 테이블이라는 데이터베이스 구조에 데이터를 저장하게 됩니다. 모든 테이블은 이름으로(예, STUDENT) 구분되며 데이터는 행(Row)이나 열(Column) 단위로 저장됩니다.

하나의 열(Column)은 이름(예, NAME, AGE, SCORE), 데이터 타입(CHAR, NUMBER, DATE), 길이로 구성되며 열(Column)들이 모여 하나의 행(Row)를 구성합니다.

데이터의 정확성을 보장하기 위해서 테이블을 생성할 때 각각의 열(Column)에 제약사항을 지정할 수 있습니다. 파일시스템에서처럼 NUMBER 데이터 타입에 CHARACTER형태의 Data가 들어갈 수 없는 것 외에도 Null 값 체크, 일정한 값만 들어가도록 할 수도 있습니다.

인덱스(INDEX)

테이블 내의 데이터를 조회하고자 할 때, 속도의 향상을 위해서 조건을 주고자 하는 열을 순서적으로 정렬하여 실 데이터가 있는 곳의 주소를 연결시켜 놓은 데이터베이스 구조를 인덱스라 합니다. 대량의 데이터에서 하나의 행을 찾고자 할 때는 굉장히 빠른 속도를 보장하지만, 데이터를 테이블로 삽입을 할 때는 데이터의 삽입과 동시에 인덱스를 재정렬해야 합니다.

뷰(VIEW)

뷰는 기본이 되는 Table안에 저장되어 있는 Data를 다음과 같은 이유에서 열(Column)의 이름, 열의 개수, 행의 개수 또는 보는 사용자에 따라서 다른 형태로 보게 하므로 실제로 Data를 저장하는 구조는 아닙니다.

  • 필요한 행과 열만을 사용자에게 보여주고자 할 때 (Security)
  • 복잡한 조건을 매번 주지 않고자 할 때 (Convenience)
  • 열의 이름을 테이블에 영향을 주지 않고 바꾸고자 할 때 (Perspective)
  • 추후에 테이블의 열이 추가되어도 프로그램 변경을 하지 않기 위해

동의어(SYNONYM)

테이블을 편리하게 다른 이름으로 참조를 하고자 할 때 생성합니다. STUDENT라는 테이블을 "학생"이라는 이름으로 동의어를 만들어서 사용할 수 있습니다.

시퀀스(SEQUENCE)

학생의 번호, 반 번호처럼 순차적으로 증가하거나 감소하는 번호를 부여하기 위해 생성하는 데이터베이스 구조입니다.

여기서 설명한 Object중 Tablespace내에 영역을 차지하는 Table과 Index는 Segment이나 View, Synonym, Sequence는 Data를 저장하는 것이 아닌 Object이므로 Segment가 아닙니다.

[이 게시물은 관리자님에 의해 2011-10-31 17:27:00 MySQL에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
08-11-26 조회 4,537
08-11-25 조회 3,670
08-11-25 조회 2,860
08-11-25 조회 4,432
08-11-25 조회 4,309
08-11-21 조회 4,292
08-11-21 조회 5,213
08-11-20 조회 3,841
08-11-20 조회 3,652
08-11-19 조회 3,926
08-11-19 조회 4,180
08-11-18 조회 3,960
08-11-15 조회 2,817
08-11-14 조회 3,111
08-11-14 조회 2,768
08-11-14 조회 3,188
08-11-13 조회 3,812
08-11-12 조회 9,930
08-11-07 조회 4,434
08-11-07 조회 5,446
08-11-03 조회 3,232
08-11-01 조회 4,923
08-11-01 조회 2,904
08-10-30 조회 2,617
08-10-30 조회 3,517
08-10-30 조회 2,634
08-10-30 조회 2,869
08-10-30 조회 2,740
08-10-29 조회 3,837
08-10-29 조회 2,810
08-10-29 조회 2,342
08-10-20 조회 2,463
08-10-18 조회 4,396
08-10-16 조회 3,435
08-10-16 조회 3,260
08-10-14 조회 2,478
08-10-11 조회 3,783
08-10-11 조회 2,380
08-10-09 조회 2,492
08-10-09 조회 2,648
08-10-09 조회 4,100
08-10-08 조회 3,774
08-10-02 조회 3,732
08-10-02 조회 2,474
08-10-02 조회 2,572
08-09-29 조회 4,557
08-09-29 조회 4,195
08-09-26 조회 5,533
08-09-26 조회 3,509
08-09-26 조회 3,589
08-09-26 조회 2,724
08-09-26 조회 3,766
08-09-26 조회 3,489
08-09-26 조회 4,252
08-09-22 조회 3,797
08-09-22 조회 2,955
08-09-22 조회 3,893
08-09-22 조회 2,893
08-09-22 조회 2,523
08-09-21 조회 3,539
08-09-20 조회 4,108
08-09-20 조회 5,388
08-09-20 조회 4,447
08-09-20 조회 2,765
08-09-20 조회 2,971
08-09-20 조회 3,521
08-09-20 조회 2,898
08-09-20 조회 3,094
08-09-20 조회 4,073
08-09-20 조회 3,566
08-09-20 조회 3,150
08-09-19 조회 5,557
08-09-19 조회 4,345
08-09-19 조회 2,653
08-09-18 조회 4,977
08-09-18 조회 4,029
08-09-18 조회 3,394
08-09-18 조회 2,608
08-09-18 조회 3,567
08-09-18 조회 3,354
08-09-17 조회 3,237
08-09-16 조회 3,182
08-09-10 조회 2,416
08-09-09 조회 3,223
08-09-06 조회 4,118
08-09-06 조회 2,656
08-09-06 조회 2,998
08-09-06 조회 2,704
08-09-06 조회 2,916
08-09-06 조회 2,797
08-09-06 조회 2,746
08-09-05 조회 3,796
08-09-05 조회 3,607
08-09-05 조회 3,402
08-09-05 조회 2,632
08-09-05 조회 3,678
08-09-05 조회 5,608
08-09-05 조회 4,093
08-09-05 조회 2,982
08-09-05 조회 3,132