MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist GridFS schnell und zuverlässig genug für die Produktion?

Ich verwende gridfs bei der Arbeit auf einem unserer Server, der Teil einer Preisvergleichs-Website mit ehrenhaften Traffic-Statistiken ist (ca. 25.000 Besucher pro Tag). Der Server hat nicht viel RAM, 2 GB, und selbst die CPU ist nicht wirklich schnell (Core 2 Duo 1,8 GHz), aber der Server hat viel Speicherplatz:10 TB (sata) in Raid 0-Konfiguration. Die Aufgabe, die der Server erledigt, ist sehr einfach:

Jedes Produkt in unserem Preisvergleich hat ein Bild (laut unserer Produktdatenbank gibt es rund 10 Millionen Produkte), und die Aufgabe des Servers besteht darin, das Bild herunterzuladen, die Größe zu ändern, es auf Gridfs zu speichern und es an den Browser des Besuchers zu liefern. ... wenn es nicht im Grid vorhanden ist ... oder ... es an den Browser des Besuchers liefern, wenn es bereits im Grid gespeichert ist. Man könnte dies also als „traditionelles cdn-Schema“ bezeichnen.

Wir haben 4 Millionen Bilder auf diesem Server gespeichert und verarbeitet, seit er in Betrieb ist. Die Größenänderung und das Speichern werden von einem einfachen PHP-Skript erledigt ... aber sicher könnte ein Python-Skript oder etwas wie Java schneller sein.

Aktuelle Datengröße:11,23 g

Aktuelle Speichergröße:12,5 g

Indizes:5

Indexgröße:849,65 Mio.

Über die Zuverlässigkeit:Dies ist sehr zuverlässig. Der Server lädt nicht, die Indexgröße ist ok, Abfragen sind schnell

Über die Geschwindigkeit:Sicherlich ist es nicht schnell als lokaler Dateispeicher, vielleicht 10% langsamer, aber schnell genug, um in Echtzeit verwendet zu werden, selbst wenn das Bild verarbeitet werden muss, was in unserem Fall sehr php-abhängig ist. Die Wartungs- und Entwicklungszeiten wurden ebenfalls verkürzt:Es wurde so einfach, ein einzelnes oder mehrere Bilder zu löschen:Fragen Sie einfach die Datenbank mit einem einfachen Löschbefehl ab. Eine weitere interessante Sache:Als wir unseren alten Server mit lokalem Dateispeicher (also Millionen von Dateien in Tausenden von Ordnern) neu gestartet haben, hängt er manchmal stundenlang, weil das System eine Dateiintegritätsprüfung durchführt (das hat wirklich Stunden gedauert ...). Mit gridfs haben wir dieses Problem nicht mehr, unsere Bilder werden jetzt in großen Mongodb-Blöcken (2-GB-Dateien) gespeichert

Also ... meiner Meinung nach ... ja, gridfs ist schnell und zuverlässig genug, um für die Produktion verwendet zu werden.