A

[SQL]DATABASE의 구조

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

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건
+
제목 글쓴이 날짜 조회
10-09-25 조회 2,721
10-09-19 조회 2,757
10-09-15 조회 2,756
10-09-15 조회 4,162
10-09-15 조회 3,376
10-09-15 조회 2,491
10-09-07 조회 3,602
10-08-27 조회 4,063
10-06-11 조회 4,234
10-05-31 조회 2,481
10-02-27 조회 5,002
10-02-09 조회 3,748
09-10-10 조회 7,344
09-03-19 조회 3,191
09-02-09 조회 3,464
09-02-09 조회 4,531
08-11-01 조회 2,907
08-09-29 조회 4,561
08-09-26 조회 3,511
08-09-26 조회 3,589
08-09-26 조회 2,724
08-09-26 조회 3,768
08-09-26 조회 3,493
08-09-26 조회 4,255
08-09-18 조회 3,576
08-09-09 조회 3,227
08-08-28 조회 2,773
08-07-06 조회 3,541
08-05-21 조회 4,706
08-05-13 조회 4,537
08-04-17 조회 4,918
08-02-19 조회 3,541
08-01-18 조회 3,841
08-01-10 조회 3,818
07-10-22 조회 3,654
07-10-09 조회 4,307
07-10-03 조회 3,513
07-07-06 조회 4,212
07-07-06 조회 4,426
07-07-06 조회 4,036
07-06-28 조회 3,566
07-06-05 조회 3,567
07-06-05 조회 4,115
07-05-30 조회 3,288
07-05-02 조회 3,686
07-04-15 조회 5,148
07-04-11 조회 3,628
07-04-05 조회 3,926
07-03-31 조회 3,149
07-03-31 조회 4,123
07-03-30 조회 3,731
07-03-24 조회 4,000
07-03-22 조회 3,658
07-03-12 조회 4,412
07-02-16 조회 3,270
07-02-14 조회 5,167
07-02-10 조회 3,997
07-02-09 조회 4,381
07-01-19 조회 4,049
07-01-16 조회 4,975
06-12-16 조회 5,835
06-11-30 조회 3,599
06-11-25 조회 3,707
06-10-15 조회 5,067
06-09-26 조회 5,309
06-09-26 조회 5,425
06-09-22 조회 4,273
06-09-21 조회 3,545
06-09-21 조회 3,638
06-09-02 조회 3,484
06-08-08 조회 5,115
06-07-20 조회 3,720
06-07-17 조회 3,355
06-07-13 조회 4,174
06-07-11 조회 3,473
06-07-11 조회 3,481
06-07-11 조회 3,837
06-06-29 조회 6,063
06-06-19 조회 6,461
06-06-02 조회 3,514
06-05-24 조회 4,998
06-05-14 조회 7,776
06-05-08 조회 3,893
06-02-02 조회 5,452
05-12-16 조회 4,508
05-12-05 조회 5,157
05-06-28 조회 4,109
05-04-11 조회 4,066
05-04-11 조회 4,251
05-04-11 조회 3,316
05-03-13 조회 3,220
05-03-12 조회 4,297
04-12-08 조회 7,780
04-12-01 조회 5,184
04-11-28 조회 3,358
04-11-28 조회 3,198
04-08-05 조회 5,613
04-08-05 조회 4,969
04-08-05 조회 5,577