BLOB 이용한 멀티미디어 저장
2024. 6. 19. 22:58ㆍJava/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 |