2016-08-04 47 views
0

Background InfoSpeichern sehr kleiner Audio-/Bilddateien in der SQLite-Datenbank über BLOBs?

Ich bin neu in Android Entwicklung und ich bin ein Android-App für meine Kunden zu schaffen, und ich versuche, eine große Menge von Audio- und Bilddateien zu speichern, den besten Ansatz, um herauszufinden, für meine App. Der Ansatz muss die folgenden Anforderungen erfüllen:

1) Nutzer der App dürfen ihre eigenen Bilder und Audiodateien zur App hinzufügen (die eine SQLite-Datenbank verwendet). Dies bedeutet potenziell, dass Tausende von Audio- und Bilddateien gespeichert werden, aber wiederum sind sie nicht größer als 0,35 mb und die meisten sind weniger als 0,1 mb. Die Benutzer werden wahrscheinlich eine Reihe von Dateien in der Größenordnung von mehreren Dutzend Bildern und einem Viertel der Audiodateien hochladen.

2) Erlauben Sie Benutzern, ihre lokalen Daten mit einer SQL-Datenbank auf einem Server zu synchronisieren, so dass die Bilder und Audiodateien (zusätzlich zu anderen Daten) von Benutzern der App hochgeladen, heruntergeladen und gelöscht werden können verschiedene Orte.

Ich bin mir bewusst, dass es fast immer vorzuziehen ist, die Dateipfade in einer SQLite-Datenbank zu speichern, anstatt die Dateien als BLOBS speichern, aber, wie es in diesen Fragen, BLOB vs. file path storage, Storing small BLOBs in a Database, gibt es einige Situationen, in denen die Speicherung Die Dateien direkt in der Datenbank sind besser geeignet, besonders wenn die Dateien sehr klein sind, wie in meiner App. Keine der Dateien in meiner App ist größer als 350 K/b.

Meine Frage ist, wenn es um sehr kleine Dateigrößen geht (keine meiner Bild-/Audiodateien überschreitet 350 k/b und die meisten sind im Bereich 0 bis 100 k/b), aber viele Dateien, wird gespeichert Bilder direkt als BLOBs statt als Dateipfade, die zu schwerwiegenden Leistungseinbrüchen (innerhalb weniger Minuten) führen, wenn Benutzer Dateien in die lokale SQLite-Datenbank hochladen müssen oder wenn Benutzer die lokale SQLite-Datenbank mit dem Remote-Server synchronisieren müssen?

Lange Installationszeiten für die App und die anfängliche Synchronisierung mit der entfernten Datenbank sind kein Problem, solange die Installation und Synchronisierung nicht unnötig lange dauert, sagen wir länger als 45 Minuten.

Antwort

1

Glauben Sie nicht alles, was eine zufällige Website Ihnen sagt.

In einigen tests for reading internal vs. external blobs, Blobs sind schneller für sehr kleine Dateigrößen (< 100 KB), und in jedem Fall ist der Unterschied nicht sehr groß für 300 KB-Dateien.

Das Schreiben von Blobs ist aufgrund des Transaktions-/Synchronisationsaufwands tendenziell weniger effizient als das Schreiben von Dateien.

Wie all das auf Ihr Android-Gerät übersetzt wird, müssen Sie selbst testen.

+0

Ich möchte nur nachverfolgen, dass dies eine gute Antwort war; Ich habe ein Speichersystem implementiert, das die relevanten Dateisysteme als BLOBs speichert. Für Systeme mit größeren Dateigrößen wäre das sicher nicht optimal, aber in meinem Fall war es wirklich die einzige verfügbare Option, da alles so dynamisch sein musste. Die App wurde bereitgestellt und meine Benutzer haben keine Probleme, die sich daraus ergeben. – VivaLebowski