- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于这样的模型:
class Thing(ndb.Model):
visible = ndb.BooleanProperty()
made_by = ndb.KeyProperty(kind=User)
belongs_to = ndb.KeyProperty(kind=AnotherThing)
本质上执行“或”查询,但比较不同的属性,因此我不能使用内置的 OR...我想获取所有 Thing
(属于特定的 AnotherThing
) 将 visible
设置为 True
或 visible
为 False
并且 made_by
是当前用户。
这对数据存储的要求较低(即财务成本较低):
查询以获取所有内容,即:Thing.query(Thing.belongs_to == some_thing.key)
并遍历结果,存储可见的和不可见的不可见但是由当前用户制作的?
查询得到可见的,即:Thing.query(Thing.belongs_to == some_thing.key, Thing.visible == "True")
分别查询得到当前用户不可见的,即:Thing.query(Thing.belongs_to == some_thing.key, Thing.visible == "False", Thing.made_by = current_user)
?
数字 1. 会得到很多不需要的结果,比如其他用户看不到的 Thing
- 我认为这是对数据存储的多次读取? 2. 虽然是两个完整的查询,但也可能不必要地繁重,对吗?我仍在努力弄清楚与数据库进行何种交互会导致何种成本。
我在必要时使用 ndb、tasklet 和 memcache,以防相关。
最佳答案
出于两个原因,第二名的财务状况会有所下降。首先,您为每次读取数据存储和查询中返回的每个实体付费,因此您将为必须读取所有数据和查询所有数据的第一个实体支付更多费用。第二种方式,您只需为需要的东西付费。
其次,您还需要为后端或前端时间付费,并且您将使用时间来迭代第一种方法中的所有结果,而第二种方法则不需要花费时间。
我看不出第一个选项更好的方法。 (也许如果你只有几个实体??)
要了解读取和查询的成本,请向下滚动一点: https://developers.google.com/appengine/docs/billing
您将看到读取、写入和 Smalls 是如何添加到读取、写入和查询中的。
我也只查询当前用户拥有的那些,而不是 visible=false 和 owner=current,这样你就不需要复合索引,这会节省一些时间。您还可以使部分索引可见,这也节省了一些空间(仅在 true 时对其进行索引,假设您永远不需要查询 false 索引)。您将需要做一些小工作来删除重复项,但这可能还不错。
关于python - 多个查询与手动排序一个大型查询 (AppEngine NDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678184/
如果我有一个具有以下定义的Contact 模型: class Contact(ndb.Model): name = ndb.TextProperty(indexed=False) we
我有 webapp2 服务,它在多个不相互依赖的 NDB 模型中插入条目。现在我们要求的是服务应该在事务中。那是服务失败然后它应该恢复完整的交易(例如,如果一个条目插入到第一个和第二个模型中,并且在该
切换到 python GAE 上的 ndb 库。 我可以将 ndb 与之前使用低级 api 创建的实体一起使用吗?还是我必须复制所有旧实体并重新保存它们才能使用 ndb? 谢谢! 最佳答案 ndb 只
是否可以在 pre_put_hook 中找出实体的脏因子? 我想根据put 的内容有条件地执行一些回调。例如。如果实体的特定属性发生更改,我想发送邮件通知。我可以在调用 put() 之前手动执行此操作
我是谷歌应用引擎和 NDB 的初学者。我的问题:如果我在模型中有 1 个实体, 我想防止 2 个并行操作时发生冲突,代码示例: class MyModel(ndb.Model) count = n
假设有一个看起来像这样的 ndb.Model: class Foo(ndb.Model): bar = ndb.StringProperty() 我的问题是,如果我的唯一输入是 Foo.query
给定我构造的 key ,我想访问数据存储区以查看它是否存在,但我想要最便宜(及时)的方法来做到这一点。我正在寻找的就像一个只有键的查询,但是来自 get,例如my_key.get(keys_only=
https://developers.google.com/appengine/docs/python/ndb/ https://developers.google.com/appengine/doc
我有一个 ndb.Model,它有一个 ndb.DateTimeProperty 和一个 ndb.CompulatedProperty,它使用 ndb.DateTimeProperty 创建时间戳。
我计划将 Odoo 移植到 Google App Engine Web 应用程序。当我知道 Odoo 使用 postgresql 时,是否可以将数据库连接、查询和所有从 Postgresql db 移
我有一个 POST 方法,它调用一些 tasklet。这些 tasklet 确实有 yield ,我的代码中确实有一些 x.put_async()。所以我不希望它在所有异步内容完成之前返回。所以我用
我有一个简单的 NDB 模型: from google.appengine.ext import ndb import logging from libs import Api class User(
使用 Python NDB 的新手。 我有类似的东西: class User(ndb.Model): seen_list = nbd.KeyProperty(kind=Survey, repe
我的应用程序中有以下查询 query = cls.query().filter(cls.taskgroup_id == taskgroup_id, cls.availability == True,
我在 NDB 迁移方面遇到问题。目前,我在 NDB Cluster 中有 2 个副本。我想将集群移至新硬件中。因此,在新机器中,我设置了 datanodes 和 sqlnodes 并将管理节点指向旧集
我有一个 mysql ndb 集群(详情如下)。问题是当我做最简单的事情时,例如恢复使用 mysqldump 转储的数据库,它需要绝对的时间! IE 6 小时恢复一个大小为 745MB 且在大约 30
来自 What can be done in a transaction (我的重点): All Datastore operations in a transaction must operate
我正在对 Expense 模型的方法进行单元测试。模型的相关部分如下所示: class Expense(ndb.Model): user = ndb.KeyProperty(User, req
几年来,我一直在使用类似于下面复制的代码片段。 基本思想是 Person 可以结婚,当他们结婚时,我创建一个“Marriage”实体。一个人只能结婚一次,所以我有一个 bool 值来指示这个人是否已婚
我们使用的是 ndb 数据存储、python、标准谷歌应用引擎。我们想使用查询游标。但是为了根据 here 工作和 here ,看起来我们需要实现 datastore_model.query().or
我是一名优秀的程序员,十分优秀!