2013-02-05 25 views
2

我正在開發一個Web平臺,可能會有數百萬用戶需要存儲用戶的圖像和文檔。 我正在使用Rackspace,現在我需要將文件邏輯定義爲雲文件服務。 Rackspace允許使用帳戶(reference page 17, paragraph 4.2.2)創建多達500,000個容器,並且他們還建議將每個容器大小限制爲500,000個對象(reference Best practice - Limit the Number of Objects in Your Container),這是用戶文件管理的最佳實踐?Rackspace CDN容器組織

一個用戶容器似乎不是一個好的解決方案,因爲有50萬個容器的限制。 Rackspace建議使用虛擬容器。我有點猶豫如何使用它們。

在此先感謝。

回答

1

如果您只能通過API調用與200,000個對象交互(根據我的經驗,沒有任何更大的需要)。

如果您想嘗試使用網絡界面進行任何您需要的任務,遠遠不及此。 Web界面不會按文件夾分割內容,因此如果您有30,000個對象,則Web界面只會對它們進行分頁並按字母順序顯示給您。對於容量高達幾百個對象的容器來說,這是可以的,但除此之外,Web界面無法使用。

如果您擁有數百萬用戶,則可以使用用戶標識的某個部分作爲分片鍵來決定使用哪個存儲分區。有關選擇分片鍵的信息,請參閱http://docs.mongodb.org/manual/core/sharding-internals/#sharding-internals-shard-keys。它是爲Mongo用戶編寫的,但適用於此。外賣是挑選一些屬性,將有點均勻分配你的用戶,所以你沒有一個桶超過你想要每個桶的文件的最大數量。

一種方法是使用用戶ID,我們可以根據第一個數字隨機分配和分片。對於這個例子,我們將使用UID的1234,2223,1123和2134.假設你想用UID的第一個數字打破文件,你可以將文件1234和1123保存在容器「files_group_1」中以及「files_group_2」容器中2234和2134的文件。

在選擇分片鍵之前,請確保您考慮用戶可能存儲的文件數量。例如,如果用戶可能存儲數百(或數千)個文件,那麼您將希望使用比UID的第一個數字更獨特的密鑰來分片。

希望有幫助。