brunch

You can make anything
by writing

C.S.Lewis

by 브래드 Mar 10. 2023

SQLD 요약정리, 2편

2. 데이터 모델과 성능

안녕하세요, 브래드입니다.

오늘은 SQLD 요약정리 2편으로 데이터 모델과 성능 파트에 관해 함께 알아보아요.



제 2장. 데이터 모델과 성능

  (1) 성능 데이터 모델링

    1-1. 성능 데이터 모델링 개념

        - 성능 데이터 모델링은 데이터베이스 성능향상을 위한 것

        - 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등이 존재함


    1-2. 성능 데이터 모델링 수행

        - 사전에 할수록 비용이 들지 않는다

        - 분석/설계 단계에서 데이터베이스 처리 성능을 향상시킬 수 있는 방법을 고려해야 한다


    1-3. 성능 데이터 모델링 고려사항

        1) 데이터모델링을 할 때 정규화를 정확하게 수행한다

        2) 데이터베이스 용량 산정을 수행한다

        3) 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다

        4) 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다

        5) 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다

        6) 성능관점에서 데이터 모델을 검증한다




  (2) 정규화

    2-1. 정규화 개념

        - 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것

        - 정규화된 테이블은 처리 속도가 빨라질 수도 있고 느려질 수도 있다. 

        - 정규화된 데이터 모델은 조회시에는 성능이 향샹될 수도 있고, 저하될 수도 있다. 반면, 입력/수정/삭제 시에는 무조건 성능이 향상된다. 



    2-2. 정규화 이론

        - 제 1 정규형

        : 모든 속성은 원자값을 가져야 한다

        : 다중 값을 가질 수 있는 속성은 분리되어야 한다


        - 제 2 정규형

         : 기본 키에 종속적이지 않거나 기본 키 일부 컬럼에만 종속적인 컬럼은 분리되어야 한다(=부분종속을 분리해야 한다)


        - 제 3 정규형

         : 일반속성 간 종속관계가 존재하는 것들은 분리해야 한다. (=이전종속 속성을 분리해야 한다)







 (3) 반정규화

    3.1 반정규화 개념

    - 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상될 때 사용한다.

    - 혹은 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 사용한다. 



    3-2. 반정규화 기법: 테이블 반정규화

    - 테이블 병합

        1) 1:1 관계 테이블 병합

        2) 1:M 관계 테이블 병합

        3) 슈퍼/서브타입 테이블 병합


    - 테이블 분할

        1) 수직분할: 컬럼 단위

        2) 수평분할: 로우 단위


    - 테이블 추가

        1) 중복 테이블 추가

        2) 통계 테이블 추가

        3) 이력 테이블 추가

        4) 부분 테이블 추가: 자주 이용하는 집중화된 칼럼들이 있을 때 활용



    3-3. 반정규화 기법: 컬럼의 반정규화

       1) 중복 칼럼 추가

       2) 파생 칼럼 추가

       3) 이력 테이블 칼럼 추가

       4) PK에 의한 칼럼 추가

       5) 응용시스템 오작동을 위한 칼럼 추가



    3-4. 대용량 테이블에서 발생할 수 있는 현상

    - 로우 체이닝: 로우 길이가 길어서 데이터 블록에 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되는 형태

    - 로우 마이그레이션: 데이터 블록에서 수정이 발생되면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식



    3-5. 슈퍼타입과 서브타입

    - 데이터의 특징을 분석하여 공통점과 차이점을 고려하여 효과적으로 표현할 수 있다

    - 공동퇸 부분을 슈퍼타입으로, 다른 엔터이와 차이가 있는 부분은 서트타입으로 구분한다







 (4) PK/FK 칼럼 순서 및 성능

    - PK/FK 칼럼의 순서는 중요하다

    - 인덱스 선두 칼럼에 '=' 조건이 나와야 성능이 더욱 좋다



 (5) 분산 데이터베이스

    5-1. 분산 데이터베이스 개념

        - 논리적으로 동일한 시스템이며, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터를 하나의 가상 시스템으로 사용할 수 있도록한 데이터베이스



    5-2. 분산 데이터베이스 장/단점

     1) 장점

        - 신뢰성과 가용성이 높다

        - 효용성과 융통성이 높다

        - 응답속도가 빠르다

        - 통신비용이 절감된다


     2) 단점

        - 소프트웨어 개발 비용이 증대된다

        - 불규칙한 응답 속도를 가진다

        - 데이터 무결성에 대한 위협이 존재한다



    5-3. 분산 데이터베이스 적용 기법

        1) 테이블 위치 분산

        2) 테이블 분할 분산

        3) 테이블 복제 분산

        4) 테이블 요약 분산





지금까지 SQLD 요약정리 2편으로 데이터 모델과 성능의 파트 핵심 부분을 다루어보았습니다.

다음시간에는 3편으로 SQL 기본에 관해 함께 알아보아요.


브래드였습니다. 감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari