GridFS具有基于位置的分片

时间:2017-01-27 08:31:06

标签: mongodb sharding gridfs

有没有办法根据位置信息对gridFS文件和块进行分片?

我想设置一个带有分片和复制的mongo配置来处理多个站点,并保证即使站点被隔离,一个站点上生成的数据仍然可以访问。

我遵循了mongo的以下文档,它适用于标准集合,但不适用于GridFS。

https://docs.mongodb.com/v3.2/tutorial/sharding-segmenting-data-by-location/

我发现GridFS的所有内容都是基于_id或基于file_id的分片。 到目前为止,我唯一的解决方案是使用不同的GridFS前缀,这意味着不同的集合,并在给定的站点上对每个集合进行分片。

我正在使用:

  • mogodb 3.2
  • Java驱动程序
  • Python驱动程序

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

我在StackExchange上找到了答案: How to define shardKey on GridFS collections to achieve Location/Data Centre affinity (MongoDB)

鉴于唯一的可能性是对ID上的块进行分片,我们的想法是使用def main(...): # argparse stuff here if someflag: outstream = open(path/to/file, "w") else: outstream = sys.stdout try: get_net_details(outstream) finally: if someflag: outstream.close() 强制基于位置的ID到块。