4. 데이터 베이스 물리속성 설계 - 2과목 데이터 베이스 구축
지난 시간에는 물리 데이터 베이스 설계와 정규화 등을 살펴았습니다. 이러한 정규화를 진행했는데도 성능이 안나오는 경우가 있습니다.
성능이 안나오면 반정규화를 진행해야하는데, 반정규화를 하기 전에 다양한 것들을 시도해 볼 수 있습니다. 이번 시간에는 이러한 다른 것들에 대해 배워보고자 합니다.
주요 개념은 파티셔닝, 클러스터, 인덱스, 뷰 입니다. 각각 데이터베이스의 데이터에 접근을 빠르게 하기 위해 즉, 성능을 향상시키기 위해 사용됩니다.
목차
데이터 베이스 물리속성 설계
데이터베이스의 물리적 설계는 데이터베이스 시스템의 논리적인 구조를 물리적인 저장 구조로 변환하는 과정입니다.
파티셔닝이란?
티셔닝(Partitioning)은 대용량의 데이터를 여러 개의 논리적인 파티션으로 나누는 데이터 관리 기술입니다.
각 파티션은 독립적으로 관리되며, 이를 통해 데이터의 관리와 처리를 효율적으로 할 수 있습니다.
데이터 베이스의 특정 부분을 여러 섹션으로 분할하는 방법
분할해야 원하는 데이터를 빨리 찾을 수 있음
- 성능 향상: 파티션을 통해 데이터를 논리적으로 분할하면 검색 및 조작 작업의 성능을 향상시킬 수 있습니다. 특정 파티션에만 접근하여 작업을 수행하므로 처리 시간이 단축됩니다.
- 유지 보수 용이성: 파티션은 개별적으로 관리되므로 특정 파티션의 데이터를 백업하거나 복원하는 작업이 훨씬 간편해집니다. 또한 파티션을 추가하거나 제거하여 데이터 관리를 유연하게 조정할 수 있습니다.
- 스토리지 관리 용이성: 파티션은 물리적으로 서로 다른 스토리지 장치에 할당될 수 있습니다. 따라서 데이터를 분산하여 스토리지 리소스를 효율적으로 활용할 수 있습니다.
- 쿼리 최적화: 파티셔닝을 사용하면 쿼리 실행 시 특정 파티션만 스캔하므로 데이터베이스 시스템이 쿼리 실행 계획을 최적화할 수 있습니다.
샤딩이란?
샤딩(Sharding)은 대규모 데이터베이스를 분할하여 데이터를 여러 개의 물리적인 데이터베이스 인스턴스에 분산 저장하는 기술입니다.
이를 통해 데이터베이스의 부하를 분산시키고 처리량을 확장하여 성능을 향상시킬 수 있습니다.
파티셔닝은 하나의 컴퓨터, 하나의 DB
샤딩은 여러개의 분산 데이터
파티셔닝의 장점, 단점
장점 | 단점 |
성능 향상 | 추가 관리 및 유지보수 비용 증가 |
데이터 관리의 유연성 | 파티션 키에 따라 쿼리가 복잡해질 수 있음 |
유지보수 용이성 | 특정 파티션에 대한 백업 및 복원이 복잡할 수 있음 |
스토리지 관리 용이성 | 데이터 분포가 불균형하면 부하가 골고루 분산되지 않을 수 있음 |
쿼리 성능 최적화 | 파티션 키 변경 또는 새 파티션 추가 시 변경 관리의 복잡성이 증가할 수 있음 |
파티셔닝의 종류
종류 | 설명 |
수평분할 (Horizontal Partitioning) | 데이터를 행 기준으로 여러 파티션에 분산하여 저장하는 방식 전체 데이터를 행을 기준으로 구분하므로 속성은 동일함 |
수직분할 (Vertical Partitioning) | 데이터를 열 기준으로 여러 파티션에 분산하여 저장하는 방식 열을 기준으로 분할하므로 속성이 다름 = 릴레이션이 다름 자주 사용하는 속성을 기준으로 분할 |
범위 분할 (Range Partitioning) | 데이터를 지정된 범위에 따라 분할하는 방식 |
목록 분할 (List Partitioning) | 데이터를 특정 값의 목록에 따라 분할하는 방식 목록들을 정하고 분할 |
해시 분할 (Hash Partitioning) | 데이터를 해시 함수에 따라 분할하는 방식 파티션 키 값에 해시함수 적용, 거기서 반환된 값으로 파티션 매핑 일방향 - 고정 크기 |
라운드 로빈 분할 (Round Robin Partitioning) | 데이터를 순서대로 각 파티션에 순차적으로 분배하는 방식 데이터를 균등하게 분할 |
합성 분할 (Composite Partitioning) | 여러 파티션 분할 방법을 조합하여 사용하는 방식 ex) 범위 분할 후 분할된 데이터를 해시 분할 |
파티션 (Partitioning) 생성 예시
Partitioning BY RANGE (테이블명(컬럼명))가 중요합니다.
목록은 Partitioning BY LIST (테이블명(컬럼명)) 가 들어갑니다.
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT,
amount DECIMAL(10,2),
sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2010),
PARTITION p1 VALUES LESS THAN (2011),
PARTITION p2 VALUES LESS THAN (2012),
PARTITION p3 VALUES LESS THAN (2013),
PARTITION p4 VALUES LESS THAN (2014),
PARTITION p5 VALUES LESS THAN (2015)
);
클러스터 (Cluster) 란?
클러스터(Cluster)는 여러 개의 독립적인 컴퓨터나 서버를 하나의 시스템처럼 묶어서 사용하는 기술이나 구성을 가리킵니다.
클러스터링은 이러한 컴퓨터나 서버들이 상호 연결되어 작동하며, 하나의 단일 시스템처럼 동작할 수 있도록 만드는 방법을 제공합니다.
클러스터는 보통 공통된 네트워크와 데이터 스토리지를 사용하여 상호 연결됩니다. 여러 가지 소프트웨어 기술이나 프로토콜을 사용하여 클러스터를 구성하고 관리할 수 있으며, 이를 통해 안정성, 성능, 가용성을 향상시킬 수 있습니다.
모범 답안 : 자주 사용되는 테이블의 데이터를 디스크 상 동일한 위치에 저장하여 데이터 액세스 효율을 향상시키는 물리적 저장 방법
클러스터 특징
주요하지 않기 때문에 볼드체만 읽으셔도 됩니다.
- 디스크 입,출력 감소 : 그룹된 데이터들이 같은 데이터 Block에 저장되기 때문에 줄어듬
- Join 처리 시간 단축
- 조회 성능은 향상, 하지만 저장, 수정, 삽입 Full Scan에서는 성능 저하
- 데이터의 분포도가 넓을 수록 유리
- 파티셔닝된 테이블에는 클러스터링 불가
- 클러스터링된 테이블에 클러스터드 인덱스를 생성하면 접근 성능 향상
클러스터 대상 테이블
주요하지 않기 때문에 볼드체만 읽으셔도 됩니다.
- 주로 함께 사용되는 테이블: 특정 쿼리나 비즈니스 프로세스에서 자주 함께 사용되는 테이블들은 함께 클러스터링될 수 있습니다.
- 이는 데이터를 물리적으로 인접하게 저장함으로써 쿼리 성능을 향상시킬 수 있습니다.
- 외래 키 관계를 가진 테이블: 외래 키 관계가 있는 테이블들은 함께 클러스터링될 수 있습니다.
- 이는 관련된 테이블 간의 조인 연산을 최적화하여 성능을 향상시킬 수 있습니다.
- 범주화된 데이터: 데이터의 카테고리나 범주에 따라 분류된 테이블들은 함께 클러스터링될 수 있습니다.
- 이는 데이터의 유사성을 고려하여 함께 저장되어 성능을 최적화할 수 있습니다.
- 대량 데이터 테이블: 대량의 데이터를 처리하는 테이블들은 함께 클러스터링될 수 있습니다.
- 이는 데이터를 물리적으로 분산하여 입출력 작업을 병렬로 처리하여 성능을 향상시킬 수 있습니다.
- 자주 업데이트되는 테이블: 자주 업데이트되는 테이블들은 함께 클러스터링될 수 있습니다.
- 이는 자주 업데이트되는 데이터를 함께 저장하여 업데이트 작업을 최적화할 수 있습니다.
인덱스(Index)란?
물리적인 테이블을 검색 속도 향상을 위해 생성하는 저장공간 활용 자료구조
별도로 저장해서 사용합니다.
인덱스(Index)는 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다.
인덱스는 특정 열(또는 열의 조합)에 대해 정렬된 데이터의 복제본으로, 검색 연산을 빠르게 수행할 수 있도록 돕습니다.
주로 SELECT 쿼리에서 WHERE 절이나 JOIN 절과 같은 검색 조건에 사용됩니다.
인덱스 종류
인덱스 종류 | 설명 |
클러스터 인덱스 (Clustered Index) |
테이블의 데이터 행을 정렬하는 데 사용되는 인덱스 테이블 당 1개만 허용, 해당 컬럼을 기준으로 테이블이 물리적으로 정렬 vlookup과 유사 기본적으로 오름 차순 넌클러스터 인덱스보다 빠름 |
넌클러스터 인덱스 (Non-Clustered Index) |
테이블의 데이터 행을 정렬하지 않고 별도의 인덱스 구조를 생성하는 인덱스 테이블당 약 240개 생성 가능 용량이 늘어남 |
밀집 인덱스 (Dense Index) |
인덱스 키 값이 모든 레코드를 가리키는 인덱스 데이터 레코드 각각에 대해 하나의 인덱스 |
희소 인덱스 (Sparse Index) |
인덱스 키 값이 일부 레코드를 가리키는 인덱스 레코드 그룹 또는 데이터 블록에 대해 하나의 인덱스 |
- 클러스터 인덱스(Clustered Index)
- 테이블의 데이터 행을 정렬하는 데 사용되는 인덱스입니다.
- 클러스터 인덱스는 테이블의 물리적인 순서와 일치하며, 테이블당 하나의 클러스터 인덱스만 생성할 수 있습니다.
- 데이터를 검색할 때 클러스터 인덱스를 사용하면 빠른 검색 속도를 제공할 수 있습니다.
- 넌클러스터 인덱스(Non-Clustered Index)
- 테이블의 데이터 행을 정렬하지 않고 별도의 인덱스 구조를 생성하는 인덱스입니다.
- 넌클러스터 인덱스는 테이블의 물리적인 순서와 일치하지 않으며, 여러 개의 넌클러스터 인덱스를 생성할 수 있습니다.
- 데이터를 검색할 때 넌클러스터 인덱스를 사용하면 빠른 검색 속도를 제공할 수 있습니다.
- 밀집 인덱스(Dense Index)
- 인덱스 키 값이 모든 레코드를 가리키는 인덱스입니다.
- 모든 테이블 레코드에 대한 인덱스 엔트리가 있으므로, 인덱스 키 값과 실제 데이터 레코드가 일대일 대응됩니다.
- 대부분의 인덱스는 밀집 인덱스 형태를 가지고 있습니다.
- 희소 인덱스(Sparse Index)
- 인덱스 키 값이 일부 레코드를 가리키는 인덱스입니다.
- 모든 테이블 레코드에 대한 인덱스 엔트리가 없으므로, 인덱스 키 값과 실제 데이터 레코드가 일대일 대응되지 않습니다.
- 특정 값이나 범위에 대한 인덱스를 생성할 때 희소 인덱스가 사용될 수 있습니다.
인덱스 구조
이런게 있구나하고 지나가지면 됩니다.
인덱스 구조 | 설명 |
트리기반 인덱스 | 대표적으로 B-tree나 B+tree와 같은 트리 구조를 사용하여 데이터를 저장하는 인덱스 구조입니다. 효율적인 검색과 범위 검색을 위해 사용됩니다. |
비트맵 인덱스 | 데이터의 특정 속성을 비트 배열로 저장하는 인덱스 구조입니다. 각 비트는 특정 값이나 범위의 존재를 나타내며, 질의를 수행할 때 비트 연산을 사용하여 검색합니다. 데이터의 카디널리티가 낮고 질의가 자주 발생하는 경우에 유용합니다. |
함수 기반 인덱스 | 특정 함수를 적용한 결과를 인덱스로 사용하는 구조입니다. 데이터베이스에서 사용자 정의 함수나 내장 함수를 활용하여 인덱스를 생성할 수 있습니다. 함수 결과에 따라 인덱스 키 값을 정의할 수 있습니다. |
비트맵 조인 인덱스 | 여러 테이블 간의 조인 연산에 사용되는 인덱스 구조입니다. 여러 비트맵 인덱스를 조합하여 조인 연산을 수행하므로 여러 테이블 간의 조인 연산을 효율적으로 수행할 수 있습니다. |
도메인 인덱스 | 사용자 정의 인덱스 특정 도메인 값을 인덱스로 사용하는 구조입니다. 보통 데이터베이스에서 사용되는 열의 도메인 값에 대해 생성됩니다. 도메인 값에 대한 검색 및 정렬을 위해 사용됩니다. |
인덱스 컬럼의 선정
- 분포도가 좋은 컬럼 : 분포도 10%~15%
- 검색 빈도가 높은 컬럼: 자주 검색되는 컬럼은 인덱스의 후보가 될 수 있습니다.
- 자주 조합되어 사용되는 : 아이디와 연령을 자주보면 두개로 구성
- 조인에 사용되는 컬럼: 자주 조인 연산에 사용되는 컬럼은 인덱스의 후보가 될 수 있습니다.
- 정렬 및 그룹화에 사용되는 컬럼: ORDER BY나 GROUP BY 절에 사용되는 컬럼은 인덱스의 후보가 될 수 있습니다.
- 범위 검색에 사용되는 컬럼: WHERE 절에서 범위 검색에 사용되는 컬럼은 인덱스의 후보가 될 수 있습니다.
- 적절한 카디널리티를 가진 컬럼: 카디널리티가 높은 컬럼일수록 인덱스의 효율이 높아질 수 있습니다.
인덱스 생성 시 고려 사항
- 인덱스의 유용성: 인덱스를 생성하는 것이 실제로 성능 향상에 도움이 되는지 고려해야 합니다.
- 인덱스의 크기와 오버헤드: 인덱스는 데이터베이스의 용량을 증가시키고 삽입, 수정, 삭제 작업에 영향을 미칠 수 있으므로 이러한 부작용을 고려해야 합니다.
- 인덱스의 종류와 구조: 데이터베이스 종류에 따라 사용 가능한 인덱스 종류가 다를 수 있으며, 각 인덱스의 특징과 장단점을 고려하여 적절한 인덱스를 선택해야 합니다.
- 넓은 범위에 효율적이지 않아 클러스터를 사용해야함.
- Hint : 오라클에서 더 효율적인 인덱스를 추천
인덱스 생성/삭제/재구성 예시
생성
CREATE INDEX와 ON을 기억하세요, 향후 SQL에서 만나게될 명령어입니다.
CREATE INDEX index_name ON table_name (column1, column2, ...);
삭제
DROP INDEX index_name ON table_name; 을 기억하세요, 향후 SQL에서 만나게될 명령어입니다.
DROP INDEX index_name ON table_name;
재구성
ATER INDEX 컬러명 REBUILD을 기억하세요, 향후 SQL에서 만나게될 명령어입니다.
ALTER INDEX idx_customer_name REBUILD;
뷰(View) 란?
뷰(View)는 데이터베이스에서 가상의 테이블로 정의되며, 하나 이상의 테이블이나 다른 뷰의 결과를 기반으로 생성됩니다.
뷰는 데이터를 저장하지 않고 쿼리의 결과를 반환하기 때문에 가상의 테이블이라고도 합니다.
뷰는 데이터베이스 시스템에서 쿼리의 결과를 논리적으로 보여주는 가상 테이블로 정의됩니다.
실제 데이터를 보관하지 않고 하나 이상의 기본 테이블의 데이터를 포함하는 쿼리로부터 동적으로 생성됩니다.
데이터 독립성중 외부 스키마와 개념 스키마 사이에 있으면서 개념 스키마가 바뀌어도 외부 스키마가 바뀌지 않는 논리적 독립성을 보장합니다.
뷰의특징
- 가상성(Virtuality): 뷰는 실제 데이터를 저장하지 않고 쿼리의 결과를 가상으로 반환합니다.
- 데이터 독립성(Data Independence): 뷰는 데이터의 논리적 구조를 정의하므로 기본 테이블의 변경이 뷰에 영향을 미치지 않습니다.
- 접근 제어(Access Control): 뷰를 사용하여 사용자에게 필요한 데이터만 보여줄 수 있습니다. 즉, 뷰를 통해 특정 열이나 행에 대한 접근을 제어할 수 있습니다.
- 물리적 구현이 없는 테이블
- 논리적 데이터 독립성
- 기본 테이블의 유도로, 기본 테이블과 유사한 형태의 조작을 갖음
- 관리 용이 및 명령문 간소화
- 데이터 조작이 제한적 (ARTER 못씀)
뷰의 장점, 단점
뷰의 장점
- 데이터 보안 강화: 사용자에게 필요한 데이터만 뷰를 통해 제공함으로써 데이터 보안을 강화할 수 있습니다.
- 데이터 무결성 유지: 뷰를 사용하여 데이터를 필터링하거나 정렬함으로써 데이터 무결성을 유지할 수 있습니다.
- 복잡한 쿼리 단순화: 복잡한 쿼리를 뷰로 만들어 저장해두면 간단한 쿼리로 결과를 얻을 수 있습니다.
뷰의 단점
- 성능 저하: 뷰는 쿼리 실행 시에 매번 정의된 쿼리를 실행하기 때문에 성능에 영향을 줄 수 있습니다.
- 갱신 제약: 뷰는 기본 테이블에 대한 제약사항을 가지고 있기 때문에 기본 테이블의 데이터를 갱신하는데 제약이 있을 수 있습니다.
뷰 생성/삭제
생성
CREATE VIEW 뷰명 AS
-- 기본 테이블로부터 뷰 생성
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
-- 뷰 생성 시 테이블 조인 예시
CREATE VIEW employee_department AS
SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
삭제
-- 뷰 삭제
DROP VIEW view_name;
재구성
뷰는 삭제 후 재생성해야합니다. ARTER이 불가합니다.
-- 뷰 삭제 후 재생성
DROP VIEW employee_department;
CREATE VIEW employee_department AS
SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE e.salary > 50000;
시스템 카탈로그란?
시스템 카탈로그(System Catalog)는 데이터베이스 관리 시스템(DBMS) 내부에 있는 데이터베이스 구조와 메타데이터(metadata)에 대한 정보를 포함하는 시스템 데이터베이스입니다.
이러한 정보는 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 정의, 구조, 속성 및 관계에 대한 설명을 제공합니다.
데이터 사전(DD, Data Dictionary)라고도 함
시스템 카탈로그의 내용
내용 | 설명 |
릴레이션 관련 정보 | 데이터베이스에 있는 각 테이블에 대한 정보를 포함합니다. 테이블 이름, 생성자, 속성 개수, 스키마, 행 수, 용량 등을 포함합니다. |
인덱스 관련 정보 | 데이터베이스 내에 생성된 인덱스에 대한 정보를 제공합니다. 인덱스 이름, 생성자, 소속 테이블, 생성된 열, 유형, 키 값 분포 등을 포함합니다. |
뷰 관련 정보 | 데이터베이스 내에 정의된 뷰에 대한 정보를 제공합니다. 뷰 이름, 정의된 쿼리, 생성자, 사용 권한 등을 포함합니다. |
통계 관련 정보 | 데이터베이스 내의 데이터 분포 및 특성에 대한 정보를 제공합니다. 테이블의 행 수, 열의 특정 값 빈도, 인덱스 효율성 등을 포함합니다. |
사용자 관련 정보 | 데이터베이스에 등록된 사용자에 대한 정보를 제공합니다. 사용자 이름, 권한 및 역할, 접근 가능한 객체 등을 포함합니다. |
1. 릴레이션 관련 정보
릴레이션은 데이터베이스에서 테이블을 의미합니다. 따라서 릴레이션 관련 정보는 데이터베이스에 있는 각 테이블에 대한 정보를 포함합니다. 일반적으로 다음과 같은 내용을 포함합니다:
- 테이블 이름
- 테이블을 생성한 사용자
- 테이블의 속성(열) 개수
- 테이블이 속한 스키마 이름
- 테이블의 행(row) 수
- 테이블의 용량
2. 인덱스 관련 정보
인덱스는 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. 인덱스 관련 정보는 데이터베이스 내에 생성된 인덱스에 대한 정보를 제공합니다. 주요 내용으로는 다음과 같습니다:
- 인덱스 이름
- 인덱스를 생성한 사용자
- 인덱스가 속한 테이블 이름
- 인덱스가 생성된 열(컬럼)
- 인덱스 유형 (일반적으로 B-트리, 해시 등)
- 인덱스 키 값의 분포도 등
3. 뷰 관련 정보
뷰는 하나 이상의 테이블을 기반으로 만들어진 가상 테이블입니다. 뷰 관련 정보는 데이터베이스 내에 정의된 각 뷰에 대한 정보를 포함합니다. 주요 내용은 다음과 같습니다:
- 뷰 이름
- 뷰가 정의된 쿼리
- 뷰를 생성한 사용자
- 뷰를 사용할 수 있는 사용자 권한 등
4. 통계 관련 정보
통계 정보는 데이터베이스 내의 데이터 분포 및 특성에 대한 정보를 제공합니다. 주로 쿼리 실행 최적화나 데이터베이스 성능 향상을 위해 사용됩니다. 주요 내용은 다음과 같습니다:
- 테이블의 행(row) 수
- 열(컬럼)의 특정 값 빈도
- 인덱스의 효율성과 사용 빈도 등
5. 사용자 관련 정보
사용자 관련 정보는 데이터베이스에 등록된 사용자에 대한 정보를 제공합니다. 주요 내용은 다음과 같습니다:
- 사용자 이름
- 사용자의 권한과 역할
- 사용자가 접근할 수 있는 객체 및 리소스
- 사용자가 생성한 객체 등
시스템 카탈로그는 데이터베이스의 구조와 메타데이터에 대한 중요한 정보를 담고 있으며, 데이터베이스의 관리와 모니터링에 필수적입니다.
시스템 카탈로그 특징
- 사용자는 조회는 가능하지만 갱신은 불가
- 메타데이터 보관: 시스템 카탈로그는 데이터베이스의 메타데이터를 보관합니다. 이는 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 정의와 구조에 대한 정보를 포함합니다.
- 읽기 전용: 일반적으로 시스템 카탈로그는 읽기 전용입니다. 즉, 사용자는 시스템 카탈로그의 정보를 조회할 수는 있지만 직접적으로 수정할 수는 없습니다. 이는 데이터베이스의 일관성과 무결성을 유지하기 위한 조치입니다.
- 시스템 관리: 시스템 카탈로그는 데이터베이스 관리 시스템(DBMS)에 의해 관리됩니다. 데이터베이스 관리자는 시스템 카탈로그를 통해 데이터베이스의 구조를 이해하고 모니터링할 수 있습니다.
- 데이터베이스 구조 확인: 시스템 카탈로그를 통해 데이터베이스 내에 어떤 객체가 존재하는지, 그 객체들이 어떻게 구성되어 있는지 확인할 수 있습니다. 이는 데이터베이스의 구조를 이해하고 쿼리를 작성할 때 유용합니다.
- 성능 향상: 데이터베이스 쿼리 실행 시 시스템 카탈로그의 정보를 활용하여 실행 계획을 최적화할 수 있습니다. 이를 통해 쿼리의 성능을 향상시킬 수 있습니다.
- 보안: 시스템 카탈로그는 보안을 유지하는 데 중요한 역할을 합니다. 사용자는 자신이 접근할 수 있는 객체에 대한 정보만을 시스템 카탈로그를 통해 볼 수 있습니다.
시스템 카탈로그 종류
SYSTABLES | 데이터베이스 내에 있는 테이블에 대한 정보를 제공합니다. 테이블 이름, 소유자, 테이블 유형 등을 포함합니다. |
SYSCOLUMNS | 데이터베이스 내에 있는 테이블의 열(컬럼)에 대한 정보를 제공합니다. 열 이름, 데이터 타입, 길이 등을 포함합니다. |
SYSVIEW | 데이터베이스 내에 정의된 뷰에 대한 정보를 제공합니다. 뷰 이름, 정의된 쿼리, 사용 권한 등을 포함합니다. |
SYSYABAUTH | 데이터베이스 객체에 대한 권한 정보를 제공합니다. 사용자별로 테이블, 뷰, 인덱스 등에 대한 권한 정보를 포함합니다. |
SYSCOLAUTH | 열(컬럼)에 대한 권한 정보를 제공합니다. 사용자별로 특정 테이블 열에 대한 권한 정보를 포함합니다. |
요약 : 물리속성 설계 방법 비교 표
기능 | 파티셔닝 | 클러스터 | 인덱스 | 뷰(View) | 시스템 카탈로그 |
정의 | 데이터를 논리적 또는 물리적 기준에 따라 분할 | 데이터를 물리적으로 묶음 | 테이블에서 특정 열을 기준으로 데이터 정렬 | 하나 이상의 테이블을 기반으로 생성된 가상 테이블 | 데이터베이스 구조와 메타데이터를 담고 있음 |
목적 | 데이터의 관리, 성능 향상, 유지보수 용이 | 데이터 액세스 및 성능 향상 | 데이터 검색 속도 향상 | 데이터를 다양한 관점에서 제공 | 데이터베이스 객체 및 메타데이터 조회 및 관리 |
종류 | 수평 분할, 수직 분할 등 다양한 종류 존재 | 클러스터링 키에 따라 클러스터 구성 | 단일 열 인덱스, 복합 인덱스 등 다양한 종류 존재 | 단순 뷰, 복합 뷰 등 다양한 종류 존재 | SYSTABLES, SYSCOLUMNS 등 다양한 종류 존재 |
데이터 이동 및 관리 | 데이터 이동 및 관리에 유용함 | 데이터 접근과 관리에 유용함 | 데이터 접근 및 검색에 유용함 | 데이터 관점에 따라 유연하게 접근 가능 | 데이터베이스 구조 및 메타데이터 관리에 유용함 |
'정보처리기사' 카테고리의 다른 글
6. 키와 무결성 제약조건 - 2과목 데이터 베이스 구축 - 릴레이션, 속성, 키 (0) | 2024.04.01 |
---|---|
5. 관계 데이터 모델 - 2과목 데이터 베이스 구축 (0) | 2024.04.01 |
[정처기실기] 3. 물리 데이터베이스 설계 (0) | 2024.03.31 |
2. 논리데이터베이스 설계 - 2과목 데이터베이스 구축 (1) | 2024.03.31 |
1. 데이터 베이스 구축 - 2과목 데이터베이스 구축 (2) | 2024.03.30 |
댓글