작성
·
13
0
안녕하세요, 강의 잘 듣고 있습니다.
좋은 강의 만들어주셔서 감사합니다!
강의에서 JSON 타입을 활용하는 부분이 인상 깊어서, 이를 실무 API 배치 작업에도 적용할 수 있겠다고 생각했습니다.
현재는 API 호출 비용 절감을 위해 응답 데이터를 저장하고 있습니다.
그런데 외부 API는 언제든 스펙이 변경될 수 있어서, '원본 응답을 그냥 JSON 형태 그대로 저장하는 게 낫지 않을까'라는 생각이 들었습니다.
다만 저희는 MySQL을 사용하고 있어서, PostgreSQL의 Materialized View 같은 기능을 직접 활용할 수 없습니다.
대신 MySQL에서 JSON 컬럼을 효율적으로 활용하면서도 백오피스 조회 성능을 보장할 수 있는 방법이 궁금합니다.
예를 들어,
JSON 컬럼에 데이터를 저장하면서,
자주 조회하는 필드는 생성 컬럼을 두고 인덱스를 적용하는 방식이 일반적인지,
아니면 JSON은 단순 보존용으로만 두고, 정규화된 별도 테이블을 함께 운영하는 것이 나은지,
또는 다른 고성능 패턴이 있는지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
새림님, 질문 주셔서 감사합니다.
MySQL에서 JSON 타입을 효율적으로 활용할 때 몇 가지 고려할 점이 있습니다.
JSON 컬럼과 인덱스: MySQL에서는 JSON 컬럼 내의 특정 키를 사용하여 인덱스를 생성할 수 있습니다. 자주 조회되는 JSON 필드가 있다면, 해당 필드에 대해 생성 컬럼(computed column)을 만들고 인덱스를 적용하는 방법이 일반적입니다. 이렇게 하면 성능을 향상시킬 수 있습니다.
정규화된 테이블과 JSON: JSON은 스키마에 제한이 없어 유연성을 제공하지만, 데이터 무결성과 조회 성능 측면에서 정규화된 테이블이 더 유리할 수 있습니다. 따라서, JSON은 원본 응답 보존용으로 활용하고, 자주 사용하는 데이터는 정규화된 별도 테이블에 저장하여 관리하는 것도 하나의 방법입니다.
고성능 패턴: MySQL 5.7 이상에서는 JSON 타입을 지원하며, JSON 함수를 사용하여 데이터 변환 및 처리에 도움을 줄 수 있습니다. 또한, 데이터 변경이 적고 읽기 성능이 중요하다면, 직접 인덱스를 적용하여 성능을 튜닝할 수 있습니다.
최적의 선택은 실제 상황에 따라 달라질 수 있으며, API 호출 빈도와 데이터 구조에 따라 다른 방식들을 테스트해 보는 것이 가장 좋은 방법일 수 있습니다.
도움이 되셨기를 바랍니다. 추가적인 질문이 있다면 언제든지 문의해 주세요!
MySQL JSON 활용 관련 문서도 참고하시면 많은 도움이 될 것입니다.