데이터베이스(35)
-
[SQLD] 2-6. Function
내장 함수 (Built-In Funtion) 단일행 함수 SELECT, WHERE, ORDER BY, UPDATE(Set) 절에 사용 각 행들에 대해 개별적으로 작용 여러 인자를 입력해도 단 하나의 결과만 리턴 - 다중행 함수 (집계 함수 / 그룹 함수 / 윈도우 함수) 단일행 함수 종류 종류 내용 함수 문자열 함수 문자를 입력하면 문자/숫자 값을 반환 - LOWER(s), UPPER(s) - SUBSTR(s, m, n) / SUBSTRING(s, m, n) - LENGTH(s) / LEN(s) - LTRIM(s, 지정문자), RTRIM(s, 지정문자) - TRIM( [leading|trailing|both] 지정문자 from s) - ASCII(c), CHR(아스키n) / CHAR(아스키n) 숫자형 함..
2021.10.30 -
[SQLD] 2-5. WHERE
WHERE (조건) 연산자 종류 구분 연산자 비교 연산자 =, >, >=, , >=, = 80) ORDER BY HEIGHT DESC, WEIGHT DESC; ≫ IN (list) - 리스트에 있는 값 중, 어느 하나라도 일치하면 된다 SELECT PLAYER_NAME 선수이름, TEAM_ID 소속팀, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키, WEIGHT 몸무게 FROM PLAYER WHERE (TEAM_ID IN('K02','K07')) AND (HEIGHT >= 185) ORDER BY TEAM_ID, HEIGHT DESC; ≫ LIKE '비교 문자열' - 비교 문자열과 형태가 일치하면 된다 SELECT PLAYER_NAME 선수이름, TEAM_ID 소속팀, POSITION ..
2021.10.29 -
[SQLD] 2-4. TCL
TCL (트랜잭션 제어어) 트랜잭션 DB의 논리적 연산 단위 분리될 수 없는 1개 이상의 DB 조작 / 분할할 수 없는 최소의 단위 하나의 트랜잭션에는 하나 이상의 SQL문 포함 All Or Nothing (전부 적용 or 전부 취소) 트랜잭션 특성 (ACID / 원-일-고-지) 특성 설명 원자성 (Atomicity) ● 트랜잭션에서 정의된 연산들은 모두 성공하거나 전혀 실행되지 않은 상태여야 한다 (All Or Nothing) 일관성 (Consistency) ● 트랜잭션이 실행되기 전의 DB 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 DB의 내용은 잘못이 없어야 한다 고립성 (Isolation) ● 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들면 안된다 지속성..
2021.10.29 -
[SQLD] 2-3. DML
SELECT (조회) SELECT [DISTICT] 컬럼명1, 컬럼명2,... FROM 테이블명 [WHERE 조건] [GROUP BY 컬럼명1, 컬럼명2,...] -- SELECT 절에 컬럼 + 집계함수가 있는 경우 존재하는 컬럼명 전부 작성 [HAVING 조건] -- SELECT 절에 집계함수가 있는 경우 집계함수에 대한 조건 [ORDER BY 컬럼명1, 컬럼명2,...] -- 정렬 ASC/DESC ≫ WILDCARD (* -> 전부 조회) SELECT * FROM PLAYER; ≫ DISTINCT (중복 제거) SELECT DISTINCT POSITION FROM PLAYER; ≫ ALIAS 부여 (별칭) - 별칭에 띄어쓰기가 있으면 " " 붙여서 활용 ex) AS "회원 정보" - AS는 생략해도 ..
2021.10.29 -
[SQLD] 1-7. 분산 데이터베이스
분산 데이터베이스 - 여러 곳으로 분산된 DB를 하나의 가상 시스템으로 쓸 수 있도록 한 DB - DB를 연결하는 빠른 네트워크 환경을 이용하여 DB를 여러 지역/노드로 위치시켜서 사용성/성능을 극대화시킨 DB 분산 DB의 투명성 (분 위 지 중 장 병) 1. 분할 투명성 하나의 논리적 릴레이션을 여러 단편으로 분할시켜서 각 단편의 사본을 여러 Site에 저장 2. 위치 투명성 사용하려는 데이터의 저장 장소를 명시하고 기록 트랜잭션은 특정 데이터 항목의 위치에 독립적 3. 지역사상 투명성 각 지역 시스템과 무관한 이름 사용 가능 지역 DBMS와 물리적 DB 사이의 Mapping 보장 4. 중복 투명성 트랜잭션이 데이터의 중복 개수/중복 사실을 몰라도 데이터 처리가 가능 5. 장애 투명성 트랜잭션, DBM..
2021.10.27 -
[SQLD] 1-6. 데이터베이스 구조와 성능
슈퍼/서브 타입 모델 - 업무를 구성하는 데이터의 특징을 공통점/차이점의 특징을 고려해서 표현 가능 - 공통 속성 = Super Type / 개별 속성 = Sub Type - 논리적 데이터 모델에서 이용되는 형태 + 분석 단계에서 사용 슈퍼/서브 타입 데이터 모델의 변환 - 슈퍼/서브타입 변환에 대한 성능 저하 이유 트랜잭션의 특성을 고려하지 않고 테이블을 설계하기 때문 1) 트랜잭션은 항상 일괄 처리 But 테이블은 개별로 유지되어 Union 연산에 의한 성능 저하 2) 트랜잭션은 항상 서브타입 개별로 처리 But 테이블이 하나로 통합되어 있어서 불필요하게 많은 데이터를 집약 3) 트랜잭션은 항상 슈퍼+서브 타입을 공통으로 처리 But 개별로 유지 or 하나의 테이블로 집약 변환 타입 1:1 타입 슈퍼..
2021.10.27 -
[SQLD] 1-5. 대량 데이터에 따른 성능
대량 데이터에 따른 테이블 분할 - 아무리 설계가 잘 된 데이터 모델이어도 대량 데이터가 하나의 테이블에 집약되어 있으면 성능이 저하된다 ≫ 트랜잭션이 분산될 수 있도록 테이블 단위에서 분할 적용 1. 하나의 테이블에 여러 컬럼 존재 (1:1 관계 분할) - 데이터가 디스크 여러 블록에 존재하면 디스크에서 데이터를 읽는 I/O량이 증가하여 성능이 저하 - 많은 컬럼 ≫ 로우체이닝, 로우 마이그레이션 또한 많아짐 2. 하나의 테이블에 대량의 데이터 존재 (파티셔닝) - 인덱스 Tree 구조가 너무 커져서 효율성이 낮아지고 데이터 처리(DML)를 할 때 디스크 I/O를 많이 유발 - 인덱스 Tree 구조가 커지면 인덱스를 찾아가는 단계가 깊어져서 조회의 성능에 영향을 미침 ※ 로우 체이닝(Row Chaini..
2021.10.27 -
[SQLD] 1-4. 반정규화 기법
테이블 반정규화 (병합 / 분할 / 추가) 1. 테이블 병합 - 관계 병합 (1:1 / 1:M) 두 테이블의 동시 조회가 많을 때 - 슈퍼/서브타입 관계 병합 여러 앤터티 공통 속성 = Super Type / 개별 속성 = Sub Type 2. 테이블 분할 - 수직(컬럼) 분할 (↓) 컬럼 단위 테이블을 디스크 I/O를 분산 처리하기 위해 테이블을 1:1로 분리 트랜잭션 처리 유형 파악이 선행되어야 한다 - 수평(로우) 분할 (→) 로우 단위로 발생하는 트랜잭션을 분석해서 디스크 I/O, 데이터 접근 효율성을 높여서 성능 향상 3. 테이블 추가 - 중복 테이블 추가 다른 업무 or 서버일 경우 동일한 테이블 구조를 중복해서 원격 조인 제거 - 통계 테이블 추가 SUM, AVG 등을 미리 계산해서 조회 시..
2021.10.26 -
[SQLD] 1-3. 정규화 & 반정규화
정규화 (Normalization) - 데이터에 대한 중복성을 제거 / 데이터를 관심사별로 카테고리화 => 성능 향상 - 엔티티가 계속 발생 / SQL 문에서 조인이 많이 발생 => 성능 저하 - 정규화를 수행한다고 무조건 조회 성능이 저하되는 것은 아니다 - 함수적 종속성에 근거한 정규화 수행이 필요하다 단계 - 1NF : 모든 속성 값이 원자 값 - 2NF : 1NF + 완전 함수 종속 - 3NF : 2NF + 이행적 종속 제거 - BCNF : 3NF + 모든 결정자가 후보키 반정규화 (Denormalization) 정의 - 정규화된 엔티티, 속성, 관계에 대해 시스템 성능 향상 + 개발·운영 단순화를 목적으로 중복, 통합 , 분리 등을 수행하는 데이터 모델링 기법 수행 이유 (데이터 무결성이 깨질 ..
2021.10.26 -
[SQLD] 1-2. 성능 데이터 모델
데이터 모델의 성능 저하 이유 1. 데이터 모델 구조 2. 대용량 데이터 3. 인덱스의 특성을 고려하지 않은 인덱스 생성 성능 데이터 모델 정의 - DB 성능 향상을 목적으로 설계단계의 데이터 모델로부터 (정규화, 반정규화, 테이블 분할, 조인 구조, PK/FK) 등 이러한 사항이 데이터 모델에 반영될 수 있도록 하는 것 수행 시점 - 분석/설계 단계에서 성능 데이터 모델을 구현하게 되면 Rework Cost(재업무 비용)이 최소화 된다 - 즉 시기가 빠를수록 좋다 고려사항 1. 데이터 모델링을 할 때 정규화를 정확하게 수행 2. DB 용량 산정 수행 3. DB에 발생하는 트랜잭션의 유형 파악 4. 용량, 트랜잭션의 유형을 고려해서 반정규화 수행 5. 이력 모델 조정 / PK·FK 조정 / 슈퍼·서브 타..
2021.10.26 -
[DB] 정규화
정규화 (Normalization) 주어진 릴레이션 스키마가 잘못되어 이상현상이 발생하는 릴레이션 스키마를 분해하여, 이상현상이 발생하지 않는 바람직한 릴레이션 스키마로 만들어 가는 과정 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정 함수적 종속성을 판단하여 정규화를 수행 정규화의 목적 - 불필요한 데이터를 제거, 데이터의 중복 최소화 - DB 구조 확장 시, 재디자인을 최소화 - 다양한 관점에서의 query를 지원하기 위해 - 무결성 제약조건의 시행을 간단하게 하기 위해 - 각종 이상 현상을 방지하기 위해, 테이블의 구성을 논리적이고 직관적으로 한다 정규화의 필요성 - 저장공간 최소화 - 데이터 중복에 따른 데이터 불일치성 최소화 - 데이터의 삽입..
2021.10.18 -
[DB] 데이터베이스 언어 SQL(Structured Query Language) - DCL
SQL 기능에 따른 분류 - 데이터 정의어(DDL : Data Definition Language) 테이블 생성, 변경, 제거 CREATE, ALTER, DROP 문 - 데이터 조작어(DML : Data Manipulation Language) 생성된 테이블에 데이터를 검색, 삽입, 수정, 삭제 SELECT, INSERT, UPDATE, DELETE 문 - 데이터 제어어(DCL : Data Control Language) 사용자 접근 제어, 백업과 회복, 동시성 제어 등 GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT 문 데이터 제어어(DCL) 1. GRANT : 권한 생성 데이터베이스 관리자가 사용자에게 권한 부여 (CONNECT 권한 및 RESOURCE 권한) CONNEC..
2021.10.16