2009-04-16 16 views
6

Ich bin eine Anwendung auf der Grundlage einer einzigen Tabelle mit einer Spalte mit Text erstellen. Gelegentlich wird eine benachbarte Spalte ein Bild haben. Ist es besser, dieses Image als BLOB in SQLITE zu speichern, oder sollte ich es im Dateisystem speichern und von meinen Programmen aus referenzieren? Danke!SQLITE Blob ODER Dateisystem für Bilder

+0

Nur zur Klarstellung - das ist für eine iPhone App, richtig? – AnonJr

Antwort

2

EDIT:

Didnt realisieren Sie speziell für das iPhone Umgebung gemeint. In diesem Fall würde ich die DB nur für die Einfachheit verwenden, alle Inhalte an einem Ort zu haben. Sie müssen sich nicht um die Skalierbarkeit kümmern, da es nicht so ist, als würde Ihr iPhone als Server oder irgendetwas verwendet werden.

Ursprüngliche Antwort:

ich nicht alle Links haben dies untermauern, aber ich erinnere mich in mehreren Studien zu lesen, dass die „abgeschnitten“ ist 1 MB für Blob-Effizienz. Aber das kann mit einem schnell genug Festplatten-Array bis zu 10 MB verschoben werden. Kommt auf das System an.

Also, im Grunde, angesichts Ihrer Effizienz Cutoff, alle Daten kleiner als das würde besser von der DB bedient werden, alles größere, nur Index in der DB und lassen Sie in einem Datei-Cache.

+0

Er benutzt das iPhone, daher ist die Festplatte selbst nicht aktualisierbar. – Kevlar

+0

ahh, habe diesen Teil nicht gesehen. –

1

Es hängt wirklich von Ihrer Anwendung ab. Wenn Sie die Bilder in einer Datenbank gespeichert haben, wird Ihnen das Leben leichter fallen, da Sie sie einfach in einem einzigen Punkt verfügbar haben, anstatt sie in separaten Dateien zu speichern, die möglicherweise fehlen. Auf der anderen Seite könnten viele Bilder, die ziemlich groß sind, zu viel für eine SQLITE-Datenbank sein. In Ihrer Situation würde ich nur auf sie in der Datenbank verweisen.

3

Dateien werden auf lange Sicht zu weniger Problemen führen. Sie wollen wirklich Tonnen von Dateien von Ihrem Datenbankserver nicht dienen, besonders wenn Sie

+1

Dateien erleichtern das effiziente Laden der Bilder. Wenn Sie [UIImage imageNamed: @ "blah.png"] verwenden, wird das Bild in den speicherbaren RAM geladen und nach Bedarf aus der Datei geladen/entladen (dh wenn es nicht mehr sichtbar ist und der Speicher knapp ist, wird es gelöscht und dann neu geladen, wenn es wieder sichtbar ist) – Gabe

+0

Wow ... also ist die API an das Dateisystem gekoppelt und kein abstrakter Typ? ... –

2

Ich mag, Bilder im Dateisystem zu halten, weil UIImage Bilddateien & zwischenspeichern können sie automatisch aus Speicher bei Bedarf automatisch. Sei aber vorsichtig, wenn du eine Image-Datei, die in einen UIImage geladen ist, nicht änderst oder löschst, oder du wirst Abstürze oder andere seltsame Bugs bekommen.

3

Angenommen, die Bilder, die Sie verwenden werden, sind nicht extrem groß und es gibt keine exorbitante Anzahl von ihnen, die ich mit der Datenbank gehen würde.

Ich verwende derzeit eine Sqlite-Datenbank auf verschiedenen Windows Mobile und WinCE-Geräten mit über 10.000 kleinen Bildern, die als Blobs gespeichert sind und es funktioniert großartig.

Ich habe Software ähnlich zu unserer auf der gleichen Hardware mit Datei-basierten Bild geladen laufen gesehen und es war deutlich langsamer. Natürlich war das bei WinCE und anderer Software, also ist das nicht der beste Test.

Ich finde die einzelne Datenbank ist viel einfacher zu arbeiten als viele Bilddateien.

Verwandte Themen