1.1.1 데이터 모델의 이해
- 자연의 현상이나 업무적인 현상 등에 대해 일정한 표기법으로 표현하고 형상화하는 것
- 핵심개념_1 : 엔터티, 속성, 관계
- 핵심개념_2 : 단수/집합 개념
1.1.2 엔티티
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적, 영속적 존재 단위
- 중요특징은 속성이 존재해야 함. 2개 이상의 값이 존재해야 함.
- 엔터티 파악하기 위한 필수요소는 기본/중심/행위 엔터티로 구분하여 도출
1.1.3 속성
- 업무에서 필요로 하는 엔터티에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위이며, 이 특성을 속성의 원자성이라 함.
- 기본속성, 설계속성, 파생속성으로 구분됨
1.1.4 관계
- 하나 또는 두 개의 엔터티로부터 인스턴스를 연관시키기 위한 업무적인 이유를 의미
- 엔터티와 엔터티가 존재의 형태로서나 행위로서 서로에게 영향을 주는 형태로 표현됨
1.1.5 식별자
- 주식별자 : 엔터티 여러 개 인스턴스의 유일성을 확보할 수 있도록 하는 식별자
- 외부식별자 : 관계를 통해 부모엔터티의 식별자을 받아 자식 쪽에 생성제1절 성능 데이터 모델링의 개요
- 성능데이터 모델링 : 설계단계의 데이터 모델링 때부터, 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조 등의 여러가지 성능과 관련된 사항을 데이터 모델링에 반영하는 것
1.2.1 성능 데이터 모델의 개요
- 성능데이터 모델링 : 설계단계의 데이터 모델링 때부터, 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조 등의 여러가지 성능과 관련된 사항을 데이터 모델링에 반영하는 것
1.2.2 정규화와 성능
- 정규화는 중복을 제거하고, 데이터처리를 관심사별(업무별)로 처리하게 해주어 일반적으로 성능이 향상됨
- 그러므로 조회 성능을 위해 무조건적인 반정규화를 시행해서는 안됨
1.2.3 반정규화와 성능
- 정규화 과정을 거쳤으나 디스크의 I/O 증가, 원격 조인 등의 이유로 성능이 저하가 예상될 때 반정규화를 적용
- 반정규화 기법으로 크게 테이블 반정규화, 컬럼 반정규화, 관계 반정규화가 존재
1.2.4 대량의 데이터에 따른 성능
- 잘 설계된 모델이라고 할지라도 한 테이블에 많은 컬럼을 가지고 있거나, 대량의 데이터가 한 테이블에 집약되어 있어 I/O가 증가하면 성능이 저하될 수 있음
- 대량의 데이터를 컬럼단위로 수직분할하거나, 로우(row) 단위로 수평분할하여 I/O량을 줄임으로써 성능을 향상 시킬 수 있음
1.2.5 데이터베이스 구조와 성능
- 논리 모델링 단계의 슈퍼/서브타입의 논리모델을 물리 데이터 모델로 변환하는 방법으로 1:1, 슈퍼+서브타입, All in one 형태가 있음
- 인덱스의 컬럼 순서에 따라 데이터 처리성능에 영향을 줄 수 있으니 인덱스 생성 시 주의
- 물리적인 테이블에도 관계를 적용하는 것이 좋으며, 미적용시 FK에 인덱스를 생성해야 성능저하를 막을 수 있음
1.2.6 분산 데이터베이스와 성능
- 분산 데이터베이스의 정의 : 빠른 네트워크를 이용하여 데이터베이스를 여러지역(여러노드)에 위치시켜 사용성 및 성능 등을 극대회시킨 데이터베이스
- 분산데이터의 투명성 : 분할 투명성, 위치 투명성, 지역사상 투명성, 중복 투명성, 장애 투명성, 병행 투명성이 있음
- 분산 데이터베이스의 장/단점
- 데이터의 가용성과 신뢰성 증가, 빠른 응답 속도와 통신비용 등
- 소프트웨어 개발비용 증가, 처리 비용의 증가 등
- 예전에는 위치 중심의 분산설계를 하였다면, 현재는 분산 데이터베이스는 업무필요에 의한 분산설계를 하고 있음
- 분산 데이터베이스 적용방법 : 테이블 위치 분산, 테이블 분할 분산, 테이블 복제 분산, 테이블 요약 분산이 있음
2.1.1 함수(FUNCTION)
- 사용자는 벤더에서 제공하는 내장 함수를 통해 데이터 값을 간편하게 조작할 수 있다
- 단일행 함수는 처리하는 데이터의 형식에 따라서 문자형 숫자형 날짜형 변환형 NULL 관련 함수로 나눌 수 있다.
2.1.2 GROUP BY, HAVING 절
- 집계 함수(Aggregate Function)는 여러 행들이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수의 일부로서 COUNT, SUM, AVG, MAX, MlN 함수가 있다.
- GROUP BY 절은 집합별 통계 정보의 기준을 명시하고, HAVING 절에는 집합에 대한 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
2.1.3 ORDER BY 절
- ORDER BY 절은 조회된 자료를 원히는 칼럼 순으로 정렬하는 기능을 수행하고 SELECT 문장의 제일 마지막 에 위치한다.
- SELECT 문장은 FROM 절, WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, ORDERBY 절 순서로 실행된다.
2.1.4 조인(JOIN)
- 두 개 이상의 테이블 들을 연결하여 데이터를 출력하는 것을 JOIN이라고 하며 WHERE 절의 JOIN 조건에 대해서 EQUI JOIN과 Non EQUI JOIN으로 구분할 수 있다.
2.2.1 표준 조인
- ANSI/ISO 표준 SQL에서 규정한 INNER JOIN, NATURAL JOIN, USING 조건걸, ON 조건절, CROSS JOIN,
- OUTER JOIN 문법을 통해 사용자 테이블 간의 JOIN 조건을 FROM 절에서 명시적으로 정의할 수 있다.
2.2.2 집합 연산자
- 두 개 이상의 테이블에서 JOIN을 사용하지 않고, SET 연산자는 여러 개의 SQL 문을 연결하여 데이터를 결합하는 방식을 사용
- UNION 은 합집합, UNION ALL 은 확장된 합집합, INSERSECT 는 교집합, EXCEPT/MINUS 는 차집합
2.2.3 계층형 질의와 셀프 조인
- 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의(HIERACHICAL QUERY)를 사용한다.
- 셀프 조인(SELF JOIN)이란 동일 테이블 사이의 조인을 말하며, FROM 절에 동일 테이블이 두 번 이상 나타난다.
2.2.4 서브쿼리
- 서브쿼리란 하나의 메인쿼리 안에 포함되어 있는 종속적인 SQL 문장을 말하는 것으로,
- 위치나 기능에 따라 NESTED SUBQUERY, INLINE VIEW, SCALAR SUBQUERY 로 구분할 수 있다.
2.2.5 그룹 함수
- 데이터 분석을 위한 GROUP FUNCTION 으로는 소그룹 간의 소계를 계산하는 ROLLUP 함수,
- GROUP BY 항목들 간의 다차원적인 소계를 계산할 수 있는 CUBE 함수
- 특정 항목에 대한 소계를 계산하는 GROUPING SETS 함수가 있다.
- 위치나 기능에 따라 NESTED SUBQUERY, INLINE VIEW, SCALAR SUBQUERY 로 구분할 수 있다.
2.2.6 윈도우 함수
- 데이터 분석을 위한 WINDOWS FUNCTION 은 부분적이나마 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수
- WINDOWNS FUNCTION 을 이용한 순위(RANK)관련 함수는 RANK, DENSE_RANK, ROW_NUMBER 함수가 있으며
- 그 외 그룹 내 집계(AGGREGATE) 관련 함수, 그룹 내 비율 관련 함수 등이 있다.
2.2.7 DCL
- 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어가 있고,
- GRANT 문장을 통해 권한을 생성하고 REVOKE 문장을 통해 권한을 회수 한다.
2.2.8 절차형 SQL
- 절차형 SQL을 이용하여 SQL 문장의 조건에 따른 분기 처리나 SQL 문장의 연속적인 실행을 이용하여 특정 기능을 수행하는 저장 모듈을 생성 할 수 있다.
- 절차형 SQL을 이용하여 PROCEDURE, TRIGGER, USER DEFINED FUNCTION 을 만들 수 있다.
2.3.1 옵티마이저와 실행 계획
- 규칙기반 옵티마이저 : 규칙을 이용하여 실행계획 생성
- 비용기반 옵티마이저 : 최소비용이 드는 실행계획 생성
- 실행계획의 절차와 방법은 액세스기법, 조인기법, 조인 순서 등으로 표현
2.3.2 인덱스 기본
- 인덱스의 목적 : 검색성능의 최적화
- Insert, Update, Delete 등과 같은 DML 작업은 성능이 떨어 질 수 있다.
- B-tree 인덱스는 일치검색, 범위검색 모두 적합한 구조이다.
- 데이터 액세스방법 : 인덱스스캔, 전체 테이블 스캔
2.3.3 조인 수행 원리
- From절에 여러테이블이 존재하더라도 먼저 두개의 테이블만 조인된다.
- NL Join : 중첩된 반복문과 유사한 조인 방식
- Hash Join : 해슁기법을 이용한 조인 방식
- Sort Merge Join : 데이터 정렬을 이용한 조인방식
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2.3 SQL 최적화 기본 원리 (0) | 2017.02.22 |
---|---|
SQLD 2.2 SQL 활용 (0) | 2017.02.22 |
SQLD 2.1 SQL 기본 (0) | 2017.02.22 |
SQLD 1.2 데이터 모델과 성능 (0) | 2017.02.22 |
SQLD 1.1 데이터 모델링의 이해 (0) | 2017.02.20 |
댓글