Wir verwenden MongoDB. In unserer Anwendung müssen wir mehrere Dateien pro Benutzer speichern. Unsere Anwendung wird auf AWS bereitgestellt. Ich dachte daran, eine der folgenden Optionen zu verwenden, um die Dateien zu speichern -
Welcher der oben genannten Ansätze ist besser? In Bezug auf Leistung, Skalierbarkeit? Welcher Ansatz wird besser skalierbar sein? Ich möchte auch CDN zum Zwischenspeichern der Dateien verwenden. Ich bevorzuge AWS S3, da ich CDN verwenden kann, um die Dateien zwischenzuspeichern, mein Speicher der Dateien wird DB-agnostisch sein. Auch Meine DB-Größe wird nicht wesentlich wachsen, wie ich die Dateien außerhalb der DB speichern.
Ich denke, die besten Optionen sind hier GridFS und S3; Ich würde selbst mit dem Letzten gehen. Schieben Sie die Datei auf S3 und speichern Sie den Bucket-Namen und den Dateischlüssel in Ihrem Mongo-Dokument. Es sei denn, Ihre Geschäftsanforderungen oder Abfrageanforderungen sind so, dass alle Daten in dem Dokument vorhanden sein müssen, ich denke, dies ist der beste Weg zu gehen.
Ich habe diese Lösung in der Produktion verwendet und sie skaliert sehr leicht. Die Auswirkungen auf Ihre Mongo-Sammlung sind gering und Sie müssen sich keine Gedanken darüber machen, große Datenmengen dort zu speichern. Bewahren Sie einfach den Schlüssel auf und lassen Sie S3 sich darum kümmern. Sie können sie später immer woanders speichern, da Ihr System ziemlich speicherunabhängig ist.
Zuerst verwende ich nur das lokale Dateisystem im Entwicklungsmodus, bei der Produktion verwende ich GridFS oder Amazon S3.
Lasst uns diese Worte deutlicher machen.
Erster Punkt (Speichern Sie die Dateien in MongoDB selbst.)
Contras
Jedes Mal, wenn Sie eine Abfrage durchführen, sollten Sie wissen, dass Sie sich die gesamte Sammlung ansehen, also wird es ein wenig dauern (Sie können das Feld "Bilder" ausschließen, um dies zu vermeiden.)
Zweiter Punkt (Verwenden Sie MongoDBs GridFS zum Speichern der Dateien.)
Sehen Sie sich GridFs-Dokumente an.
In diesem Artikel werden Vor- und Nachteile der Verwendung von GridFs erläutert auch
auch Wann sollte ich GridFS verwenden?
Dritter Punkt (Amazon S3 verwenden)
Ich bin nicht sehr vertraut mit S3 (ich benutze es nie).
Aber das ist von Amazon docs Wann sollte ich Amazon S3 benutzen?
S3 steht Ihnen kostenlos zur Verfügung und ist ein "Pay as you go" -Service, also nur Sie Sie zahlen für die Kosten für Hosting und Bandbreite, die Sie verwenden, Dies macht es sehr attraktiv für Start-up, agile und schlanke Unternehmen Suche nach Kosten zu minimieren.
Hinzu kommt der vollständig skalierbare, schnelle und zuverlässige Service von Amazon, macht es sehr attraktiv für Videoproduzenten und -vermarkter auf der ganzen Welt.
Amazon bietet S3 als Hosting-System an geografischer Standort des Datencenters, in dem Sie Ihre Videos speichern.
Vier Punkte (lokales Dateisystem verwenden)
Ich benutze nur das Dateisystem, wenn ich meine Apps teste, ich benutze das nie bei der Produktion, da es von meinem POV nicht so skalierbar ist.
Nach meiner persönlichen Meinung würde ich GridFS verwenden, aber ich denke, Sie müssen die Anforderungen Ihrer Anwendung analysieren und wissen, welcher Storage Adapter
verwendetTags und Links mongodb