DB 설계 방법론 기초

·2022년 6월 21일
0
post-thumbnail

목적에 따른 DB 설계 요구사항

안정적이고 영속적인 데이터 저장

  • ACID특성을 가져야 한다
    • Atomicity
      • 모든 작업이 반영되거나 모두 롤백되는 특성
    • Consistency
      • 데이터가 미리 정의된 규칙에 따라 일관적으로 수정되고 저장되어야 한다
    • Isolation
      • 서로 다른 작업이 서로에게 영향을 주어서는 안된다
    • Durability
      • 성공적으로 수행된 작업은 영원히 반영되어야 한다
  • 저장된 데이터를 신뢰할 수 있고 보존되어야 한다.
  • OLTP를 위한 설계이다
  • RDB가 적합하다
  • 정규화된 데이터 테이블이 권장된다

분석을 위한 데이터

  • BI를 위한 데이터 분석 및 AI를 위한 추출 데이터를 저장하기 위함
  • 테이블이 아닌 분석하고자 하는 정보를 단위로 저장한다
  • OLAP를 위한 설계이다

빠른 Read성능을 위한 DB

  • 웹 서비스의 대부분은 DB에 대한 read작업이고, 부하를 분산하기 위한 차원이다.
  • 안정적이고 신뢰할 수 있는 DB가 존재하는 경우 CQRS패턴에서 쿼리만을 위한 DB라고 할 수 있다.
  • NoSQL을 사용해도 괜찮고, Read Replica를 이용하거나, In-memory DB인 Redis를 이용해 설계할 수 있다.
  • 기존의 정규화된 DB를 read하기 위해 과도한 join이 DB의 성능을 저하시키는 경우, 반정규화를 고려할 수 있다.

정규화 예시

  • 테이블의 칼럼이 원자값을 가지도록 테이블을 분해한다.
    • {이름: 추신수, 취미: 영화, 음악} -> [{이름: 추신수, 취미: 영화}, {이름: 추신수, 취미: 음악}]
  • 칼럼들의 부분 집합이 다른 칼럼을 결정해서는 안된다.
    • {학생, 강의실, 강좌명}이 아니라 {학생, 강좌명}, {강좌명, 강의실}로 분리한다.
profile
Ben

0개의 댓글