问题标签 [google-cloud-datastore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1803 浏览

google-app-engine - 如何在重新启动之间保留 GoogleAppEngineLauncher 的本地数据存储?

我在 Mac OS X 上使用 GoogleAppEngineLauncher (GAEL)。我的应用程序的数据存储状态在服务器重新启动甚至 GAEL 重新启动之间保持不变,但如果我重新启动,数据存储将被重置。是否有防止此重置的设置,或者是否有可以保存的 tmp 文件?

0 投票
3 回答
2374 浏览

google-app-engine - 通过减小实体大小来提高 App Engine 性能

目标是减少一段代码的 CPU 成本和响应时间,该代码经常运行并且每次必须 db.get() 数百个键。

这甚至行得通吗?

当我减小实体的大小时,我可以期望具有数百个键的 db.get() 的 API 时间大致线性减少吗?目前该实体附有以下数据:9 个字符串、9 个布尔值、8 个整数、1 个 GeoPt、2 个日期时间、1 个文本(平均大小 ~100 字节 FWIW)、1 个参考、1 个字符串列表(平均大小 500 个字节)。目标是将大部分数据移动到相关类,以便快速获取主模型的核心。

如果它确实有效,它是如何实现的?

重构之后,获取现有实体是否仍会产生同样高昂的成本?文档说模型的所有属性都是同时获取的。旧的不需要的属性是否仍会在我的一角钱和用户等待时通过 RPC 传输?换句话说:如果我想减少实体的加载时间,是否有必要将旧实体迁移到具有新定义的实体?如果是这样,重新放置()实体是否足够,或者我必须保存在一个全新的密钥下?

例子

考虑:

假设我将 Thing 重新定义为精简并推出新版本:

我又拿回来了:

我是否减少了该实体的获取时间?

0 投票
2 回答
1452 浏览

google-app-engine - GAE 数据存储列表属性序列化

我在 Google I/O 2009 上观看了这段视频:http ://www.youtube.com/watch?v= AgaL6NGpkB8,其中 Brett 展示了微博示例。他描述了两个数据存储模式:

一个: 和第二个: 他说,在第一个示例中,每次我们通过接收者查询消息时,数据存储都必须序列化/反序列化接收者属性,而在第二个示例中则没有。我不明白为什么数据存储在这个例子中表现不同,在这两种情况下接收者只是 StringListProperty。你能解释一下吗?
class Message(db.Model):
    sender = db.StringProperty()
    body = db.TextProperty()
    receivers = db.StringListProperty()


class Message(db.Model):
    author = db.StringProperty()
    message = db.TextProperty()

class MessageIndex(db.Model)
    receivers = db.StringListProperty()

0 投票
2 回答
4011 浏览

python - 使用 Google App Engine 实现“开始于”和“结束于”查询

我想知道是否有人可以就我如何使用 Python 对 Datastore 模型实现查询开始或结束提供一些指导?

在伪代码中,它会像......

查询属性 P 以 X 开头的所有实体 A

或者

查询属性 P 以 X 结尾的所有实体 B

谢谢,马特

0 投票
4 回答
779 浏览

python - 用于查找用户最喜欢的故事的良好数据模型

原创设计

这是我最初的Models设置方式:

在显示故事的每个页面上,我都会查询当前用户的 UserData:

新设计

看完这个演讲后:Google I/O 2009 - Scalable, Complex Apps on App Engine,我想知道我是否可以更有效地进行设置。

是一样的Story Model,但我摆脱了UserData Model. new 的每个实例FavoriteIndex Model都有一个Story作为父实例的实例。每个都在其属性FavoriteIndex中存储一个用户 ID 列表。favorited_by

如果我想查找某个用户收藏的所有故事:

这种方法避免了与 ListProperty 关联的序列化/反序列化。

效率与简单

我不确定新设计的效率如何,尤其是在用户决定收藏 300 个故事之后,但这就是我喜欢它的原因:

  1. 收藏的故事与用户相关联,而不是与她相关联user data

  2. 在我显示 a 的页面上story,很容易询问story它是否已被收藏(无需调用填充用户数据的单独实体)。

    /li>
  3. 也很容易获得所有收藏故事的用户的列表(使用#2中的方法)

有没有更简单的方法?

请帮忙。这种事情通常是怎么做的?

0 投票
2 回答
882 浏览

java - Google App Engine Datastore 多字段键

问题是这个对象在持久化时会不断覆盖自己,而不是在下一个修订版中创建新的“记录”。在传统的RDBMS中,它是一个两列的主键。

如何使用Google App Engine Datastore完成此任务?

0 投票
1 回答
207 浏览

google-app-engine - 我使用哪种属性类型将用户的 user_id() 放入数据存储区?

这就是我需要将 user_id() 放入数据存储区的原因:

如果用户更改其电子邮件地址,则数据存储中的用户值不会更新。这可能会在未来的版本中得到纠正。在此之前,您可以使用 User 值的 user_id() 作为用户的稳定唯一标识符。

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#users_User

在数据存储中,该值等于电子邮件地址加上用户的唯一 ID。如果用户更改了她的电子邮件地址,新的用户值将不等于数据存储查询中的原始用户值或应用程序比较时的值。如果您的应用需要一个不会更改的稳定标识符,您可以将唯一 ID 与 User 值分开存储。

http://code.google.com/appengine/docs/python/users/userobjects.html

我该怎么做?

你是怎么知道的(或者你在哪里查到的?)

0 投票
3 回答
219 浏览

python - 确定数据存储中存在一组键的最佳方法

我有几百个键,都是相同的模型,我已经预先计算了:

其中一些键是指数据存储中的实际实体,而有些则不是。我希望确定哪些键确实对应于实体。

不必知道实体内的数据,只需知道它们是否存在即可。

一种解决方案是使用 db.get():

但是,此过程将从商店中获取所有实体数据,这是不必要且昂贵的。

第二个想法是使用带有IN过滤器的查询key_name,手动获取 30 个块以满足IN伪过滤器的要求。IN但是,过滤器不允许仅键查询。

有没有更好的办法?

0 投票
1 回答
301 浏览

google-app-engine - 谷歌应用引擎中的查询问题

我对 sql 和谷歌应用引擎中使用的 GQL 非常陌生。我已经设法将我的数据推送到 Google 服务器,但我无法找到一种方法来从我加载到数据存储的实体中进行查询。

这是问题所在,除了下面给出的其他列之外,我只想查询由用户 ID 标记的用户联系人的姓名和号码,

这是我的 Models.py 文件,其中有我的 MyContacts 实体定义,

我将用户 ID 作为 UI 的输入,但我无法找到一种使用查询来显示数据的方法。请如果有人可以帮助我在 GQL 中创建查询,这对我来说将是一个很大的帮助。我已经尝试了各种各样的方法,SELECT * FROM MyContacts WHERE __key__ = KEY('user_id',654351)但我什么也没得到。

请帮帮我。

0 投票
2 回答
5089 浏览

java - 在 Google App Engine 中批量删除实体

我正在尝试使用 Java 从我的数据存储中删除一些不需要的数据,并使用我修改的 DatastoreService 找到了一些代码,以便在 10 秒内删除尽可能多的条目:

当我运行它时它似乎工作。我检查了控制台的数据查看器,我试图删除的类型(“邮政编码”)不见了,但在我这样做的第二天,整个事情就恢复了。我错过了刷新或提交的电话吗?!?

有一个更好的方法吗?