JSON Field의 장단점 (vs 외래키 테이블 구성)
Json Field 장점
- 추가 적인 테이블 관리가 필요 없음 (테이블 간 추가 Join 필요 X)
- 생성/수정시 값에 대해 Dictionary를 교체하는 식으로 쉽게 가능
- Validation이 큰 상관이 없는 경우 / 정적인 값 경우 사용하기 좋음
- JSON Field만 가지고 추가 쿼리 가능
Json Field 단점
- 난독화 발생 우려
- JSON 내 관계형 값이 변할시 값을 업데이트 하기 힘듬
- JSON 값에 대한 Validation을 하기가 힘듬 (값 검증시 내부 값들의 type 까지 검증 필요)
- DB 테이블 트랜잭션 분산 가능
- RDB가 JOIN이 잘되어 있으면 성능적으로 큰 이점은 없음
JSON Field의 장단점
사례 1. Article - Comment 관계
- Article Table 내 comment 라는 Json Field 운용
- 특정 댓글의 수정/삭제시 등 컨트롤 하기 힘들고, Article 변경 or Comment 변경 모두 한 Table을 업데이트해야 함
- Create/Update가 비교적 빈번할 수 있으므로, ForeignKey가 적절
사례 2. Article에 임시 저장 기능 구현
- Article에 임시 저장 기능 구현시 temp 라는 JSON Field 운용
- 임시 저장 필드에 대해서 값 validation이 필요 없음 (서비스에 따라 다를 수 있음)
- 임시 저장 내용이 빈번하게 생성/수정 되더라도 둘다 Field에 초기화 하면 되므로 구현에 용이
- 수정에 대한 부담이 없어 JsonField 적절
사례 3. Article - Comment (수정 없음) 관계
- Article Table 내 Comment 라는 Json Field 운용
- 특정 데이터의 수정/삭제시 컨트롤 필요 X
- 수정에 대한 부담이 없어 JsonField 적절
결론 - JSON Field 선택 기준
1. Validation 항목이 적을 때
2. 외부 테이블 수정시 해당 Field 수정이 필요 없을 때 (다른 테이블과의 관계가 없을 때)
3. Join이 부담스러울 때
'소프트웨어 개발자 > 좋은 API, DB 설계하기' 카테고리의 다른 글
[좋은 API 설계하기] 조회 한 데이터 없음 - 상태코드 200? (0) | 2024.01.31 |
---|---|
[좋은 API 설계하기] 응답 Schema 의 Null 값 처리 (0) | 2024.01.31 |
[좋은 API 설계하기] 한 페이지에 API 몇개? (0) | 2024.01.30 |
[좋은 API 설계하기] Query Parameter (쿼리파라미터) (0) | 2024.01.30 |
[좋은 API 설계하기] 기타 (0) | 2023.05.29 |