Physical Database Design(2)
Denormalization
- nomarlization 되어있는 relation을 non-normalization
- Benefits
- 조회되는 테이블의 개수를 줄여서 성능을 향상시킴
- Costs(데이터 중복에 의한)
- 저장공간의 낭비
- Data integrity, consistency에 위협
- 일반적인 denormalization가 필요할 때(그냥 합침)
- one-to-one일 경우에는 양쪽이 1대1이므로 합쳐도 무방
- many-to-many일 경우에 새로운 table이 있고 non-key attribute를 가지고 있을 경우에는 합칠 수 있음
- one-to-many일 때는 reference data이므로
Partitioning
- Horizontal Partitioning
- 몇개의 서로 다른 파일로 테이블의 row들을 자름
- Types
- Key Range Partitioning
- Hash Partitioning
- List Partitioning
- Vertical Partitioning
- 몇개의 서로 다른 relation으로 테이블의 column들을 자름
- Combinations of Horizontal and Vertical
--> 자르는 이유는 테이블을 조회하는데 속도를 높여 성능을 향상시키기 위해
Advantages of Partitioning
- Efficiency: 같이 사용되어지는 레코드들을 하나로 묶음
- Local optimization: 각각의 partition은 성능을 위해 최적화 될 수 있음
- Security: 관련없는 유저의 데이터들은 분리됨
- Recovery and uptime: partition으로 쪼개놓았기 때문에 한 partition에 문제가 생겨도 서로 영향X
- Load balancing: 다른 디스크에 저장되어있는 partition들은 contention을 줄임
Disadvantages of Partitioning
- Inconsistent access speed: 여러 개로 쪼갰기 때문에 꺼내서 사용하는데 오래걸림
- Complexity: 복잡한 메커니즘
- Extra space or update time: 많은 partition들로부터 접근해서 중복된 데이터
Horizontal Partitioning
- Range Partitioning
- field value들의 범위에 의해 partition들이 정의됨
- 불균등한 row들의 분배를 야기할 수 있음
- Like-valued field들은 partion들에 공유됨
- Hash Partitioning
- hash function에 의해 partition들이 정의됨
- 균등한 row들의 분배를 보장함
- partition들은 넓은 범위의 값들을 가질 수 있는 value field들을 포함
- 각각의 partition들에 동일한 데이터를 로딩하는게 중요하다면 hash parition을 사용하는 것이 좋음
- List Partitioning
- partitioning key에 맞는 값들의 list들을 미리 정해놓음으로써 정의됨
- Composite Partitioning
File Organizations
- Secondary storage에 file records들을 저장하는 기술
- File Organization의 선택 요소들
- Fast data retrival and throughput
- Efficient storage space utilization
- Protection from failure and data loss
- Minimizing need for recognization
- Accommodation growth
- Security from unauthorized use
- File Organization 종류
- Sequential
- PK의 필드 값을 가지고 순차적으로 집어넣는 것
- 데이터베이스의 백업 데이터를 가지고 있는 용도
- Indexed
- 각각의 record들을 소프트웨어가 위치시키는 것을 도와주는 index를 가지고 sequentially 또는 nonsequentially인 record들의 저장하는 용도
- PK는 자동으로 index됨
- 다른 field들 또는 field들의 조합들은 또한 index될 수 있음 -> secondary key index라고 부름
- Hash