BLOB 이용한 멀티미디어 저장

2024. 6. 19. 22:58Java/Spring

BLOB (Binary Large Object)

  • BLOB(대용량 바이너리 객체, Binary Large Object)은 대량의 이진 데이터를 저장하고 처리하는 데 사용되는 데이터 유형입니다.
  • 데이터베이스에서 사용되며, 이미지, 비디오, 오디오 파일, 문서, 애플리케이션 데이터 등 다양한 형태의 대용량 바이너리 데이터를 포함할 수 있습니다.

 

BLOB의 특징

 

  • 대용량 데이터 저장:
    • 텍스트, 이미지, 비디오, 오디오 파일 등 다양한 유형의 대용량 데이터를 저장할 수 있습니다.
    • 데이터베이스에서 BLOB 필드는 수백 메가바이트에서 기가바이트에 이르는 데이터를 저장할 수 있습니다.
  • 이진 데이터 지원:
    • BLOB은 순수한 이진 데이터를 저장하므로, 데이터의 형식을 유지하면서 손실 없이 저장할 수 있습니다.
    • 텍스트 데이터뿐만 아니라 이미지나 비디오 등의 복잡한 데이터 형식을 저장할 수 있습니다.
  • 데이터베이스 관리 시스템(DBMS) 지원:
    • 대부분의 주요 DBMS는 BLOB 유형을 지원하며, 이를 통해 다양한 애플리케이션에서 대용량 데이터를 효과적으로 관리할 수 있습니다.
  • 전송 및 처리:
    • BLOB 데이터는 일반적인 쿼리를 통해 데이터베이스에 삽입, 수정, 삭제, 조회할 수 있습니다.
    • 하지만 BLOB 데이터를 다룰 때는 일반 텍스트 데이터보다 더 많은 리소스를 소모하므로 성능에 주의해야 합니다.

 

BLOB의 예시

 

  • 이미지 저장:
    • 웹 애플리케이션에서 사용자 프로필 사진이나 제품 이미지를 데이터베이스에 저장할 때 BLOB 필드를 사용합니다.
  • 문서 관리:
    • 회사의 문서 관리 시스템에서 PDF, Word, Excel 파일 등을 데이터베이스에 저장하고 검색하는 데 BLOB을 사용합니다.
  • 비디오 및 오디오 데이터:
    • 스트리밍 서비스에서 동영상 클립이나 오디오 파일을 저장하고 제공할 때 BLOB을 사용합니다.
  • 애플리케이션 데이터:
    • 복잡한 이진 데이터 형식을 저장해야 하는 애플리케이션, 예를 들어 게임의 저장 파일이나 사용자 설정 데이터를 BLOB에 저장합니다.

BLOB의 예제

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'com.h2database:h2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

 

 

@Entity

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    private String email;

    @Lob
    @Column(columnDefinition="BLOB") // MySQL의 경우 작은 크기의 BLOB
    private byte[] profilePicture;	// 최대 크기: 255 bytes

    @Lob
    @Column(columnDefinition="MEDIUMBLOB") // MySQL의 경우 중간 크기의 BLOB
    private byte[] profilePicture;	// 최대 크기: 16 MB (16,777,215 bytes)
    
        @Lob
    @Column(columnDefinition="LONGBLOB") // MySQL의 경우 큰 크기의 BLOB
    private byte[] profilePicture;	// 최대 크기: 4 GB (4,294,967,295 bytes)

 

'Java > Spring' 카테고리의 다른 글

@Transactional  (0) 2024.06.24
Entity 맵핑 @어노테이션  (0) 2024.06.19
싱글톤(Singleton) 패턴의 개념 및 사용  (0) 2024.06.18
AOP의 계념 및 사용법  (0) 2024.06.18
Refresh Token, Access Token의 개념 및 동작  (0) 2024.06.03