2015-02-05 11 views
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:MongoDB - Speichern der Dateien in DB oder auf externen Speicher?

  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 MongoDB GridFS zum Speichern der Dateien.
  3. Verwenden Sie Amazon S3 zum Speichern der Dateien, und die Links zu diesen Dateien werden in MongoDB gespeichert.
  4. Verwenden Sie lokale Dateisystem-/EBS-Volumes in AWS.

Welche der oben genannten ist besser Ansatz? In Bezug auf Leistung, Skalierbarkeit? Welcher Ansatz wird besser skalierbar sein? Ich möchte auch CDN zum Zwischenspeichern der Dateien verwenden. Meine Präferenz ist AWS S3, da ich CDN verwenden kann, um die Dateien zwischenzuspeichern, mein Speicher der Dateien wird DB agnostic sein. Auch Meine DB-Größe wird nicht wesentlich wachsen, wie ich die Dateien außerhalb der Datenbank speichern.

Antwort

6

verwenden Ich denke, die besten Möglichkeiten hier sind 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. Wenn Ihr Unternehmen oder Ihre Anforderungen nicht alle Daten im Dokument enthalten müssen, ist dies der beste Weg.

Ich habe diese Lösung in der Produktion verwendet und es 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.

2

Zuerst verwende ich nur das lokale Dateisystem im Entwicklungsmodus, bei der Produktion verwende ich GridFS oder Amazon S3.

Lets setzen diese Worte klarer.

Erster Punkt (Speichern Sie die Dateien in MongoDB selbst.)

  1. , wenn Sie Bilder klein oder nicht groß wie 16MB gehen Sie mit sie auf Ihren Sammlungen gespeichert werden sollen.

Kontras

Jedes Mal, wenn Sie eine Abfrage machen, sollten Sie wissen, dass Sie alle in der Sammlung suchen, so wird es ein wenig dauern (das Feld ‚Bilder‘ ausschließen zu vermeiden dies.)

Zweiter Punkt (Verwendung MongoDB der GridFS die Dateien zu speichern.)

  1. Wenn Sie Bilder Umgang größer als (1 6MB>)
  2. Sie können Metadaten hinzufügen (ich mag das).

Werfen Sie einen Blick in GridFs Docs.

This article talk about pros and cons about using GridFs werden kann

auch when should i use GridFS?

Dritter Punkt (Verwendung von Amazon S3)

Im nicht sehr vertraut mit S3 helfup werden (i nie verwenden).

Aber das ist bei Amazon docs when should i use Amazon S3?

S3 frei zu verbinden, und ist ein Pay-as-you-go-Sevice, das heißt, Sie nur jemals für eine der Hosting und Bandbreite Kosten zahlen, Sie verwenden, macht es sehr attraktiv für Start-up, agile und schlanke Unternehmen auf der Suche nach Kosten zu minimieren.

Obendrein ist der vollständig skalierbare, schnelle und zuverlässige Service, den von Amazon bietet, für Videoproduzenten und -vermarkter auf der ganzen Welt sehr attraktiv: .

Amazon bietet S3 als Hosting-System an, wobei die Preisgestaltung vom geografischen Standort des Datencenters, in dem Sie Ihre Videos speichern, abhängt, .

Four Point (Use Local Dateisystem)

ich nur Dateisystem verwenden, wenn im meinen apps testen, ich das nie auf der Produktion verwenden, da aus meiner POV, es ist nicht so skalierbar.

Meiner persönlichen Meinung nach würde ich GridFS verwenden, aber ich glaube, Sie haben die Anforderungen Ihrer Anwendung zu analysieren, und so wissen, welche Speicheradapter

Verwandte Themen