정규화란 중복을 제거하고, 한 곳에서만 데이터를 관리하겠다는 것!
쓰기의 이점을 얻기 위해 조회 성능을 낮춘것
읽을때는 항상 원본 데이터를 참고해야하는 단점이 있음.
정규화
1. 중복을 제거하고 한 곳에서 관리
2. 데이터 정합성 유지가 쉬움
3. 읽기시 참조 발생
반정규화(비)
1. 중복을 의도적으로 허용
2. 데이터 정합성 유지가 어려움
3. 참조없이 읽기 가능
정규화시 고려해야 하는 것
- 얼마나 빠르게 데이터의 최신성을 보장해야 하는가?
- 히스토리성 데이터는 오히려 정규화를 하지 않아야 함
- 데이터 변경 주기와 조회 주기는 어떻게 되는지?
- 객체 탐색 깊이가 얼마나 깊은지?
정규화를 하기로 했다면 읽기시 데이터를 어떻게 가져올 것인가?
- 테이블 조인을 많이 활용하는데, 이건 사실 고민해볼 문제임!
- 테이블 조인은 서로 다른 테이블의 결합도를 엄청나게 높임!
- 조회시에는 성능이 좋은 별도 데이터베이스나 캐싱등 다양한 최적화 기법을 이용할 수 있음.
- 조인을 사용하게 되면, 이런 기법들을 사용하는데 제한이 있거나 더 많은 리소스가 들 수 있음.
- 읽기 쿼리 한번 더 발생되는 것은 그렇게 큰 부담이 아닐 수도 있음.