MongoDB - Speichern der Dateien in DB oder auf externen Speicher?

8

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 -

  1. Speichern Sie die Dateien in MongoDB selbst. Ich bin mir bewusst, dass MongoDB eine Begrenzung der maximalen Dokumentgröße von 16 MB hat, aber unsere Dateien werden höchstwahrscheinlich nicht darüber hinausgehen.
  2. Verwenden Sie das GridFS von MongoDB, um die Dateien zu speichern.
  3. Verwenden Sie Amazon S3 zum Speichern der Dateien und die Links zu diesen Dateien werden in MongoDB gespeichert.
  4. Verwenden Sie lokale Dateisysteme / EBS-Volumes in AWS.

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.

    
Dattatray 05.02.2015, 04:55
quelle

2 Antworten

6

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.

    
Nate Barbettini 05.02.2015, 05:04
quelle
2

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.)

  1. Wenn Sie Bilder bearbeiten, die klein oder nicht groß sind, wie 16 MB sollten Sie speichern sie auf Ihren Sammlungen.

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.)

  1. Wenn Sie mit Bildern arbeiten, die größer als (16MB & gt;) sind
  2. Sie können Metadaten hinzufügen (ich mag das).

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

verwendet     
Ethaan 05.02.2015 05:00
quelle

Tags und Links