好吧,我有點陷入一個(也許很簡單)的問題。我想使用帶有 Nest.Js API 的資料庫/云服務器來存盤影像。這是我第一次嘗試這樣的概念,我想首先知道“最佳”解決方案。例如,可以使用 MongoDB 或 Firebase Storage 之類的東西嗎?如果不是,那么理想的解決方案是什么?用 Nest 做這樣的事情甚至更好嗎?
更具體地說;(我的想法/專案計劃)
我想使用非SQL資料庫(首選 MongoDB)來存盤有關某個物件的一些資料。在這個物件中,我想要一張照片以及它的一部分。所以我很確定我不能混合這些型別的資料(存盤字串/數字/等和影像)所以也許我可以將位置存盤到另一個資料庫(集合)/云服務器并從那里檢索它。這實用嗎?這個概念應該如何運作?
到目前為止,我已經設法在 Multer 的幫助下將影像存盤在本地/uploads檔案夾中。但我真的不喜歡這個解決方案。在發布一定數量的影像后,我的服務器(可能)運行速度會越來越慢(????)。
對不起這個愚蠢的問題。但我有點卡在這里幾天...... :(
uj5u.com熱心網友回復:
您使用檔案系統的方式非常好。在幕后,像 mongodb 這樣的工具無論如何都是使用檔案系統實作的。當您需要將應用程式負載分散到多個服務器上時,使用服務器的檔案系統可能會帶來可伸縮性問題,但對于單個服務器解決方案,由于 IO 開銷最小,它將具有最高的性能。
如果您想認真對待可擴展性,我建議使用物件存盤系統(如 amazon s3 或 gcp 存盤桶)。您的所有檔案都將存盤在一個旨在擴展的托管系統上,您將能夠將每個服務器視為無狀態的(因此提供多個并保證無論哪個服務器處理每個請求,您都可以訪問所有檔案)。
這將是兩個“行業標準”解決方案。并不是說你不能用 mongo 或 firebase 做到這一點,但它們可能不是很好的解決方案。然而,最重要的是避免將檔案存盤在關系資料庫中,只要您不這樣做就可以了。
我會說你想多了。堅持使用檔案系統,直到你知道你有實際的可伸縮性問題。Nestjs 是高度模塊化的,您可以以其他模塊不“知道”您如何存盤檔案的底層實作的方式實作您的應用程式,因此您現在可以輕松地使用存盤在檔案系統上的影像撰寫代碼,然后在需要時移動.
最后,Nestjs 只是一個撰寫 HTTP 服務器的框架。它不會比任何其他 HTTP 服務器更差或更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/518381.html
