2016-05-16 38 views

回答

5
  1. 複製:設置高可用副本集非常容易。所以即使一臺機器停機,這些文件仍然可用。儘管這對於簡單的文件系統來說也可以通過各種方式來實現,但是這樣做的開銷可能會消除性能優勢(如果存在的話:MongoDB具有非常複雜的內部緩存)。此外,設置DRBD並確保一致性和可用性需要比MongoDB更多的知識和管理工作。此外,您還需要讓您的數據庫高度可用。
  2. 可擴展性:當您的文件超過單個節點的存儲容量時,它可能會變得相當複雜和/或代價高昂。雖然從理論上說你可以垂直縮放,但有一點你可以得到降壓的效果,水平縮放更有意義。但是,使用文件系統方法,您必須管理哪個文件位於哪個節點,如何平衡以及何時平衡。 MongoDB的GridFS在分片環境中會自動爲您執行此操作,而且更重要的是,透明地執行此操作。你既不需要重新發明輪子,也不需要維護它。
  3. 按元數據查詢:理論上你可以通過數據庫和鏈接到文件系統的方法來實現,GridFS提供了插入任意元數據和查詢的手段。同樣,這可以爲您節省重新發明輪子。作爲一個有趣的例子,使用GridFS查找重複項非常容易:在GridFS中爲每個文件自動計算哈希總和。用一個相當簡單的聚合,你可以找到愚蠢,然後相應地處理它們。
+0

謝謝。如果我明白你的意思,使用GridFS的優點在於使用傳統的,相對容易的,傳統的和可能已經過時的服務器fs方法的優點。如果是這樣,那麼天平的位置在哪裏? – d2048

1

當你有大量的二進制數據,並且你想利用分片時,你可以使用gridfs將二進制數據存儲在mongo數據庫中。但從性能角度來看,很明顯,您指出將文件存儲在文件系統中是一種更好的方法。

相關問題