A

[SQL]DATABASE의 구조

· 17년 전 · 2134

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에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다. 로그인

프로그램

+
제목 글쓴이 날짜 조회
17년 전 조회 1,979
17년 전 조회 3,654
17년 전 조회 1,548
17년 전 조회 1,380
17년 전 조회 2,318
17년 전 조회 1,311
17년 전 조회 1,624
17년 전 조회 1,455
17년 전 조회 2,523
17년 전 조회 1,491
17년 전 조회 1,084
17년 전 조회 1,218
17년 전 조회 3,094
17년 전 조회 2,158
17년 전 조회 1,966
17년 전 조회 1,209
17년 전 조회 2,443
17년 전 조회 1,166
17년 전 조회 1,124
17년 전 조회 1,365
17년 전 조회 2,728
17년 전 조회 2,385
17년 전 조회 2,472
17년 전 조회 1,173
17년 전 조회 1,288
17년 전 조회 3,238
17년 전 조회 2,823
17년 전 조회 4,090
17년 전 조회 2,250
17년 전 조회 2,346
17년 전 조회 1,396
17년 전 조회 2,516
17년 전 조회 2,203
17년 전 조회 2,960
17년 전 조회 2,470
17년 전 조회 1,633
17년 전 조회 2,425
17년 전 조회 1,584
17년 전 조회 1,173
17년 전 조회 2,232
17년 전 조회 2,878
17년 전 조회 4,053
17년 전 조회 3,143
17년 전 조회 1,409
17년 전 조회 1,706
17년 전 조회 2,239
17년 전 조회 1,544
17년 전 조회 1,717
17년 전 조회 2,711
17년 전 조회 2,135
17년 전 조회 1,788
17년 전 조회 4,191
17년 전 조회 3,040
17년 전 조회 1,430
17년 전 조회 3,564
17년 전 조회 2,794
17년 전 조회 2,075
17년 전 조회 1,290
17년 전 조회 2,324
17년 전 조회 2,064
17년 전 조회 1,977
17년 전 조회 1,919
17년 전 조회 1,170
17년 전 조회 1,875
17년 전 조회 2,929
17년 전 조회 1,430
17년 전 조회 1,671
17년 전 조회 1,352
17년 전 조회 1,599
17년 전 조회 1,571
17년 전 조회 1,444
17년 전 조회 2,556
17년 전 조회 2,320
17년 전 조회 2,102
17년 전 조회 1,412
17년 전 조회 2,424
17년 전 조회 4,246
17년 전 조회 2,735
17년 전 조회 1,657
17년 전 조회 1,850
17년 전 조회 3,227
17년 전 조회 2,229
17년 전 조회 3,823
17년 전 조회 1,671
17년 전 조회 2,268
17년 전 조회 2,097
17년 전 조회 1,613
17년 전 조회 2,128
17년 전 조회 1,925
17년 전 조회 1,959
17년 전 조회 3,072
17년 전 조회 2,147
17년 전 조회 1,435
17년 전 조회 1,458
17년 전 조회 2,123
17년 전 조회 3,199
17년 전 조회 2,137
17년 전 조회 1,527
17년 전 조회 4,233
17년 전 조회 2,022
🐛 버그신고