从 MongoDB 获取大数据的最佳方法
Posted
技术标签:
【中文标题】从 MongoDB 获取大数据的最佳方法【英文标题】:Best approach to get large data from MongoDB 【发布时间】:2016-08-20 21:38:41 【问题描述】:我有一个数据库,超过 200 万条记录。每条记录都包含一个指向我需要下载并存储到 AWS S3 的图像的 URL。
与其一次下载一个,然后一次上传一个,还有更好的方法来处理这个问题吗?
我正在使用 Python,因此目前使用的是 pymongo。
for item in itemsCursor:
download_image(item['imageurl')
def download_image(item):
name = 'example.jpg'
response = requests.get(url)
img = Image.open(StringIO(response.content))
img.save('temp.jpg', "JPEG")
s3.meta.client.upload_file('temp.jpg', 'bucket', name)
【问题讨论】:
grequests pypi.python.org/pypi/grequests 【参考方案1】:执行此操作的最佳方法是执行批处理和多线程。我已经解决了类似的问题,方法是添加一个带有日期戳或布尔值的字段,指示特定项目已被处理(或者在这种情况下,可能是指向它的文件 ID 或 AWS 上的 URL 的链接)并编写一个客户端脚本或应用程序,它将挑选一个或一批需要处理的物品并翻阅它们。
当然,请确保线程或其他同时运行脚本的计算机不会通过使某个值甚至是单独的字段来指示线程已声明特定记录并正在处理过程中而相互绊倒它。
【讨论】:
以上是关于从 MongoDB 获取大数据的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章