목차
💡 주요 키워드 ? 물리 데이터베이스 설계, 트랜잭션, 인덱스, 뷰, 클러스터, 파티션, 분산 데이터베이스, 접근통제, 스토리지, 이중화
📌 물리 데이터베이스 설계는 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.
💡 Clustering : 사전적 의미로는 '송이를 이루다', '떼를 짓게 하다' 라는 뜻으로 여기서는 '군집'이란 의미를 가지고 있다.
💡 트랜잭션(transaction) : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
💡 개념 스키마(Conceptual Schema) : 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
📌 물리적 설계 옵션이란 특정 DBMS에서 제공되는 것으로, 데이터베이스 파일대 대한 저장 구조와 접근 경로에 대한 다양한 옵션을 말한다.
📌 데이터 명명 규칙은 물리 데이터 모델에 적용해야 하는 규칙으로, 조직마다 다를 수 있으므로 물리 데이터 모델의 설계 전에 파악해야 한다.
🔔 예) 데이터 명명 규칙 예시
업무코드 | - 업무코드 3자리, 세부업무코드 3자리로 구성된다. - 업무코드와 세부업무코드를 기중으로 거래코드, 프로그램 등이 명명되므로 표준을 준수해야 한다. |
리소스 그룹 | 업무구분 3자리 + 세부업무구분 2자리로 명명한다. |
거래코드 | - 거래코드는 입력되는 데이터의 유형에 따라 부여된다. - 거래코드 명명규칙 : 서비스명과 동일 - 거래처 코드와 서비스 명은 1:1 관계로 명명한다. |
🔔 예) 도메인 예시
도메인 분류 | 도메인명 | 데이터 타입 |
코드 | 사원코드 | VARCHAR2(10) |
매장코드 | VARCHAR2(10) | |
상품코드 | VARCHAR2(10) | |
이름 | 사원이름 | VARCHAR2(20) |
매장이름 | VARCHAR2(20) | |
상품이름 | VARCHAR2(20) | |
수 | 사원수 | NUMBER(10) |
상품수 | NUMBER(10) |
💡 CHAR : 데이터 타입은 고정된 문자열을 저장하는데 사용. 테이블을 만들 때, 무조건 고정된 길이를 지정해줘야 하고 범위는 1~2000bytes 이며 한글의 경우 글자당 2byte 이므로 1000글자가 저장 가능하다. 영문, 숫자의 경우 1byte.
💡 VARCHAR, VARCHAR2 : 가변 길이로 문자열을 저장할 수 있는 데이터 타입. 만약 우리가 VARCHAR2로 변수를 만들면 1~4000byte까지의 길이를 지정해줄 수 있다.
💡 VARCHAR 와 VARCHAR2 차이점 : 실제로 오라클 공식 문서에는 두 데이터 타입이 동의어라고 나와 있다. 하지만 VARCHAR2를 사용하는 것을 추천. 이유는 VARCHAR는 나중에 다른 방식의 데이터 타입으로 변경될 수 있기 때문
📌 사스템 자원은 데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소들로, 사전에 미리 파악해야 한다.
중앙처리장치 | 중앙처리장치(CPU)의 성능과 집중적인 부하 발생시간 등을 파악한다. |
메모리 | 시스템의 전체 메모리 규모, 사용 중인 메모리 영역, 사용 가능한 메모리 여역 등 확보된 자원이나 실질적인 시스템 활용 정도 등을 파악한다. |
디스크 | 전체 디스크의 크기, 확보된 디스크 지원, 디스크 분활 형태, 현재 디스크 활용률, 사용 가능한 디스크 공간 등을 파악한다. |
I/O Controller | 현행 시스템의 입/출력 컨트롤러의 성능, 운용의 적절성 등을 파악한다. |
네트워크 | 네트워크의 처리량, 처리 속도, 집중적인 부하 발생 시간, 동시 접속 가능 정도 등을 파악한다. |
📌 데이터베이스 관리 요소는 데이터베이스 운영과 관려된 관리 요소로, 데이터베이스 시스템의 환경에 따라 달라질 수 있으므로 미리 파악해야 한다.
💡예) 데이터베이스 시스템 조사 분석서 예시
구분 | 환경 변수 | 중앙(Center) | 지역(Local) |
운영체제 환경 | IP Address | 192.254.250.20 | 192.254.250.20 |
CPU | 4G | 4G | |
DISK SPACE | 100G | 100G | |
데이터베이스 | SGA | 40M | 40M |
MAX DATA FILES | 50 | 50 | |
DB BLOCK SIZE | 16K | 16K | |
DB FILES | 40 | 40 | |
LOG BUFFER | 45215 | 45215 | |
PROCESS | 40 | 40 | |
. . . |
. . . |
. . . |
데이터베이스 구조 | 데이터베이스의 구조에 따라 문제 발생 시 대응 방법이 다르므로 서버와 데이터베이스의 구조 등을 파악한다. |
이중화 구성 | 문제 발생에 대비하여 동일한 데이터베이스를 복제하여 관리하는 이중화 구성을 파악 한다. |
분산 데이터베이스 | 분산 데이터베이스는 물리적 재해 및 파손 등 데이터 유실을 최소화할 수 있고, 장애로 인한 데이터 유식 복구에 효과적이므로 데이터베이스의 분산 구조를 파악한다. |
접근 제어/접근 통제 | 데이터베이스는 접근 가능한 사용자의 권한 남용으로 인한 유출 및 변조가 가장 빈번하게 발생하므로 데이터베이스의 접근 제어 방법 등을 파악한다. |
DB 암호화 | DB암호화는 데이터 암호화, 암호 키에 대한 인증 등을 통해 데이터 유출 시 데이터의 복호화를 어렵게 하므로 DB 함호화의 특성을 파악한다. |
📌 테이블은 데이터베이스의 가장 기본적인 객체로 로우(Row, 행)와 컬럼(Column, 열)으로 구성되어 있다.
📌 일반 테이블은 현재 사용되는 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태이다.
🔔 예) <사원> 테이블
사원번호 | 이름 | 입사일자 | 부서 | 직급 | 연봉 |
45S051 | 김채원 | 2018-05-09 | 영업부 | 사원 | 25,000,000 |
37S042 | 카즈하 | 2019-01-30 | 기획부 | 과장 | 37,000,000 |
43S039 | 허윤진 | 2018-09-25 | 기획부 | 사원 | 28,000,000 |
36S201 | 김가람 | 2019-06-23 | 총무부 | 대리 | 35,000,000 |
💡 데이터가 일정한 기준 없이 입력되는 순서에 따라 테이블에 저장된다.
📌 클러스터드 인덱스 테이블은 기본키(Primary Key)나 인덱스 키의 순서에 따라 데이터가 저장되는 테이블이다.
🔔 예) <사원> 테이블
사원번호 | 이름 | 입사일자 | 부서 | 직급 | 연봉 |
32S122 | 사쿠라 | 2018-05-05 | 영업부 | 과장 | 41,000,000 |
32S219 | 안유진 | 2018-12-11 | 총무부 | 부장 | 55,000,000 |
36S201 | 김가람 | 2019-06-23 | 총무부 | 대리 | 35,000,000 |
37S042 | 카즈하 | 2019-01-30 | 기획부 | 과장 | 37,000,000 |
43S039 | 허윤진 | 2018-09-25 | 기획부 | 사원 | 28,000,000 |
45S051 | 김채원 | 2018-05-09 | 영업부 | 사원 | 25,000,000 |
💡 데이터가 기본키인 '사원번호' 필드를 기준으로 오름차순 정렬되어 테이블에 저장된다.
📌 파티셔닝 테이블은 대용량의 테이블을 작은 논리적 단위인 파티션(Partition)으로 나눈 테이블이다.
🔔 예) <파트1> 테이블
사원번호 | 이름 | 입사일자 | 부서 | 직급 | 연봉 |
32S122 | 사쿠라 | 2018-05-05 | 영업부 | 과장 | 41,000,000 |
45S051 | 김채원 | 2018-05-09 | 영업부 | 사원 | 25,000,000 |
43S039 | 허윤진 | 2018-09-25 | 기획부 | 사원 | 28,000,000 |
<파트2> 테이블
사원번호 | 이름 | 입사일자 | 부서 | 직급 | 연봉 |
37S042 | 카즈하 | 2019-01-30 | 기획부 | 과장 | 37,000,000 |
36S201 | 김가람 | 2019-06-23 | 총무부 | 대리 | 35,000,000 |
💡 범위 분할(Range Partitioning) : 지정한 열의 값을 기준으로 분할함.
💡 해시 분할(Hash Partitioning) : 해시 함수를 적용한 결과 값에 따라 데이터를 분할함.
💡 조합 분할(Composite Partitioning) : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
📌 외부 테이블은 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일로, 데이터베이스 내에 객체로 존재한다.
📌 임시 테이블은 트랜잭션이나 세션 데이터를 저장하고 처리할 수 있는 테이블이다.
💡 데이터웨어하우스(Data Ware-house) : 데이터웨어하우스란 조직이나 기업체의 중심이 되는 주요 업무 시스템에서 추출되어 새로이 생성된 데이터베이스로서, 의사결정지원 시스템을 지원하는 주체적, 통합적, 시간적 데이터의 집합체를 말한다.
💡 ETL은 데이터웨어하우스를 사용하여 추출, 변환, 적재하는 일련의 모든 과정을 의미한다.
💡 세션(session) 이란 ? 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다. 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.
📌 컬럼은 테이블의 열을 구성하는 요소로 데이터 타입(Data Type), 길이(Length)등 으로 정의 된다.
📌 테이블스페이스는 테이블이 저장되는 논리적인 영역으로, 하나의 테이블스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있다.
💡 투명성 : 투명성이란 어떠한 사실이 존재함에도 마치 투명하여 보이지 않는 것처럼, 사실의 존재 여부를 염두에 두지 않아도 되는 성질을 말한다.
💡 LOB(Large Object)는 대용량의 데이터를 저장할 수 있는 데이터 타입이다.
🔔 예) Oracle의 물리/논리 저장 구조 계층
💡 Oracle 프로그램은 데이터베이스를 Block, Extent, Segment, Tablespace, Data File로 나눠 관리한다.
Block, Extent, Segment, Tablespace는 논리적인 영역이고, Data File은 물리적인 영역이다.
Segment는 테이블, Extent는 데이터 블록의 모임, Block은 입/출력 단위에 해당한다.
💡 Data Block : Logical Block, ORACLE Block 또는 page라는 용어로 불리워지는데, OS Disk상의 일정한 Byte단위의 Space를 말한다.
💡 Extent : 일정한 수의 연속된 ORACLE block 들을 말한다. 일정한 수라는 의미는 사용자가 지정한 값을 말한다.
💡 Segment : 데이터베이스 내에 생성되는 모든 객체(테이블, 인덱스, 뷰, 시퀀스 등)들을 세그먼트(Segment)라고 한다.
📌 [정보처리기사] 물리 데이터베이스 설계 - 뷰(View) 설계/클러스터 설계/파티션 설계/용량 설계 (2) | 2024.02.15 |
---|---|
📌 [정보처리기사] 물리 데이터베이스 설계 - 트랜잭션 분석 / CRUD 분석 / 인덱스 설계 (0) | 2024.02.14 |
📌 [정보처리기사] 논리 데이터베이스 설계 - 정규화(Normalization)/반정규화(Denormalization)/시스템 카탈로그 (2) | 2024.02.14 |
📌 [정보처리기사] 논리 데이터베이스 설계 - 관계대수 및 관계해석 (0) | 2024.02.14 |
📌 [정보처리기사] 논리 데이터베이스 설계 - 관계형 데이터베이스의 제약 조건: 키(Key)/무결성 (0) | 2024.02.13 |