2020.10.21 SQLD 준비 공부 정리.... ( 데이터 모델링부분 )


참고

 EA 기반의 전사적인 데이터 모델링을 전개할 때는 더 상위 수준인 개괄적인 데이터 모델링을 먼저 수행하고 이후에 업무 영역에 따른 개념적 데이터 모델링을 전개한다. 

 EA(Enterprise Architecture) 

정보화 추진의 일관성과 통합성 문제를 개선하기 위해 도입됬다. 

EA란 : 기관에서 정보화를 체계적으로 추진하기 위해 업무, 데이터, 응용 서비스, 정보 기술 등 정보화 구성 요소 및 이들 간의 상호 관계를 미리 정해 놓은 '정보화 종합 설계도' 

출처 :  http://m.korea.kr/expertWeb/resources/files/data/document_file/2010/EA_%EB%A6%AC%ED%94%8C%EB%A0%9B.pdf



데이터 모델링 

현실세계 개체  -> 개념적 데이터 모델링 -> 개념적 구조 -> 논리적 데이터 모델링 -> 논리적 구조 -> 물리적 데이터 모델링 -> 저장 데이터베이스 


대량 데이터 저장 및 처리 


테이블에 많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK 에 의해 테이블을 분할하는 방법을 적용할 수 있다. 

ORACLE의 경우 크게 LIST PARTITION ( 특정값 지정 ) , RANGE PARTITION(범위) , HASH OARTITION (해쉬 적용) , COMPOSITE PARTITION(범위와 해쉬가 보갑) 등이 가능하다. 


데이터량이 몇 천만 건을 넘어서면 아무리 서버사양이 훌륭하고 인덱스를 잘 생성해준다고 하더라도 SQL 문장의 성능이 나외 않는다. 이 때는 논리적으로는 하나의 테이블로 보이지만 물리적으로 여러 개의 테이블스페이스에 쪼개어 저장될 수 있는 구조의 파티셔닝을 적용하도록한다. 


1) RANGE PARTITION 적용

프로그램은 하나의 테이블에 접근하면 내부적으로 range 로 구분된 테이블에서 트랜잭션을 처리함 

요금데이터를 -> 12개의 월로 나눔 

DBMS 내부적으로는 SQL WHERE 절에 비교된 요금일자에 의해 각 파티션에 있는 정보를 찾아가므로 평균 1000만 건의 데이터가 있는 곳을 찾아도 되어 성능 개선 

Range partition 은 데이터 보관 주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능하므로 ( 파티션 테이블을 drop 하면 되므로 ) 데이터보관주기에 따른 테이블관리 용이 


2) LIST PARTITION 적용 

프로그램은 하나의 테이블에 접근하면 내부적으로 LIST 로 구분된 파티션테이블에서 트랜잭션을 처리함 

고객테이블 : 지역을 나타내는 사업소코드별로 LIST PARTITION 지역마다 사업소ㅗ코드 부여 

LIST PARTITION 은 대용량 데이터를 특정값에 따라 분리 저장할 수는 있으나 RANGE PARTITION 과 같이 데이터 보관주기에 따라 쉽게 삭제한느 기능은 제공될 수 없다. 


3) HASH PARTITION 적용

기타 HASH PARTITION 은 지정된 HASG 조건에 따라 해슁 알고리즘이 적용. 테이블이 분리되며 설계자는 테이블에 데이터가 정확하게 어떻게 들어가쓴지 알 수 없다. 역시 성능향상을 위해 사용하며 데이터 보관주기에 따라 쉽게 삭제하는 기능은 제공될 수 없다. 



결론 : 데이터량이 대용량이 되면 파티셔닝의 적용은 필수적으로 파티셔닝 기준을 나눌 수 있는 조건에 따라 적절한 파티셔닝을 방법을 선택하여 성능을 향상 시키도록 한다. 


테이블에 대한 수평분할/수직분할의 절차 


4가지 원칙 


1) 데이터 모델링을 완성한다.

2) 데이터베이스 용량산정을 한다. (어느 테이블에 데이터의 양이 대용량이 되는지 분석 ) 컬럼도 확인 컬럼수가 많은 경우 트랜잭션의 특성에 따라 테이블을 1: 1 형태로 분리할 수 있는지 점검 

3) 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다. 

4) 칼럼 단위로 집중화된 처리가 발생하는지, 로우단위로 집중화된 처리가 발생되는지 분석하여 집중화된 다뉘로 테이블을 분리하는 것을 검토한다. 


컬럼의 수가 적지만 데이터용량이 많아 성능저하가 예상이 되는 경우 테이블에 대해 파티셔닝 전략을 고려하도록 한다. 


슈퍼/서브 타입 변환기준 : 데이터의 양, 트랜잭션 유형 


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


테이블에 발생되는 트랜잭션의 조회 패턴에 따라 PK/FK 컬럼의 순서를 조정해야함 

PK는 해당 테이블의 데이터를 접근할 때 가장 빈번하게 사용되는 유일한 인덱스 유니크인덱스를 모두 자동 생성한다. PK 순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK 순서를 지정해야 한다.


결론 : PK의 순서를 인덱스 특징에 맞게 고려하지 않고 바로 그대로 생성하게 되면, 테이블에 접근하는 트랜잭션의 특징에 효율적이지 않은 인덱스가 생성되어 있으므로 인덱스의 범위를 넓게 이용하거나 FULL SCAN 을 유발하게 되어 성능이 저하된다고 정리 할 수 ㅆ다. 


물리적인 테이블에 FK 제약이 걸려있지 않을 경우 인덱스 미생성으로 성능 저하 


; 물리적인 테이블에 FK 제약 걸었을 떄는 반드시 FK 인덱스를 생성하도록 하고 FK 제약이 걸리지 않아을 경우에는 FK 인덱스를 생성하는 것을 기본 정책으로 하되 발생되는 트랜잭션에 의해 거의 활용되지 않았을 때에만 FK 인덱스를 지우는 방법으로 하는 것이 적절한 방법이 된다. 



분산 데이터 베이스 

분산데이터베이스는 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터 베이스 

분산 데이터베이스는 업무적인 기능이 다양해지고 데이터의 양이 기하급수적으로 증가하는 최근 데이터베이스 환경에서 적용하는 고급화된 기술이다. 업무적인 특징에 따라 분산 데이터베이스를 활용하는 기술이 필요하다. 

데이터 처리 성능 UP 








































댓글