SQLD_1. 데이터 모델링의 이해(2)

·2023년 6월 6일
0
post-thumbnail

💻 과목1. 데이터 모델링의 이해

2. 데이터 모델과 성능

성능데이터 모델링

데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

데이터 모델링의 순서

  1. 정확한 정규화 수행
  2. DB 용량산정 수행
  3. DB 발생 트랜잭션 유형 파악
  4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행
  5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행

정규화의 종류

제 1정규화 : 한 칸에는 하나의 데이터만
제 2정규화 : 하나의 컬럼에는 관련된 데이터만 존재해야 함
-> 비관계형 DB는 대부분 제 2정규화 수행x(속도가 느려지기 때문) BUT 관계형 DB는 정규화를 해놓는 것이 일반적
partial dependency : 하나의 composite primary key에 종속
제 3정규화 : 일반 컬럼에만 종속된 컬럼을 다른 곳으로 빼기

🤍 참조 : 애플코딩 https://www.youtube.com/watch?v=Y1FbowQRcmI

반정규화

정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리를 수행하는 데이터 모델링 기법

  • 다량의 데이터 탐색의 경우 인덱스가 아닌 파티션 및 클러스터링 등 다양한 물리 저장 기법을 활용하여 성능 개선 유도 가능. but, 하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생한다면 이 때는 반정규화를 고려하는 것이 좋음
  • 이전 또는 이후 위치의 레코드에 대한 탐색은 window function으로 접근 가능
  • 집계 테이블 이외에 다양한 유형에 대하여 반정규화 적용 필요

반정규화 절차

1. 반정규화 대상조사
-> 범위처리빈도수 조사, 대량 범위 처리 조사, 통계성 프로세스 조사, 테이블 조인 개수

2. 다른 방법 유도 검토
-> 뷰 테이블, 클러스터링 적용, 인덱스의 조정, 응용애플리케이션

3. 반정규화 적용
-> 테이블, 속성, 관계의 반정규화

반정규화 대상 처리

  • 지나치게 많은 JOIN의 경우 VIEW 사용
  • 대량의 데이터 처리나 부분처리에 의해 성능이 저하되는 경우 클러스터링 적용, 인덱스 조정
  • 대량의 데이터는 primary key의 성격에 따라 부분적 테이블로 분리 가능 => partitioning 적용
  • 응용 앱에서 로직을 구사하는 방법을 변경, 성능 향상 가능

파티셔닝(Partitioning)

하나의 테이블에 다량의 데이터가 저장될 시 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 엑세스 성능을 향상시키고, 데이터 관리방법을 개선할 수 있도록 테이블에 적용하는 기법

트랜잭션

트랜잭션은 항상 전체를 통합하여 분석 처리. super-sub 타입이 하나의 테이블로 통합되어 있으면 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 성능이 우수함.

기본키(PK) 결정 기준

'='가 있는 속성 값이 앞에 들어오는 것이 가급적 좋음. 그 이후 BETWEEN...etc

분산데이터

  • 공통코드, 기준정보 등 마스터 데이터는 분산DB에 복제분산을 적용
  • 실시간 업무 특성을 가지고 있을 때, 분산DB를 사용하여 구성할 수 있음
  • 백업 사이트 구성 시 간단하게 분산기능을 적용하여 구성할 수 있음
profile
화이트해커 꿈나무 엘입니다😉

0개의 댓글