프로그래밍/서버, DBMS

[책 요약] Effective SQL - SQL 코딩의 기술 요약 (Ch3. 데이터 모델 설계를 변경할 수 없는 경우)

포도알77 2021. 4. 20. 23:46
Effective SQL, SQL 코딩의 기술이라는 책을 읽고 요약한 것으로, 실제 책과 동일하지 않을 수 있음. 개인 정리용

 

3.18 설계 변경이 불가능한 경우, 뷰로 데이터를 간소화

 일반적으로 뷰는 하나 이상의 테이블이나 다른 뷰에 SQL 쿼리를 미리 정의해 두고 테이블처럼 데이터를 볼 수 있는 객체다.

 뷰 사용하는 이유로는 아래와 같다.

 (1) 특정 데이터에 집중

 (2) 컬럼 이름 간소화 또는 명료화

 (3) 여러 테이블에 있는 데이터를 한눈에 보기

 (4) 데이터 조작 간소화

 (5) 중요 데이터 보호

 (6) 하위 호환성 제공

 (7) 데이터 커스터마이징 

 (8) 요약 데이터 제공

 (9) 데이터 가져오기와 내보내기 

 

3.19 비관계형 데이터를 정보성 데이터로 변환할 때는 ETL을 사용하자

 ETL은 추출(Extract), 변환(Transform), 로드(Load)를 의미한다. ETL 툴을 이용하여 비관계형 데이터를 DB로 갖올 수 있고, 재배열을 통해 정보성 데이터로 바꿀 수 있다. 일부 DB에서 제공하나 MySQL에 대한 내용은 없음.

 

3.20 요약 테이블을 만들어 관리하자.

 테이블에 데이터가 너무 많거나 자주 사용되는 정보는 요약 테이블을 생성하고 데이터가 변경될 때(트리거) 혹은 프로시저를 이용하여 주기적으로 갱신하는 방법을 사용한다. 

 요약 테이블은 MQT (Materialized Query Table)으로 SELECT시에 GROUP BY로 묶은 결과를 테이블로 만드는 것이다. (일부 DB만 지원)

 

 요약 테이블의 단점으로는 아래와 같다.

 (1) 별도의 공간에 저장하여, 저장 공간 차지

 (2) 데이터를 일관되게 유지하려면 관리 작업(트리거, 제약조건, 저장프로시저)가 필요하다.

 (3) 필요한 값이 무엇인지 미리 파악해야 한다.

 (4) 그룹핑 조건이나 필터 조건이 다를때는 여러개의 요약 테이블이 필요하다.

 (5) 스케줄로 요약 테이블을 계속 업데이트 해야한다.

 (6) SQL을 사용해 요약 테이블 데이터를 주기적으로 관리해야 한다. (ex, 1년간 유효 데이터, 지난 데이터 삭제)

 

 

3.21 비정규화된 데이터를 '언피벗'하려면 UNION 문을 사용하자

 Unione 쿼리는 아래 세가지 규칙으로 동작한다.

 (1) UNION 쿼리를 구성하는 각 쿼리는 컬럼 수가 동일해야 한다.

 (2) 각 쿼리의 컬럼 순서도 일치해야 한다.

 (3) 각 쿼리에 사용된 컬럼의 데이터 타입도 일치하거나 호환되어야 한다.

 

 만약 중복되는 로우를 제거하고자 한다면, UNION ALL을 이용하자. (별도의 중복 제거 과정이 없어 성능 향상을 꾀할 수 있다.

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사