【发布时间】:2012-01-31 02:46:47
【问题描述】:
我正在创建一个具有大量音频存储(TB 级)的网站,并且我希望使用 GridFS 进行分片,并能够轻松地在多台机器上扩展数据库。
我的问题是将文件放在单独的 mongo 数据库中会更好吗? mongodb 中会有大量文档,我只是不确定当您开始使用 GridFS 部分进行分片时会发生什么。
谢谢!
【问题讨论】:
我正在创建一个具有大量音频存储(TB 级)的网站,并且我希望使用 GridFS 进行分片,并能够轻松地在多台机器上扩展数据库。
我的问题是将文件放在单独的 mongo 数据库中会更好吗? mongodb 中会有大量文档,我只是不确定当您开始使用 GridFS 部分进行分片时会发生什么。
谢谢!
【问题讨论】:
即使您将 GridFS 存储与其他集合保存在同一个数据库中,当您需要转移到分片时,您仍然可以选择对哪些集合进行分片(或不分片)。也就是说,如果您将它放在单独的数据库中,那么您可以更轻松地将其移动到单独的集群中——例如,您可以为您的“主”集合设置一个 3 分片集群,并且用于 GridFS(或您选择的任何其他配置)的 5 分片集群。
关于 GridFS 集合的分片,请参阅the MongoDB docs on choosing a shard key for GridFS。通常,人们在files_id 上对chunks 集合(存储文件数据本身的位置)进行分片,以便同一文件的所有块都驻留在同一分片上。同样,请参阅文档页面了解更多详细信息。
【讨论】: