2013-02-05 65 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的第一个数字更独特的密钥来分片。

希望有帮助。