Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

LOB 데이터 타입이란 무엇일까요? JDBC에서 LOB 데이터 타입 사용 시 알아야 할 제한 사항 총정리

LOB(Large Object) 데이터 타입 개요

데이터베이스에서 대용량 데이터를 저장해야 할 때 사용하는 것이 바로 LOB(Large Object) 데이터 타입입니다. LOB는 크게 두 가지로 나뉩니다.

BLOB(Binary Large Object)

BLOB는 바이너리 대형 객체를 의미하며, 최대 65,535바이트(문자)까지 가변 길이의 데이터를 저장할 수 있습니다. 주로 이미지, 오디오, 비디오 등 다양한 형태의 바이너리 파일을 저장하는 데 활용됩니다.

CLOB(Character Large Object)

CLOB는 문자 대형 객체를 뜻하며, SQL에서 기본으로 제공되는 내장 데이터 타입입니다. 대량의 텍스트 데이터를 저장할 때 사용되며, 최대 2,147,483,647자(약 21억 자)까지 저장할 수 있습니다.

이처럼 BLOB과 CLOB을 합쳐서 LOB(Large Object) 데이터 타입이라고 부릅니다. 하지만 강력한 저장 기능만큼이나 몇 가지 중요한 제한 사항이 존재합니다.

JDBC에서 LOB 데이터 타입의 제한 사항

  • 비교 연산 불가: CLOB 또는 BLOB 데이터 타입은 서로 비교할 수 없습니다. 즉, =(같음)나 !=(같지 않음) 같은 비교 연산자를 사용할 수 없습니다.
  • 정렬 불가능: BLOB 또는 CLOB 값 간에 대소 관계를 판단할 수 없습니다. 따라서 <, <=, >, >= 연산자를 사용해 어떤 값이 더 크거나 작은지 정렬하는 것이 불가능합니다.
  • 기본 키 및 인덱스 사용 불가: LOB 데이터 타입은 기본 키(primary key)나 인덱스(index) 값으로 사용할 수 없습니다.
  • DISTINCT, GROUP BY, ORDER BY 절 사용 불가: BLOB 또는 CLOB 데이터 타입에 대해 DISTINCT, GROUP BY, ORDER BY와 같은 절을 사용하는 것은 허용되지 않습니다.
  • 암시적 형 변환 불가: BLOB 또는 CLOB을 다른 데이터 타입으로 암시적(자동)으로 변환하는 것은 불가능합니다.

마무리

LOB 데이터 타입은 이미지, 문서, 대용량 텍스트 등 방대한 데이터를 저장하는 데 필수적인 도구입니다. 다만 비교, 정렬, 인덱싱과 같은 일반적인 SQL 연산에는 제약이 있으므로, 설계 단계에서 이러한 특성을 충분히 고려하여 적절히 활용하는 것이 중요합니다.