【问题标题】:Best approach to get large data from MongoDB从 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)

【问题讨论】:

标签: python mongodb pymongo


【解决方案1】:

执行此操作的最佳方法是执行批处理和多线程。我已经解决了类似的问题,方法是添加一个带有日期戳或布尔值的字段,指示特定项目已被处理(或者在这种情况下,可能是指向它的文件 ID 或 AWS 上的 URL 的链接)并编写一个客户端脚本或应用程序,它将挑选一个或一批需要处理的物品并翻阅它们。

当然,请确保线程或其他同时运行脚本的计算机不会通过使某个值甚至是单独的字段来指示线程已声明特定记录并正在处理过程中而相互绊倒它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多