2011/10/13

ファイルデータをDBに格納するか、ディレクトリに保存するか

BLOB型を使ってDBにファイルデータを格納するか、
それともファイル自体はディレクトリに保存して、ファイルパスだけDBに格納するか。


結論:

よっぽどでなければ、ファイルデータはDBに持ちたくない。


※でも、DBへのデータ保存もしくはディレクトリへの画像保存が失敗したときの

エラー処理を書いているときはどうしても面倒くさくて心折れそうになるけど…


DBに格納する場合のメリット

  • データとファイルがペアのデータの場合などに、トランザクションが使える。
  • データ&ファイルと一元管理できる

DBに格納する場合のデメリット

  • DB容量が増加する(→バックアップに時間がかかるようになる)
  • DBがやる仕事が増える(staticなファイルデータをあえてDBに持つ必要があるか)
  • ファイルデータの容量に応じて、DBからのデータ転送量、転送時間がかかる
  • BLOB型のデータ上限がある(MySQLのLONGBLOBで最大長4G)


ディレクトリに格納する場合のメリット

  • rsyncなどで簡単にバックアップが可能
  • 大抵webサーバへのアクセス増加に伴い、静的/動的コンテンツを別サーバにという流れになる


ディレクトリに格納する場合のデメリット

  • トランザクションが使えない
  • 一元管理できない


DBに格納する場合のデメリットがあまりに大きすぎる…

0 件のコメント:

コメントを投稿