loose
이로운 개발하기
loose
전체 방문자
오늘
어제
  • 전체 (207)
    • ☕ Java (24)
    • 📘 Effective Java (9)
    • 🍃 Spring (48)
    • 📖 ORM (9)
    • ☸️ Kubernetes (13)
    • 🐧 Linux (5)
    • 🐋 Docker (5)
    • 🛠️ CI & CD (7)
    • 🕸️ Web (6)
    • 🔗 Distributed System (3)
    • 📜 Js (10)
    • 📈 Database (11)
    • 🗂️ Etc (34)
    • 🧑 Chitchat (11)
    • 📒 문학 (11)
    • 👜 개인 공부 창고 (1)

공지사항

반응형

최근 글

최근 댓글

loose

이로운 개발하기

📈 Database

[DB] Json을 RDBMS(MySQL, PostgreSQL)에 저장해도 좋을까?

2024. 10. 2. 15:31
반응형

우선 키 밸류 형태의 값을 저장하기 위한 대표적인 저장소는 NoSQL입니다.

하지만 어떠한 데이터를 저장하느냐에 따라 MySQL을 이용해도 무방한 경우가 있는데 여러 사이트를 참고한 결과를 정리해보겠습니다.

아래의 조건을 다 통과한다면 RDBMS에서 사용해도 무방합니다.

RDBMS에 저장하기 위한 조건

1. 자주 업데이트 할 경우 성능에 영향을 끼친다.

 

예를 들어, 간단한 구조의 단순한 설정 데이터나 로그 데이터를 저장하는 경우, MySQL의 JSON 컬럼으로 충분할 수 있습니다.

 

2. 수정 과정이 일반 SQL보다 복잡하다.

 

3. 몽고 DB에 비해 집계 등 JSON에 대한 다양한 쿼리를 사용하기 어렵다.

 

4. 저장되는 Json이 크다면 속도 저하가 발생한다. (참고) 

얼추 수천글자를 저장하는 케이스가 빈번하게 생긴다면 그 자체로 성능 저하가 발생한다.

상대적으로 같은 Json의 크기여도 MongoDB는 BSON 형태로 2진 코드로 삽입해서 용량이 적다.

 

5. 저장하는 데이터 자체가 MongoDB보다 용량이 크다(BSON is a binary-encoded serialization format that is more compact than raw JSON)


6. 기존 시스템이 RDBNS인 경우 고려할 수 있다. 오히려 데이터베이스를 하나 더 늘리는 것은 트랜잭션을 일관성있게 보장하는 것이 어렵고 마이그레이션 작업도 더 까다로워진다.

결론 

MySQL이나 PostgreSQL나 다른 SQL 데이터베이스에서 적당한 크기의 JSON을 저장하고 검색하는 것에는 전혀 문제가 없습니다.

위 조건에 하나라도 부합하지 않는다면 NoSQL을 검토해볼 수 있겠습니다.

728x90

'📈 Database' 카테고리의 다른 글

[ElasticSearch] 검색 방식, 장애 복구 정리(Circuit Breaker Exception)  (0) 2025.03.29
[InnoDB Engine] 페이지란?  (0) 2024.09.12
MaxScale 지식  (0) 2024.07.19
[Mysql] No space left on Issue 해결  (0) 2024.06.10
ElasticSearch 8 Windows 설치  (0) 2024.02.22
    '📈 Database' 카테고리의 다른 글
    • [ElasticSearch] 검색 방식, 장애 복구 정리(Circuit Breaker Exception)
    • [InnoDB Engine] 페이지란?
    • MaxScale 지식
    • [Mysql] No space left on Issue 해결
    loose
    loose
    불만하는 사람은 90명, 해결하는 사람은 9명, 리드하는 사람은 1명 음악과 낭만을 좋아합니다.
    hELLO. 티스토리 스킨을 소개합니다.
    제일 위로

    티스토리툴바