有没有办法根据位置信息对gridFS文件和块进行分片?
我想设置一个带有分片和复制的mongo配置来处理多个站点,并保证即使站点被隔离,一个站点上生成的数据仍然可以访问。
我遵循了mongo的以下文档,它适用于标准集合,但不适用于GridFS。
https://docs.mongodb.com/v3.2/tutorial/sharding-segmenting-data-by-location/
我发现GridFS的所有内容都是基于_id或基于file_id的分片。 到目前为止,我唯一的解决方案是使用不同的GridFS前缀,这意味着不同的集合,并在给定的站点上对每个集合进行分片。
我正在使用:
感谢您的任何建议。
答案 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到块。