Gridfs používám při práci na jednom z našich serverů, který je součástí webu porovnávajícího ceny s úctyhodnými statistikami návštěvnosti (kolem 25 tisíc návštěvníků za den). Server nemá moc RAM, 2 giga, a dokonce ani procesor není opravdu rychlý (Core 2 duo 1,8 GHz), ale server má dostatek úložného prostoru:10 TB (sata) v konfiguraci raid 0. Úloha, kterou server dělá, je velmi jednoduchá:
Každý produkt na našem cenovém srovnávači má obrázek (podle naší produktové databáze je kolem 10 milionů produktů) a úkolem serveru je obrázek stáhnout, změnit jeho velikost, uložit na gridfs a doručit do prohlížeče návštěvníků. .. pokud není přítomen v mřížce... nebo... doručit jej do prohlížeče návštěvníků, pokud je již v mřížce uložen. Takže by se to dalo nazvat jako 'tradiční cdn schéma'.
Na tomto serveru jsme od jeho uvedení do provozu uložili a zpracovali 4 miliony obrázků. Změna velikosti a ukládání věcí se provádí jednoduchým php skriptem... ale určitě by mohl být rychlejší python skript nebo něco jako java.
Aktuální velikost dat:11,23 g
Aktuální velikost úložiště:12,5 g
Indexy:5
Velikost indexu :849,65 m
O spolehlivosti:Toto je velmi spolehlivé. Server se nenačte, velikost indexu je v pořádku, dotazy jsou rychlé
O rychlosti:Jistě, není to rychlé jako místní úložiště souborů, možná o 10 % pomalejší, ale dostatečně rychlé na to, aby se dalo použít v reálném čase, i když je potřeba zpracovat obrázek, což je v našem případě velmi závislé na php. Zkrátily se také časy údržby a vývoje:odstranění jednoho nebo více obrázků se stalo tak snadné:stačí se dotázat db jednoduchým příkazem delete. Další zajímavá věc:když jsme restartovali náš starý server s místním úložištěm souborů (takže miliony souborů v tisících složkách), někdy visí celé hodiny, protože systém prováděl kontrolu integrity souborů (toto opravdu trvalo hodiny...). S gridfs už tento problém nemáme, naše obrázky jsou nyní uloženy ve velkých mongodb chunkech (2gb soubory)
Takže... myslím... Ano, gridfs je dostatečně rychlý a spolehlivý na to, aby se dal použít pro výrobu.