sql >> Databáze >  >> NoSQL >> MongoDB

Úložiště pro miliony obrázků

Ve svém životě jsem dělal distribuci videa jak s S3 (včetně cloudových souborů Rackspace), tak s MongoDB.

Většina lidí by bez druhého pohledu sáhla po S3, ale zjistil jsem, že obojí má své stinné stránky. Jedním z velkých problémů je, že S3 není CDN, je to ve skutečnosti redundantní úložiště v rámci specifické oblasti, které není replikováno do jiných oblastí S3, to znamená, že budete muset použít něco jako cloudfront na vrcholu S3 k pingu vašich obrázků. do jakési mezipaměti, pokud byste svůj web vážně zatížili.

S3 má také další funkce, díky kterým je méně CDN a více skladiště. Jak již bylo řečeno, pro soubory, ke kterým se často přistupuje, je S3 neuvěřitelně rychlý.

Tato dvojitá vrstva samozřejmě vytváří složitosti, jako je údržba. Nejen to, ale CDN bude fungovat na TTL, a i když mnoho CDN v současnosti má schopnosti okrajového čištění, stále nejsou 100% jistým způsobem, jak zajistit, aby vaše soubory nebyly přístupné.

Takže vzhledem k nastavení a přístupům (možné přístupy k souborům, které by měly být také smazány) by se to mohlo docela rychle prodražit.

Tady MongoDB mohl vyhrát. MongoDB by zde v závislosti na vašem scénáři mohl být ve skutečnosti levnější, protože byste mohli použít celou řadu mikro instancí na AWS, abyste skutečně uložili své informace, přidali k těmto instancím rezervaci spotových instancí (nekvalitní) a vše, co potřebujete je velký disk na jednom počítači.

Sakra, můžete dokonce použít S3 k ukládání obrázků a pak MongoDB jako náhradu za cloud.

Když chcete pingnout obrázky do různých oblastí, stačí vytvořit několik instancí spotu v této cílové oblasti a získat MongoDB, aby replikoval svá data napříč. S replikací můžete také udělat pár skvělých věcí, abyste se ujistili, že do této oblasti budou umístěny pouze často používané soubory z této oblasti.

Takže bych MongoDB (nebo dokonce Cassandru) nevyhodil, spíše bych mezi nimi provedl test prostředků.

Upravit

Jako dodatečná poznámka k cenám S3, pokud ukládáte své soubory do RR (Reduced Redundancy), pak se cena sníží na polovinu (asi), což činí S3 velmi levným, nicméně stále máte problém, že S3 není CDN.

Další úpravy

Protože jsem skutečně pokračoval pouze v odpovědi @cirrus, ve skutečnosti přehodnotím vaši otázku, která je trochu zodpovězena výše.

Například Youtube ve skutečnosti ukládá všechny své obrázky na jednotlivé počítače, které jsou pak distribuovány, takže mohou snadno spravovat 200 milionů miniatur a...no...spousta zobrazení každý den snadno ze systému souborů. Takže si myslím, že vaše starost o souborový systém je přehnaná.

Pokud jde o to, která databáze je lepší...nevím, záleží na vašem testování.

Myslím tím, že odpověď na váš problém závisí na vašem scénáři a vašem rozpočtu a vašem hardwaru a vašich zdrojích, tj. pokud máte servery AWS, byla by to úplně jiná odpověď než vyhrazené domácí servery.



  1. Aktualizujte více dokumentů poskytnutím dokumentů v těle, mongoose/mongodb

  2. Vícenásobné počty s jedním dotazem v mongodb

  3. Připojte data k existujícímu souboru gridfs

  4. duplikovat sbírku do sebe