인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박상원님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 DB 설계 입문/실전

DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지

db 컬럼에 JSON 박아도 되나요?

작성

·

71

0

학생들이 문제를 푸는 시스템을 만들고 있는데요.

문제 갯수도 시험마다 다르고, 각 문제마다 학생들이 저장하는 답변도 달라지니까 이게 관리가 어렵더라고요.

정규화로는 좀 어려운거 같은데.. 혹시 이런경우에 JSON 넣어도 되나요?

그리고 찾아보니까 Postgresql에서 JSON을 지원한다고 하는데 이거 써서 개발하는게 맞는 판단인지 궁금합니다.

혼자서 판단할수 있음 좋겠지만 이제 막 개발배워서 해보는거라 이게 맞는지 모르겠어요.

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 상원님! 좋은 고민 하고 계시네요:)

정규화로 데이터 관리가 어렵다면 JSON 형태로 데이터를 저장하셔도 괜찮습니다.

JSON 형태로 데이터를 저장한다는 건 정규화를 지키지 않는 방식이기 때문에

이걸 보고 '역정규화'라고 얘기를 하기도 합니다.

 

역정규화의 장단점에 대해서 한 번 찾아보시면서

JSON 형태로 데이터를 넣는 게 좋은 지 고민해보시면 좋을 것 같습니다!!

 

그리고 ChatGPT 답변의 내용도 괜찮은 것 같아서 같이 첨부드릴 수 있도록 할게요!

https://chatgpt.com/share/67bbd36a-fd60-8003-b9ca-929be5cb2c83

박상원님의 프로필 이미지
박상원
질문자

오 대단히 감사합니다. 역정규화도 한번 경험해본다 생각하고 일단 써보겠습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 박상원님께서 질문하신 내용은 데이터베이스 설계에서 흔히 접하게 되는 딜레마입니다. 특정 데이터 구조를 다루기 복잡할 때 JSON 형식을 데이터베이스 내에 저장하는 게 좋은 방법일 수 있습니다.

  1. JSON 사용의 장점:

    • 유연성: 각 시험마다 문제의 수나 형태가 달라도, JSON을 사용하면 해당 데이터를 쉽게 기록하고 유지할 수 있습니다.
    • PostgreSQL의 JSON 지원: PostgreSQL은 JSONB라는 이진화된 JSON 형식을 제공하여, 구조화된 쿼리와 인덱싱을 통해 JSON 데이터를 보다 효율적으로 다룰 수 있게 합니다.
  2. 주의사항:

    • 복잡성 증가: JSON을 사용하면서 비정규화된 데이터가 될 가능성이 있으므로, 이런 데이터에 대한 명확한 인덱싱 전략과 적절한 데이터 접근 방식을 고민해야 합니다.
    • 쿼리의 복잡성: JSON 데이터를 쿼리하는 것은 평범한 관계형 데이터보다 상대적으로 더 복잡할 수 있습니다. 따라서, 필요한 인덱스를 미리 준비해 빠른 쿼리가 가능하도록 하는 방안을 고려해야 합니다.

PostgreSQL에서 JSON을 사용하는 것이 문제 해결의 한 방법일 수 있지만, 데이터의 특성과 애플리케이션 요구사항에 맞는지를 반드시 확인해야 합니다. 이전 질문 및 답변을 참고하시길 바랍니다:

이 링크들을 통해 JSON의 사용 여부가 현재 시스템에 적합한지 확인할 수 있으며 더 깊은 이해를 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.