gpt4 book ai didi

python - 如何最小化由 mapreduce 库发起的数据存储写入?

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:19 25 4
gpt4 key购买 nike

这个问题分为 3 个部分:

我有一个应用程序,用户可以在其中创建其他用户可以在 5 分钟内更新的对象。 5 分钟后,对象超时并失效。我将对象存储为实体。为了超时,我有一个 cron 作业,每分钟运行一次以清除过期的对象。

现在大部分时间,我没有任何事件对象。在这种情况下,mapreduce 处理程序检查它获取的实体,如果它不活动,则不执行任何操作,不写入。但是,大约 7 小时后,我的免费数据存储写入配额因 mapreduce 调用而用完。根据我的粗略估计,看起来只是运行 mapreduce 会导致 ~ 120 次写入/调用。 (粗略计算,60 次调用/小时 * 7 小时 = 420 次调用,50k 操作限制/420 次调用 ~ 120 次写入/调用)

问题 1:任何人都可以验证仅运行 mapreduce 会触发约 120 次数据存储写入吗?

为了解决这个问题,我在启动 mapreduce 之前检查了数据存储:

def cronhandler():
count = model.all(keys_only=True).count(limit=1000)
if count:
shards = (count / 100) + 1;
from mapreduce import control
control.start_map("Timeout open objects",
"expire.maphandler",
"expire.OpenOrderInputReader",
{'entity_kind' : 'model'},
shard_count=shards)
return HttpResponse()

问题 2:这是避免 mapreduce 引起的数据存储写入的最佳方法吗?有没有更好的方法来配置 mapreduce 以避免无关的写入?我在想有可能使用更好的自定义 InputReader

Q3:我猜测更多的分片会导致更多来自 mapreduce 簿记的无关数据存储写入。是否根据我需要适当编写的预期对象数量来限制分片?

最佳答案

如果您将对象保存在内存缓存而不是数据存储中会怎么样?我唯一担心的是内存缓存在运行给定应用程序的所有实例之间是否一致,但如果一致,该问题就有一个非常简洁的解决方案。

关于python - 如何最小化由 mapreduce 库发起的数据存储写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com