Angenommen, ich entwickle eine mobile App wie Instagram. Benutzer können Bilder vom Server herunterladen und eigene Bilder hochladen. Derzeit speichert der Server alle Bilder (in Wirklichkeit nur kleine Thumbnails) in einer MySQL-Datenbank als BLOBs. Es scheint, dass die gebräuchlichste Methode zum Übertragen von Bildern die Base64-Kodierung ist, die mir zwei Möglichkeiten gibt:MySQL - Base64 vs BLOB
Option # 1 erfordert deutlich mehr Verarbeitung auf dem Server, da Bilder mit jeder einzelnen Anfrage codiert/decodiert werden müssen. Dies führt mich zu Option 2, aber einige Untersuchungen haben ergeben, dass das Speichern der Base64-Zeichenfolge in MySQL viel weniger effizient ist als das Speichern des Abbilds direkt als BLOB, und im Allgemeinen wird davon abgeraten.
Ich bin sicherlich nicht die erste Person, die auf diese Situation trifft, also hat jemand Vorschläge für den besten Weg, um dies zu arbeiten?
Option # 3 ist keine Bilder in der Datenbank an erster Stelle. Sie haben ein System dafür: Das Dateisystem. – tadman
Ich begann mit dem Speichern von Dateipfaden, aber einige Nachforschungen zu den neuesten Versionen von MySQL haben ergeben, dass es tatsächlich effizienter ist, kleine Dateien (unter 1 oder 2 MB) als BLOBs zu speichern. Meine Bilder sind nur ein paar kb, so dass es viel einfacher ist, diesen Weg zu pflegen. – hundley
Eine Datenbank voller BLOBs zu sichern ist ein absoluter Albtraum. Es ist teuer, diese zu replizieren, teuer, um sie zu unterstützen, extrem schmerzhaft, um sie wiederherzustellen, und quälend, sie aufzuteilen, wenn sie zu groß werden. Wenn Sie nicht mit unwichtigen Datenmengen zu tun haben, wird dies Sie irgendwann in die Luft jagen. Dateien auf der Festplatte können leicht mit etwas so rudimentär wie 'rsync' repliziert werden. Gleiches gilt nicht für MySQL. – tadman