2009-04-16 9 views
6

テキスト付きの列を持つ1つのテーブルに基づいてアプリケーションを構築しています。時折、隣接する列に画像があります。このイメージをBLOBとしてSQLiteに格納する方が良いですか、それをファイルシステムに保存して、自分のプログラムから参照する必要があります。 ありがとう!SQLITE画像用ブロブORファイルシステム

+0

明確にするために - これはiPhoneアプリ向けですが、正しいですか? – AnonJr

答えて

2

EDIT:

didntはあなたが特にiPhoneの環境のために意味を実現。その場合は、DBを使用するだけで、すべてのコンテンツを1か所にまとめることが簡単になります。あなたのiPhoneはサーバーや何かに使われるようなものではないので、スケーラビリティについて心配する必要はありません。

オリジナルの応答:

は、私はこれをバックアップするすべてのリンクを持っていけないが、私は「カットオフ」ブロブ効率のための1メガバイトであるいくつかの研究で読んで思い出してください。しかし、これは十分に速いディスクアレイで最大10 MBまで移動できます。完全にシステムに依存します。

基本的に、効率的なカットオフが与えられていると、それより小さいデータはDBによって処理され、大きいものはDBにインデックスされ、ファイルキャッシュに残ります。

+0

彼はiphoneを使っているので、ディスク自体はアップグレードできません。 – Kevlar

+0

ああ、その部分を見ていませんでした。 –

1

本当にアプリケーションによって異なります。画像をデータベースに保存すると、失われた可能性のある別々のファイルに保存するのではなく、一箇所で簡単にアクセスできるようになります。一方、大規模な多くの画像は、SQLiteデータベースにはあまりにも多くの画像を表示する可能性があります。あなたの状況で私はデータベース内でそれらを参照するだけです。

3

ファイルを使用すると、長期的に問題が少なくなります。縮尺通りにデータベースサーバからたくさんのファイルを提供したくない場合は、

+1

ファイルを使用すると、画像を効率的に読み込みやすくなります。あなたが[UIImage imageNamed:@ "blah.png"]を使用すると、必要なときにイメージを腐敗RAMにロードし、ファイルからロード/アンロードします(つまり、それが見えなくなってメモリが逼迫している場合、再度表示可能になったときにリロードされます) – Gabe

+0

うわー... APIは抽象型ではなくファイルシステムに結合されていますか? ... –

2

UIImageはイメージファイルをキャッシュできるので、イメージをファイルシステムに保存したいと思います。&必要に応じて自動的にメモリからダンプします。 UIImageに読み込まれた画像ファイルを変更したり削除したりしないように気をつけてください。そうしないと、クラッシュや奇妙なバグが発生します。

3

あなたが使用しようとしている画像が非常に大きくないと仮定して、それらの莫大な数はないと私はデータベースに行くでしょう。

私は現在、いくつかの異なるWindows MobileおよびWinCEデバイスでSqliteデータベースを使用していますが、1万を超える小さなイメージがブロブとして保存されています。

私は、ファイルベースの画像読み込みを使用して同じハードウェア上で実行されている私たちのソフトウェアに似たソフトウェアを見てきました。もちろん、これはWinCEと異なるソフトウェア上にあったので、これは最良のテストではありません。

私は単一のデータベースが多くのイメージファイルよりもはるかに簡単に作業することがわかります。

関連する問題