BLOBとは

BLOBは、データベースにおいて、画像ファイル、音声ファイル、動画ファイルなどのバイナリデータをそのまま格納するために使用されるデータ型のことであり、ファイルの内容を解釈せず、単なるバイト列(Binary Large Object)として扱い、データベースのレコードに直接関連付けられた形で格納するためのデータ形式のことです。

BLOBの概要とデータ格納の特性

BLOB(Binary Large Object、バイナリラージオブジェクト)は、リレーショナルデータベース(RDB)がテキストや数値といった構造化データだけでなく、非構造化データや大きなメディアファイルを扱うために設けられたデータ型です。

データベースにおけるデータ型は通常、格納できるデータの種類(整数、日付、文字列など)や最大サイズが厳密に定義されていますが、BLOB型は、その値がバイナリデータ(0と1の連続)であれば、内容や形式(JPEG、MP3、PDFなど)に関係なく格納することができます。

データベースシステムは、このBLOBデータの内容について、特別な解釈や処理(例:ソート、インデックス付け)を行いません。

主な目的は、外部ストレージ(ファイルシステム)とデータベースレコードを別々に管理する際の複雑さや、参照整合性の問題を避け、ファイルデータを論理的なレコードと一元的に管理することです。

BLOB型の種類とサイズ

BLOB型は、格納できる最大サイズに応じていくつかのサブタイプに分類されることが一般的です(具体的な名称やサイズはデータベース製品によって異なります)。

BLOBのサブタイプ(例)格納サイズ(目安)用途の例
TINYBLOB数十バイト〜数百バイト小さなアイコン画像など
BLOB数KB〜数十KB標準サイズの画像、サムネイルなど
MEDIUMBLOB数MB〜16MB程度標準的な文書ファイル、音声ファイルなど
LONGBLOB数GB以上高解像度の動画ファイル、大規模なバイナリデータなど
BLOB型の種類とサイズ

データベースによっては、テキスト形式の大きなデータを格納するためのCLOB(Character Large Object、キャラクタラージオブジェクト)という類似のデータ型も提供されています。CLOBは、文字コードを持つテキストデータを扱う点でBLOBと異なります。

BLOB利用におけるメリットとデメリット

メリット(利点)

  1. 参照整合性の保証: メディアファイルがデータベースのレコードと物理的に一緒に格納されるため、アプリケーションがレコードを削除すれば、関連するファイルデータも確実に削除されます。外部ファイルシステムとの間で発生しがちな「孤立ファイル(参照されないファイル)」の問題を防げます。
  2. トランザクション管理: BLOBデータを含めた全ての操作がデータベースのトランザクション管理下に置かれるため、データの整合性が高く保たれます。

デメリット(課題)

  1. データベースの肥大化: 大容量のファイルを多数格納すると、データベース自体のサイズが急激に大きくなり、バックアップやリストア、レプリケーション(複製)といった管理操作に時間がかかるようになります。
  2. 性能の低下: 大きなBLOBデータを持つレコードを頻繁に読み書きすると、データベースのページキャッシュやI/O性能が圧迫され、他のクエリの性能低下を引き起こす可能性があります。
  3. Web配信の非効率性: WebアプリケーションでBLOBに格納された画像を配信する場合、通常、アプリケーションサーバーを経由してデータベースからデータを読み出し、HTTPレスポンスとしてクライアントに送る必要があります。これは、静的なファイルをWebサーバーから直接配信するよりも効率が悪い場合があります。

これらの課題から、大容量のメディアファイルについては、S3などのオブジェクトストレージや専用のファイルサーバーに格納し、データベースにはそのファイルのURLまたはパスのみを格納するアプローチが、現代のWebサービスでは推奨される傾向にあります。

関連用語

データベース | 今更聞けないIT用語集
リレーショナルデータベース | 今更聞けないIT用語集
APPSWINGBYシステム開発

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。