我感覺很蠢,但我想知道GitHub和Dropbox如何存儲用戶文件,因爲我有類似的問題,我需要存儲用戶的項目文件。GitHub如何存儲您的存儲庫文件?
它是否像將項目文件存儲在服務器的某處並將該位置稱爲數據庫中的字段,還有其他更好的方法?
謝謝。
我感覺很蠢,但我想知道GitHub和Dropbox如何存儲用戶文件,因爲我有類似的問題,我需要存儲用戶的項目文件。GitHub如何存儲您的存儲庫文件?
它是否像將項目文件存儲在服務器的某處並將該位置稱爲數據庫中的字段,還有其他更好的方法?
謝謝。
GitHub使用Git來存儲存儲庫,並從Ruby應用程序訪問這些存儲庫。他們曾經用Ruby庫來做這件事。 Grit是爲了在Ruby中實現Git而編寫的,但已被替換爲rugged。其他語言有Git重新實現,例如用於Java的JGit和用於Python的Dulwich。 This presentation提供了一些關於GitHub多年來如何變化的細節,值得觀看/瀏覽幻燈片。
如果你想存儲Git倉庫,你想要做的是將它們存儲在文件系統(或其集羣)上,然後在你的數據庫中有一個指針指向文件系統的位置,然後使用像Rugged或JGit或Dulwich這樣的庫來讀取Git存儲庫中的內容。
Dropbox將文件存儲在亞馬遜的S3服務上,然後在安全性等方面實現一些包裝。 This paper描述了Dropbox使用的協議。
你問的實際問題是你如何存儲用戶文件。簡單的答案是......在文件系統上。有很多流行的web框架的插件用於用戶文件上傳和文件管理。 Django例如有Django-Filer。在滾動自己的文件上傳管理系統時遇到的困難是建立一個明智的方式來執行權限(因此用戶只能下載他們有權下載的文件),所以值得研究各種框架插件如何執行。