본문 바로가기
자격증/SQLD

SQLD 요약

by 정재희 2017. 3. 16.
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

댓글