拥有数据存储区实体父项的好处之一是,我可以在我的实体上执行事务。
https://cloud.google.com/appengine/docs/python/datastore/transactions
但是,我不需要在我的实体上执行交易。
我在想,我的实体没有父母可以吗?因为,这将使我的代码更简单,易于维护?
没有父母为实体有任何副作用吗?
我担心没有父母,最终的一致性。写操作后,我希望我的读操作能够获取最新的写入值。我正在使用User.get_or_insert
来编写(可能的读取),并使用User.get_by_id
来进行只读。
我想在执行User.get_or_insert
之后,下一个请求User.get_by_id
将返回最新值。我想知道,要实现强一致性,父键是一个重要的东西吗?
答案 0 :(得分:2)
我想知道,没有我的实体的父级是否可以?
当然,是的,但是您需要考虑如何阅读和编写数据,这样就不会遇到任何问题。
如果您没有祖先,您的查询将只具有最终的一致性,因此您可能会发现一些与您的查询不匹配的结果。请记住,您还可以使用跨实体组('XG')事务,这些事务最多可涉及5个实体组(没有祖先的实体定义自己的实体组),这样可以提供一些灵活性。
另一方面,无论您的实体是否具有祖先,您都可以随时使用按键获取强一致性。
答案 1 :(得分:1)
这意味着您将受到最终的一致性:交易之外的查询不能保证一致。如果这不打扰你,那么没有理由使用父母。