효율적인 JSON 저장을 위한 데이터베이스 정규형 이해하기

2025. 1. 9. 09:57개발/개발 필기

반응형

데이터베이스에서 텍스트를 저장할 때, 우리는 다양한 옵션을 고려해야 합니다.

 

TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT와 같이

각각의 타입은 저장할 수 있는 데이터의 크기에 따라 다르게 설정되어 있습니다.

 

많이들 이러한 숫자를 간과하기 쉬운데,

실제로는 데이터 관리의 기초에서 매우 중요한 요소입니다.

 


텍스트 타입의 구분:

  • TINYTEXT: 최대 256바이트의 작은 데이터에 적합합니다.
  • TEXT: 65,535바이트, 주로 일반적인 텍스트 정보에 사용됩니다.
  • MEDIUMTEXT: 16MB까지 허용되며, 대량의 텍스트 데이터를 저장할 수 있습니다.
  • LONGTEXT: 무려 4GB까지 저장 가능하여, 대량의 문서나 긴 문자열을 효과적으로 관리합니다.

저의 경험을 통해 한 가지 흥미로운 사례를 공유하고자 합니다.

 

처음에는 JSON 형식의 데이터를 TEXT 타입으로 저장했습니다.

그러나 데이터를 쌓다 보니, 예상치 못한 결과에 직면했습니다.

 

길이가 긴 JSON 데이터는 중간에 잘려버리는 일이 발생한 것입니다.

그렇게 결국 MEDIUMTEXT로 변경했더니, 데이터는 모두 안정적으로 저장되었습니다.

 

처음에는 50개, 100개, 200개 정도의 데이터까지는 별 문제가 없었습니다.

 

하지만 데이터가 쌓이면서 느끼는 속도 저하는 점점 심각해졌습니다.

 

예상 원인:

  1. 메모리 사용: 데이터가 많은 경우, 메모리의 부담이 커져 성능 저하를 초래합니다.
  2. I/O 작업: 디스크에서 데이터를 읽고 쓰는 속도가 느려지면 전체 애플리케이션의 반응성이 떨어집니다.
  3. 네트워크 대역폭: 서버와 클라이언트 간의 데이터 전송 과정에서 속도 저하가 발생할 수 있습니다.

 

이 모든 사실은 데이터가 클수록 가져오는 속도가 느려진다는 점을 강조합니다.

 

그 결과, 저장하고자 했던 JSON 데이터들이 무겁게 느껴지기 시작했고,

마침내 필요하지 않은 데이터를 분리하여 저장하기로 결정했습니다.

 

속도를 유지하기 위해, 필수적인 데이터만 나누어 저장하고 기존의 MEDIUMTEXT 타입 사용도 고려했습니다.

 

이 과정에서 느끼는 것은 '마냥 간단하게 처리하려고 할 경우에 큰 문제에 직면할 수 있다'는 것이었습니다.

초반에는 단순한 데이터 저장이었지만, 점차 복잡해지면서 더욱 심도 있는 고민이 필요하다는 것을 깨달았습니다.

 

이뿐만 아니라, 이 과정은 정규형에 대해 다시 고민하게 해주었습니다.

데이터베이스 설계의 원칙인 정규형(Normalization)은 데이터의 중복을 최소화하고 무결성을 유지하는 데 중요한 역할을 합니다.

특히, 데이터의 크기가 커질수록 중복된 데이터를 줄이고,

필요에 따라 데이터를 나누어 구성하는 것이 효율적임을 깨닫게 되었습니다.

정규형을 적용하면 데이터베이스 구조가 명확해져 검색 성능을 향상시킬 수 있으며,

향후 데이터 관리가 훨씬 수월해집니다.

 

결국, 데이터 관리에서의 세심함과 계획이 얼마나 중요한지를 새삼 느끼게 되었습니다.

데이터의 양이 많아질수록, 적절한 저장 방식을 선택하고, 성능을 고려한 접근이 필요하다는 교훈을 얻게 된 것입니다.

 

이처럼 우리는 데이터의 크기뿐 아니라, 그 성능과 효율성을 모두 고려해야만 성공적인 데이터베이스 관리를 할 수 있습니다.

반응형