목차
📌 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다.
💡 정의 테이블 : 뷰는 하나 이상의 다른 테이블로부터 유도된 하나의 가상 테이블이며, 뷰를 만들기 위해 유도된 기본 테이블을 정의 테이블이라 한다.
장점 | 단점 |
- 논리적 데이터 독립성을 제공한다. - 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해 준다. - 사용자의 데이터 관리를 간단하게 해준다. - 접근 제어를 통한 자동 보안이 제공된다. |
- 독립적인 인덱스를 가질 수 없다. - 뷰의 정의를 변경할 수 없다. - 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따른다. |
뷰명 | 뷰 설명 | 관련 테이블 | 관련 컬럼명 | 데이터 타입 |
V_SELLITEM | 판매와 판매목록 처리 | SELL | SELLNO SELLNAME SELLDATE |
VARCHAR(5) VARCHAR(40) DATE |
SELLITEM | ITEMNO PRICE |
VARCHAR(5) NUMBER(10) |
💡 서브쿼리가 FROM 절 안에서 사용되는 경우, 해당 서브쿼리를 '인라인 뷰'라고 한다. FROM절에서 사용된 서브쿼리의 결과가 하나의 테이블에 대한 뷰(View)처럼 사용된다.
💡 서브쿼리란 ? SELECT 문 안에 다시 SELECT 문이 기술된 형태의 쿼리(QUERY)이다.
📌 클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.
🔔 예) 클러스터링 되지 않은 테이블
부서번호 | 부서 |
b001 | 기획부 |
b002 | 총무부 |
b003 | 영업부 |
<부서> 테이블
사원번호 | 이름 | 부서번호 |
1 | 사쿠라 | b001 |
2 | 김채원 | b001 |
3 | 허윤진 | b002 |
4 | 카즈하 | b003 |
5 | 김가람 | b002 |
🔔 예) 클러스터링된 테이블
부서번호 | 부서 | ||||
b001 | 기획부 | ||||
사원번호 | 이름 | ||||
1 | 사쿠라 | ||||
2 | 김채원 | ||||
b002 | 총무부 | ||||
3 | 허윤진 | ||||
5 | 김가람 | ||||
b003 | 영업부 | ||||
4 | 카즈하 |
💡 <부서> 테이블과 <사원> 테이블이 '부서번호' 필드를 기준으로 클러스터링 되었다. 이런 경우 '부서번호'를 클러스터링 키라고 한다.
💡 클러스터링은 비슷한 종류끼리 묶어준다는 의미로 테이블에서는 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 방법이고, 서버에서는 두 대 이상의 서버를 하나의 서버처럼 운영하기 위한 방법을 의미한다.
💡 클러스터링 키 ? 클러스터링된 테이블에서 각각의 행을 접근할 때 기준이 되는 열로 데이터를 조회하면 클러스터링 키로 지정된 필드에서 시작하여 클러스터링된 테이블의 데이터를 조회한다.
💡 분포도는 인덱스에서는 분포도가 좁은 테이블이 좋지만 클러스터링은 분포도가 넓은 테이블에 유리하다.
💡 단일 테이블 클러스터링이란 ? 여러개의 테이블 뿐만 아니라 한 개의 테이블에 대해서도 클러스터링을 수행할 수 있다. 특정 컬럼의 동일한 값을 동일 블록이나 연속된 블록에 저장하므로 데이터 조회 성능이 향상된다.
💡 파티셔닝 : 데이터베이스에서의 파티셔닝은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것이다.
💡 ORDER BY 정렬, GROUP BY는 그룹 지정, UNION은 테이블 통합 지정 시 사용하는 SQL 명령어이다.
📌 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.
💡 파티션은 용량이 큰 테이블을 관리하기 쉽도록 작은 단위로 나눈 것을 말한다.
💡 파티션 키 : 파티션을 나누는 기준이 되는 열로 파티션 키로 지정된 열의 데이터 값에 따라 파티션이 나뉘어진다.
💡 테이블 단위로 처리 : 하나의 테이블이 여러 개의 파티션으로 나눠져 있어도 DB에 접근하는 애플리케이션은 테이블 단위로 데이터를 처리하기 때문에 파티션을 인식하지 못한다.
장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상된다. - 파티션 별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다. - 파티션 별로 백업 및 복구를 수행하므로 속도가 빠르다. - 시스템 장애 시 데이터 손상 정도를 최소화할 수 있다. - 데이터 가용성이 향상된다. - 파티션 단위로 입/출력을 분산시킬 수 있다. |
단점 | - 하나의 테이블을 세분화 하여 관리하므로 세심한 관리가 요구된다. - 테이블간 조인에 대한 비용이 증가한다. - 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하된다. |
📌 파티션의 종류는 파티셔닝 방식에 따라 범위 분할, 해시 분할, 조합 분할, 목록 분할, 라운드 로빈 분할 등으로 나뉜다.
범위 분할 (Range Partitioning) |
지정한 열의 값을 기준으로 범위를 지정하여 분할한다. 예) 일별, 월별, 분기별 등 |
해시 분할 (Hash Partitioning) |
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할한다. - 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용하다. - 특정 데이터가 어디에 있는지 판단할 수 없다. - 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적이다. |
조합 분할 (Composite Partitioning) |
- 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식이다. - 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용하다. |
목록 분할 (List Partitioning) |
지정한 열 값에 대한 목록을 만들어 이를 기준으로 분할한다. 예) '국가'라는 열에 '한국', '미국', '일본'이 있는 경우 '미국'을 제외할 목적으로 '아시아'라는 목록을 만들어 분할함 |
라운드 로빈 분할 (Round Robin Partitioning) |
- 레코드를 균일하게 분배하는 방식이다. - 각 레코드가 순차적으로 분배되며, 기본키가 필요 없다. |
📌 인덱스 파티션은 파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것이다.
파티션 인덱스 유형 | 인덱스 파티션키 | 인덱스키 컬럼 |
Prefixed Partitioned Index | 판매일자 | 판매일자(+품목코드) |
Non-Prefixed Partitioned Index | 판매일자 | 품목코드(+거래일자) |
📌 데이터베이스 용량 설계는 데이터가 저장될 공간을 정의하는 것이다.
💡 데이터베이스의 용량 설계는 데이터베이스 설계만큼이나 중요하다. 용량이 필요할 때마다 용량을 증설한다면 데이터베이스의 전체적인 성능이 저하되고 비용이 계속 증가할 수 있다.
💡 익스텐트(범위, Extent) : 익스텐트는 기본적인 용량이 모두 찼을 경우 추가적으로 할당되는 공간을 의미한다.
NO | 엔티티 | 테이블 | Row 길이 | 보존 기간 | 초기건수 | 주기별 발생건수 | 발생 주기 | 년증가율(건) |
001 | 주문 | ODDER | 1,000 | 2 | 19,250 | 80 | 일 | 500 |
002 | 상품 | ITEM | 430 | 2 | 34,502 | 200 | 일 | 300 |
003 | 판매자 | SELLER | 310 | 2 | 12,520 | 15 | 일 | 150 |
💡 약 40%라는 값은 절대적인 값이 아니다. 업무에 따라 확장 가능성이 높은 것은 40% 정도 확장, 가능성이 낮은 것은 20% 정도로 지정하면 된다.
🔔 예) 디스크 용량 계산
NO | 이름 | 용량(G) | 사용용량(M) | 사용비율 | 파일명 | 파일용량 |
1 | 디스크1 | 3 | 2,700 | 90% | AB001_ABC01 | 1,700M |
AB002_ABC01 | 1,000M | |||||
2 | 디스크2 | 5 | 2,500 | 50% | AB001_ABC02 | 1,500M |
AB002_ABC02 | 1,000M |
📌 [정보처리기사] 데이터베이스 이중화/서버 클러스터링 (0) | 2024.02.15 |
---|---|
📌 [정보처리기사] 물리 데이터베이스 설계 - 분산 데이터베이스 설계 (0) | 2024.02.15 |
📌 [정보처리기사] 물리 데이터베이스 설계 - 트랜잭션 분석 / CRUD 분석 / 인덱스 설계 (0) | 2024.02.14 |
📌 [정보처리기사] 물리 데이터베이스 설계 - 사전 조사 분석/데이터베이스 저장 공간 설계 (2) | 2024.02.14 |
📌 [정보처리기사] 논리 데이터베이스 설계 - 정규화(Normalization)/반정규화(Denormalization)/시스템 카탈로그 (2) | 2024.02.14 |