gpt4 book ai didi

google-app-engine - Google App Engine Datastore 中的大量更新

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

对 Google App Engine 数据存储区中的实体执行批量更新的正确方法是什么?可以在不必检索实体的情况下完成吗?

例如,什么是 GAE 等同于 SQL 中的这样的东西:

UPDATE dbo.authors
SET city = replace(city, 'Salt', 'Olympic')
WHERE city LIKE 'Salt%';

最佳答案

没有直接翻译。数据存储实际上没有更新的概念;您所能做的就是用同一地址( key )的新实体覆盖旧实体。要更改实体,您必须从数据存储中获取它,在本地修改它,然后将其保存回来。

也没有与 LIKE 运算符等效的运算符。虽然通过一些技巧可以实现通配符后缀匹配,但如果您想匹配“%Salt%”,您必须将每个实体读入内存并在本地进行字符串比较。

因此它不会像 SQL 那样干净或高效。这是大多数分布式对象存储的权衡,数据存储也不异常(exception)。

也就是说,the mapper library可用于促进此类批量更新。按照示例并为您的 process 函数使用类似这样的内容:

def process(entity):
if entity.city.startswith('Salt'):
entity.city = entity.city.replace('Salt', 'Olympic')
yield op.db.Put(entity)

除了映射器之外还有其他选择。最重要的优化技巧是批量更新;不要单独保存每个更新的实体。如果您使用 mapper 和 yield puts,这是自动处理的。

关于google-app-engine - Google App Engine Datastore 中的大量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196935/

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