ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [도서]아는만큼보이는 데이터베이스설계와 구축
    Architecture/DB_BigData_NoSQL 2012.05.20 02:50

    [도서]아는만큼보이는 데이터베이스설계와 구축

    01. PK컬럼순서: 조인이 되어 인덱스 타는 순서

    02. 식별자관계와 비식별자관계 설정서

    03. 이력유형 데이터 모델링 :
      - 내부스냅샷, 1:M 스넵샷 전체이력(가장많이 사용), 1:M 스냅샷 과거이력,
        1:M 스냅샷 군집(컬럼단위), 1:M 스냅샷 군집 과거이력
      - 성능: 최신여부 컬럼 추가 
      - 진행이력: 적용일자, 적용종료일자 컬럼 추가 

    04. 엔티티타입 통합
      - 트랜잭션의 특성을 보고 판단, 속성의 제약, 유연성과 업무이해도, 유지보수성
      - 논리적인 모델은 엔티티 분리형식 권장, 물리적인 모델은 성능저하 방지로 통합 고려 

    05. Primary Key와 Unique Index
      - DB구축 시 핵심쟁점: A) 데이터 무결성 B) 성능 C) 관리용이성 D)개발편의성
      -  PK, FK 성능저하문제: FK 설정된 테이블에 인덱스가 제대로 되지 않았음
      - SAP, Oracle ERP에서는 Unique Index만을 사용
        => One Source Multi Use 사상임, 로직으로 참조무결성 해소함 

    06. 자기참조 모델링 기법:    1:1. 1:M, M:N
        -  관계의 속성에 인덱스를 설정할 것 (full scan방지)  
        -  참조관계에 맞는 SQL실행 
            select 관련번호, 관련번호이름  from 자기참조테이블
            start with 관련번호 = '1001'  connect by prior 원번호 = 관련번호 
        - M:N 관계 (관계맵핑테이블 추가,  복잡함, 1:M 관계로 업무 재구성 권장)  

    07. 엔티티타입 도출
       - 3가지: 명사형 도출, 정규화 이용, 엔티티 구분 4-STEP 데이터 모델링
       - 4-STEP: 업무구조 모델링, 업무흐름 모델링, 기술적 모델링, 모델의 검토 및 정제
       - CRUD Matrix 상관모델링으로 검증 

    08. 데이터 모델링에서 관계의 중요성
       - 모든 엔티티 타입에 관계설정 할것
         예외) 1) 코드성 엔티티 2) 통계성 엔티티 3)다른 시스템의 엔티티 타입참조 

    09. 용어사전과 도메인 정의
       - 전사적 데이터 아키텍처: 전사적 표준 메타DB 구성 (용어사전, 도메인정의)
       - 미정의시: 컬럼명, 타입 등 불일치, 조인시 형변환 문제 등등  

    10. 데이터 모델 검증

    11. 논리/물리 데이터모델을 생성하라

    12. 데이터 독립성의 실무적용
      - External Schema
      - Conceptual Schema
      - Internal Schema 

    13. 데이터 무결성의 실무적용

    14. 트랜잭션 관리의 실무적용

    15. 정규화의 실무적용

     - 함수종속성 (1,2,3차, BCNF),  값의 다중화 (4,5차) 

     - 1 Normal Form: 모든속성은 원자값을 가지도록 구성 (반복그룹제거) 

     - 2 Normal Form: 부분속성 제거 (기본키에 완전하게 종속)

        PK에 종속적이지 않은 속성을 분리 (Partial dependency attribute)

        PK가 반드시 복수속성일 때에만 해당 됨

     - 3 Normal Form: 이전종속 속성분리 (기본키에 직접종속)

        속성에 종속적인 속성을 분리     

     - BCNF (Boyce-Code Normal Form): 다수의 주식별자를 분리

     - 4 Normal Form: Multi-Valued Dependency 속성분리

        2 NF된 테이블은 다대다 관계를 가질 수 없다, 다대다관계에서 1:N 관계로 변형하는 것

        다중값 종속성

     - 5 Normal Form: 조인종송석, 결합종속일 경우 두개 이상의 N개로 분리

         Join Dependency 


    16. 성능데이터 모델링: 성능모델링 3가지 방법

         1) 데이터 모델 구조에 의한 성능:

               정규화, 반정규화, 데이터모델 단순화    

         2) 대용량 특성을 고려한 성능:

               테이블 수직/수평 분할, 수펴타입/서브타입 고려, 이력모델에 의한 성능

         3) 인덱스 특성을 고려한 성능

               PK구성, FK 구성, 데이터 타입 특성, 채번 방법

        * 성능데이터 모델링 순서

          1) 정규화를 정확히 수행: 데이터를 분산시킴

          2) 데이터베이스 용량 산정: 어떤 테이블에 데이터가 집중되는지 파악

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

               CRUD Matrix를 보고 파악, Sequence Diagram 으로 파악

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

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

          6) 데이터 모델을 검증



    17. 정규화를 통한 데이터베이스 성능향상

     - 데이터는 함수 종속성에 근거하여 정규화할 것 (정규화는 필수사항)

     - 일반업무(온라인성)에서는 인덱스 수를 7~8개가 넘지 않도록 구성


    18. 반정규화를 통한 데이터베이스 성능향상

     - 반정규화는 테이블,컬럼,관계를 모두에 대해 상황에 따라 적용하는 것

     - 데이터를 중복하여 성능을 향상시키는 기법

     - 반정규화 절차

      1) 반정규화 대상조사 (범위처리 빈도수, 대량의 범위처리, 통계성 프로세스, 테이블 조인갯수)

           - 자주 사용하는테이블에 접근하는 프로세스 수가 많고 항상 일정한 범위만을 조회하는 경우

           - 대량의 데이터가 있고 대량의 범위를 자주 처리하는 경우 처리범위를 일정하게 줄이지 않으면

             성능을 보장할 수 없는 경우

           - 통계성 프로세스에 의해 통계정보를 필요로 할 경우(별도 통계 테이블 생성)

           - 지나치게 많은 조인갯수로 작업이 기술적으로 어려운 경우

      2) 다른방법유도검토 (뷰테이블, 클러스터링, 인덱스조정, 애플리케이션)

           - 지나치게 많은 조인 => 뷰를 사용하여 해결 고려

           - 대량의 데이터

               => 클러스터링 (입력/수정/삭제 성능저하 됨)

               => 파티셔닝기법 (데이터가 특정 기준에 의해 분리될 때 적용)

           - 응용 메모리영역에 캐쉬하여 처리 등


      3) 반정규화적용 (테이블반정규화, 속성의 반정규화, 관계의 반정규화)

        a. 테이블의 반정규화

           (1) 테이블 병합

             - 1:1 관계 테이블 병합

             - 1:M 관계 테이블 병합

             - 수퍼/서브타입 테이블 병합

           (2) 테이블 분할

             - 수직분할: 컬럼단위의 테이블 디스크 I/O를 분산

             - 수평분할: 로우단위로 집중 발생하는 트랜잭션을 분리하기 위해 테이블 분리

           (3) 테이블 추가

              - 중복 테이블 추가: 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격조인제거

              - 통계 테이블 추가: 미리 계산하여 조회성능 향상

              - 이력 테이블 추가: 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 둠

              - 부분 테이블 추가: 하나의 테이블의 주자 이용하는 컬럼들을 디스크 I/O를 줄이기 위해 

                                                별도의 테이블 생성

        b. 컬럼의 반정규화

           (1) 중복컬럼 추가: 조인을 감소시키기 위해 중복컬럼 위치시킴

           (2) 파생컬럼 추가: 트랜잭션이 처리되는 시점에 계산에 의한 성능저하를

                 방지하기 위해 미리 값을 계산하여 컬럼에 보관

           (3) 이력 테이블 컬럼추가: 대량의 이력 데이터 처리시 불특정 날 조회나 최근값

                  조회시 성능저하를 예방하기 위해 기능성컬럼(최근값여부,시작과 종료일자등)추가

           (4) PK의 컬럼추가: (?)

           (5) 애플리케이션 오작동을 위한 컬럼추가

                업무적으로 의미가 없지만 사용자가 데이터를 처리하다가 잘못 처리하여 원래값으로

                복구하기를 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법

                (이력데이터 모델로 풀어내면 정상적인 데이터 모델의 기법이 됨)


         c. 관계의 반정규화

             중복관계 추가: 성능저하 예방을 위해 추가적인 관계를 맺는 방법


    - 분산데이터베이스와 반정규화: 분산된 데이터의 중복처리 (데이터 무결성 유지에 주의)

          

    19. 데이터 모델 단순화를 통한 데이터베이스 성능향상

     - 단순화 방법: 함수적 종속관계에 의존하여 정규화를 적용

       엔티티 타입간에 관계가 있는지 분석하여 상호관계를 연결하여 데이터 모델링 전개

      (핵심키워드는 '업무흐름에 맞는 엔티티 타입과 관계의 표현 및 정규화' 임)



    20. 테이블 수직/수평분할에 의한 성능향상

    - 컬럼수가 너무 많아도 문제:

       Row chaining현상: 로우 길이가 너무 길어서 데이터블록 하나에 저장되지 못함 -

    -  오라클9i 이상: List partition(특정값 지정), Range Partition(범위), Hash partition(해쉬적용)

        range partition을 가장 많이 사용 (보관주기에 따라 테이블관리가 용이)


    21. 수퍼타입/서브타입 모델의 성능고려비법

    - Extended ER모델

    - 변환기준

      1) OneToOne type: 1:1 타입

       수퍼타입과 서브타입 각각에 대해 독립적으로 트랜잭션이 발생하는 경우

      2) Plus Type: 수퍼 + 서브 타입

       업무특성상 수퍼타입/서브타입이 묶여져서 트랜잭션이 발생하는 경우

      3) Single Type:

       전체를 하나로 묶어 트랜잭션이 발생하는 경우


     * 사례: Plus Type으로 진행되었으나 막바지 수퍼타입쪽 트랜잭션이 많아서 별도테이블로 중복시킴

               (무것결성에 어려움이 있었음)

     * CRUD Matrix를 이용하여 수퍼/서브타입의 모델을 선정


    22. 인덱스 특성을 고려한 PK/FK 데이터베이스 성능향상

     - FK제약을 걸었을 때는 반드시 FK 인덱스를 생성할 것


    23. 효율적인 채번방식을 통한 성능향상

     - 채번방법

     1) 채번테이블사용: 장(중복에러없음, 순차적 데이터입력가능)

                                       단(잠금현상, 성능저하, 관리항목증가)

     2) MAX + 1 : 장(빠른성능, 순차적 데이터입력, 관리항목 증가없음)

                            단(중복에러 가능)

     3) Sequence 사용: 장(빠른성능, 중복에러없음, 잠금현상없음)

                                    단(순차적데이터입력불가, 관리항목증가)

     * 필자는 MAX + 1 을 권함: 트랜잭션의 양이 아주 많지 않으면 중복가능성 매우 낮음

        추가로 구분코드를 더 두어서 중복가능성을 낮춤

        중복에러 발생 시에 시스템적으로 다시 채번되도록 구성 (사용자 에러를 줄임)


    24. FK를 이용할 것인가?

     - FK에 의한 성능저하는 FK컬럼에 인덱스가 없어서 임

     - FK와 애플리케이션 코딩: FK는 정상적인 코딩의 안전장치 임

     - FK를 나중에 걸면 안될까?

       나중에는 데이터를 맞추고 애플리케이션을 재 테스트 하는게 더 어려움


    25. 데이터베이스 분산설계의 활용

     - 분산환경에서 데이터의 동기화

     1) 트랜잭션 동기화(2PC:2 phase commit): transaction이 오래걸림

     2) 배치작업처리: 배치프로그램으로 일괄적으로 동기화

     3) DBMS의 기능활용: Oracle은 DB Link를 통한 스냅샷 기능(테이블간 데이터 동기화기능) 


    26. 데이터베이스 진단의 핵심원리


    27. 데이터 품질관리의 이해

     - 데이터 품질관리

     1) 데이터 값: 현상적인 값, 구조적인 값

     2) 데이터 구조: 각 단계별 데이터 구조, 각 조직 단위별 데이터 구조

     3) 데이터 관리 프로세스: 데이터 정의 프로세스, 변경 프로세스, 평가 프로세스


    28. 데이터베이스 전망과 DA/DBA/모델러의 전망



    정규화관련 기본사항


    - 비정규화 DB -> 데이터 중복 -> 갱신이상 유발 -> 데이터 무결성 손상

    - 중복데이터의 저장 최소화


    - 갱신이상

      1) 삭제이상: 삭제되지 않아야 할 데이터도 삭제, 

      2) 삽입이상: 입력이 불가능하거나 불필요한 정보까지 입력

      3) 수정이상: 반복된 데이터중 일부만 수정하여 데이터 불일치 발생


    - 함수적 종속성 (Functional Dependency)

      A -> B (A: Determinant 결정자, B: Dependent 종속자)

      A가 B를 결정한다. 결정자는 주어진 릴레이션에서 다른 속성을 고유하게 결정하는 속성들 

      

    'Architecture > DB_BigData_NoSQL' 카테고리의 다른 글

    SDEC 2011  (0) 2013.02.20
    NoSQL 관련정보  (0) 2012.11.04
    [도서]아는만큼보이는 데이터베이스설계와 구축  (0) 2012.05.20
    NoSQL관련 링크  (0) 2011.06.27

    댓글 0

Designed by Tistory.