A

[SQL]DATABASE의 구조

· 17년 전 · 2144

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,985
17년 전 조회 3,661
17년 전 조회 1,558
17년 전 조회 1,390
17년 전 조회 2,324
17년 전 조회 1,320
17년 전 조회 1,633
17년 전 조회 1,469
17년 전 조회 2,536
17년 전 조회 1,504
17년 전 조회 1,095
17년 전 조회 1,229
17년 전 조회 3,101
17년 전 조회 2,164
17년 전 조회 1,974
17년 전 조회 1,219
17년 전 조회 2,452
17년 전 조회 1,171
17년 전 조회 1,131
17년 전 조회 1,378
17년 전 조회 2,744
17년 전 조회 2,398
17년 전 조회 2,484
17년 전 조회 1,183
17년 전 조회 1,302
17년 전 조회 3,245
17년 전 조회 2,832
17년 전 조회 4,101
17년 전 조회 2,264
17년 전 조회 2,358
17년 전 조회 1,408
17년 전 조회 2,529
17년 전 조회 2,213
17년 전 조회 2,971
17년 전 조회 2,482
17년 전 조회 1,644
17년 전 조회 2,436
17년 전 조회 1,591
17년 전 조회 1,181
17년 전 조회 2,240
17년 전 조회 2,889
17년 전 조회 4,063
17년 전 조회 3,150
17년 전 조회 1,418
17년 전 조회 1,707
17년 전 조회 2,248
17년 전 조회 1,553
17년 전 조회 1,728
17년 전 조회 2,719
17년 전 조회 2,145
17년 전 조회 1,799
17년 전 조회 4,202
17년 전 조회 3,049
17년 전 조회 1,444
17년 전 조회 3,573
17년 전 조회 2,801
17년 전 조회 2,081
17년 전 조회 1,301
17년 전 조회 2,337
17년 전 조회 2,072
17년 전 조회 1,985
17년 전 조회 1,931
17년 전 조회 1,180
17년 전 조회 1,888
17년 전 조회 2,939
17년 전 조회 1,440
17년 전 조회 1,680
17년 전 조회 1,363
17년 전 조회 1,609
17년 전 조회 1,583
17년 전 조회 1,455
17년 전 조회 2,567
17년 전 조회 2,332
17년 전 조회 2,111
17년 전 조회 1,420
17년 전 조회 2,437
17년 전 조회 4,259
17년 전 조회 2,745
17년 전 조회 1,668
17년 전 조회 1,860
17년 전 조회 3,237
17년 전 조회 2,242
17년 전 조회 3,836
17년 전 조회 1,687
17년 전 조회 2,278
17년 전 조회 2,107
17년 전 조회 1,623
17년 전 조회 2,139
17년 전 조회 1,935
17년 전 조회 1,969
17년 전 조회 3,082
17년 전 조회 2,155
17년 전 조회 1,446
17년 전 조회 1,467
17년 전 조회 2,132
17년 전 조회 3,210
17년 전 조회 2,146
17년 전 조회 1,541
17년 전 조회 4,243
17년 전 조회 2,031
🐛 버그신고