2009-12-07 64 views
6

閱讀Storing Images in DB - Yea or Nay?我認爲,文件系統是用於存儲圖像的正確的地方後。但是我想知道在不同的環境(dev/stage/prod)中如何處理上傳圖像的備份/版本控制以及網絡負載平衡?上傳的圖片版本控制文件系統

這些問題是很容易處理使用數據庫例如,當從生產環境進行備份並在開發環境中恢復數據庫。

你覺得使用例如混帳處理上傳文件e.g版本控制的?

生產環境:

  • A圖像被上傳到在web服務器的共享文件夾。
  • 元數據被存儲在數據庫中
  • 的圖像被自動添加到git倉庫

開發工作:

  • 檢查出的源代碼。
  • 運行腳本以恢復數據庫。
  • 運行腳本以獲取最新的圖像。

我認爲上述方案中爲顯影劑相當順利,圖像將是在版本控制下和環境可以彼此分離。

+0

聽起來很不錯。 – grenade 2009-12-07 21:00:40

+0

「使用從源代碼完全分離的存儲庫」:這是不與子模塊的方法不相容:想法仍然是源代碼回購引用一個指定的提交圖像回購的,但後者(圖像回購)仍然一個「完全分離」的回購。 – VonC 2009-12-07 21:18:29

回答

2

對於我們來說,版本控制是沒有分佈一樣重要。元數據通過網絡管理員添加,圖像被丟棄在管理服務器上。 Rsync腳本將這些腳本推送到提供prod映像的羣集。對於開發/測試,我們只需將prod主服務器的rsync返回到開發服務器。

rsync的是偉大的負載均衡和分配。如果你在管理/主服務器的git中,你有一個很好的解決方案。

如果您可以在備份時保留文件歷史記錄(與每個版本的版本控制相反),那麼對其進行一些修改可能有所幫助: Automated Snapshot-style backups with rsync

+0

感謝您的反饋,我認爲分發和備份對我們來說比版本控制更重要。 – orjan 2009-12-07 21:37:04

2

它可以工作,但我會保存在一個Git倉庫的那些圖像,然後這將是一個submodule of the git repo的源代碼。
這樣,代碼和圖像之間就存在着密切的關係,即使這些圖像是在它們自己的回購庫中。
此外,它避免了問題與git gcgit prune是與大量的二進制文件效率較低:如果圖像是在自己的回購協議,並與他們每個人的一些變化,對回購的維護是相當輕。儘管源代碼回購可以演變得更加動態,而通常的git維護命令正在起作用。

+0

感謝有關git的反饋。我的第一個想法是使用與源代碼完全分離的存儲庫,但子模塊似乎是另一種選擇。 我感到非常有信心,它會值得跑秒殺,看看是否有可能。 – orjan 2009-12-07 21:15:07