컴공(19)
-
[SQLD] 2-9. Join
Join - 2개 이상의 테이블을 연결/결합하여 데이터를 출력하는 것 - PK나 FK값의 연관에 의해 Join 성립 - FROM절에 여러 테이블이 나열되더라도 단 2개의 집합 간에만 조인이 일어난다 -> 앞에서부터 조인해서 최종적으로 2개의 테이블 간의 조인을 실행 -> (((A JOIN D) JOIN C) JOIN B) - 테이블의 조인 순서는 옵티마이저에 의해 결정 EQUI JOIN - 2개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하는 경우에 사용 (등가 조인) - '=' 연산자를 사용해서 표현 - PK ↔ FK의 관계를 기반 SELECT P.PLAYER_NAME 선수명, T.TEAM_NAME 소속팀명 FROM PLAYER P, TEAM T WHERE P.TEAM_ID = T.TEAM_ID; -..
2021.10.30 -
[SQLD] 2-8. Order By
Order By 절 - 특정 컬럼을 기준으로 정렬해서 출력 - ROWNUM 함수가 있을 경우, ROWNUM을 먼저 하고 정렬을 수행 - ASC(오름차순) / DESC(내림차순) - Default = ASC(오름차순) - SELECT 목록에 나타나지 않은 컬럼을 사용할 수 있다 Oracle / SQL Server - Oracle NULL값을 가장 큰 값으로 취급 - SQL Server NULL값을 가장 작은 값으로 취급
2021.10.30 -
[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 -
[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 -
[DB] 데이터베이스 언어 SQL(Structured Query Language) - DDL
SQL 기능에 따른 분류 - 데이터 정의어(DDL : Data Definition Language) 테이블 생성, 변경, 제거 CREATE, ALTER, DROP 문 - 데이터 조작어(DML : Data Manipulation Language) 생성된 테이블에 데이터를 검색, 삽입, 수정, 삭제 SELECT, INSERT, UPDATE, DELETE 문 - 데이터 제어어(DCL : Data Control Language) 사용자 접근 제어, 백업과 회복, 동시성 제어 등 GRANT, REVOKE, COMMIT, ROLLBACK 문 데이터 정의어(DDL) 1. CREATE TABLE 문 : 테이블 생성 - 기본 문법 CREATE TABLE 테이블이름 ( 속성이름 데이터타입 제약조건, 속성이름 데이터타입 제..
2021.10.14