我正在开发一个网络平台,可能会接触到数百万用户,我需要在那里存储用户的图像和文档。我正在使用Rackspace,现在我需要将文件逻辑定义到云文件服务中。Rackspace允许使用帐户(reference page 17, paragraph 4.2.2)创建多达500,000个容器,此外,他们建议将每个容器大小限制为最多500,000个对象(reference Best practice - Limit the Number of Objects in Your Container),这是用户文件管理的最佳实践?
一个用户容器似乎不是一个好的解决方案,因为有500,000个容器的限制。Rackspace建议使用虚拟容器。我有点犹豫不决如何使用它们。
提前谢谢。
发布于 2013-02-06 08:28:55
如果你只想通过API调用与文件进行交互,那么拥有200,000个对象就可以了(根据我的经验,不需要更大的对象)。
如果你想尝试使用web界面来完成任何任务,你需要的远不止这些。web界面不会按文件夹拆分内容,因此如果您有30,000个对象,web界面只会对它们进行分页并按字母顺序显示给您。这对于最多有几百个对象的容器来说是可以的,但除此之外,web界面是不可用的。
如果您有数百万个用户,您可以使用用户ID的某一部分作为分片键来决定使用哪个存储桶。有关选择分片密钥的信息,请参阅http://docs.mongodb.org/manual/core/sharding-internals/#sharding-internals-shard-keys。它是为Mongo用户编写的,但适用于这里。要点是选择一些属性,使用户在某种程度上均匀分布,这样就不会有一个存储桶超过每个存储桶所需的最大文件数。
一种方法是使用用户ID,我们可以根据第一个数字随机分配和分片。在本例中,我们将使用UID的1234、2234、1123和2134。假设您想要按UID的第一位数字拆分文件,您可以将1234和1123的文件保存在容器"files_group_1“中,将2234和2134的文件保存在"files_group_2”容器中。
在选择分片密钥之前,请确保您考虑到用户可能存储的文件数量。例如,如果用户可能存储数百(或数千)个文件,那么您将希望使用比UID的第一个数字更唯一的键进行分片。
希望这能帮上忙。
https://stackoverflow.com/questions/14713964
复制相似问题