db(36)
-
[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] 2-2. DDL
DDL (데이터 정의어) 데이터 유형 데이터 유형 설명 CHAR(s) ● 고정 길이 문자열 (Oracle, SQL Server = CHAR) ● s = 1byte / Oracle 최대길이 = 2000byte / SQL Server 최대길이 = 8000byte ● 고정길이보다 s가 작을 경우 나머지 길이는 공간으로 채워진다 VARCHAR(s) ● 가변 길이 문자열 (Oracle = VARCHAR2 / SQL Server = VARCHAR) ● Oracle 최대길이 = 4000byte / SQL Server 최대길이 = 8000byte ● 고정길이보다 s가 작을 경우 나머지 길이는 가변으로 조정된다 NUMBER(p,s) ● 정수, 실수 등 숫자 정보 (Oracle =NUMBER(p,s) / SQL Serve..
2021.10.29 -
[SQLD] 2-1. SQL 기본
관계형 데이터베이스 DB (데이터베이스) 특정 기업·조직·개인이 필요에 의해 데이터를 일정한 형태로 저장해놓은 것 SQL (Structured Query Language) 관계형 데이터베이스에서 데이터 정의/조작/제어를 하기 위해 사용하는 언어 SQL 문장 종류 명령어 종류 명령어 설명 데이터 조작어 DML SELECT - DB에 들어있는 데이터를 조회/검색하기 위한 명령어 - RETRIEVE 라고도 한다 INSERT UPDATE DELETE - DB의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어 - 입력 / 수정 / 삭제 데이터 정의어 DDL CREATE ALTER DROP RENAME - 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어 - 생성 / 변경 / 삭제 / 이름변경 데이터..
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 -
[SQLD] 1-1. 데이터 모델링의 이해
1. 데이터 모델의 이해 모델링 정의 - 복합한 현실세계 (사물, 사물, 개념 등)를 일정한 표기법에 따라 표현하는 일 - 복잡한 현실세계를 단순화해 표현하는 것 특징 1. 추상화 : 다양한 현상을 일정한 양식인 표기법에 따라 표현 2. 단순화 : 복잡한 현실세계를 약속된 표기법에 의해 쉽게 이해할 수 있도록 하는 개념 3. 명확화 : 누구나 이해하기 쉽게 하기 위해 애매모호함을 제거하고 정확하게 현상을 기술 관점 1. 데이터 관점 (What, Data) : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지 2. 프로세스 관점 (How, Process) : 실제하고 있는 업무는 무엇인지 또는 무엇을 해야 하는지 3. 상관 관점 (D vs P) : 업무가 처리하는 일의 방법에 따라 데이..
2021.10.20 -
[DB] 정규화
정규화 (Normalization) 주어진 릴레이션 스키마가 잘못되어 이상현상이 발생하는 릴레이션 스키마를 분해하여, 이상현상이 발생하지 않는 바람직한 릴레이션 스키마로 만들어 가는 과정 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정 함수적 종속성을 판단하여 정규화를 수행 정규화의 목적 - 불필요한 데이터를 제거, 데이터의 중복 최소화 - DB 구조 확장 시, 재디자인을 최소화 - 다양한 관점에서의 query를 지원하기 위해 - 무결성 제약조건의 시행을 간단하게 하기 위해 - 각종 이상 현상을 방지하기 위해, 테이블의 구성을 논리적이고 직관적으로 한다 정규화의 필요성 - 저장공간 최소화 - 데이터 중복에 따른 데이터 불일치성 최소화 - 데이터의 삽입..
2021.10.18