본문 바로가기

업무 중 알게 된 것들

실무 RDB 설계 중 고민들

ORDER를 표현하는 방법

  1. 컬럼으로 표현하는 방법
    1. 장점
      1. ORDER를 계산할 필요 없이 바로바로 조회 가능
    2. 단점
      1. item 하나의 ORDER가 바뀔때마다 그 뒤의 item 모두를 update 해줘야함
  2. NEXT를 찍어서 표현하는 방법
    1. 장점
      1. 트리구조를 표현하려면 이 방법밖에 없음.
    2. 단점
      1. 개별 item마다 item id만 가지고 ORDER를 뿌려줘야 할 때가 있으면 비추.
      2. item의 ORDER를 항상 head부터 계산해야 한다는 단점이 있음.

TABLE vs JSON으로 관리할 것인지

  1. TABLE로 관리하기
    1. 장점
      1. 데이터를 프로부터 받을 때 속성 단위로 세세하게 null check 가능
      2. 백이나 프가 데이터를 계산할 일이 있을 때 파싱할 필요 없음
    2. 단점
      1. 속성이 복잡 다단한 경우 테이블이 매우 많이 필요함
      2. 여러 테이블에 걸쳐 있는 데이터한꺼번에 조회시 SELECT SQL의 조인 횟수가 늘어남 (성능 저하)
  2. JSON으로 관리하기
    1. 장점
      1. String으로 취급하니 테이블 조인없이 간단히 컬럼 select로 조회 가능
      2. 사용자의 자유도가 높아서 데이터를 테이블화 하기 불가능한 경우에 이 방법밖에 없음
      3. 예를 들어 문제스튜디오의 문제나 해설의 경우 사용자가 보기, 선택지, 텍스트, 이미지 등을 어떤 순서로 어떻게 저장할지 정의할 수 없으므로 도큐먼트형 데이터 저장이 불가피함
    2. 단점
      1. 어쨌든 데이터를 통으로 주고 받으니 프/백에서 파싱해야함.