数据存储实体是否总是有父节点



拥有父数据存储实体的好处之一是,我可以在我的实体上执行事务。

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将返回最新值。我想知道,要实现强一致性,父键是重要的事情吗?

我想知道,是否可以没有父为我的实体?

当然可以,但是你需要考虑你将如何读写你的数据,这样你就不会遇到任何问题。

如果你没有祖先,你的查询将只有最终一致性,所以你可能会发现一些与你的查询不匹配的结果。记住,你也可以使用跨实体组('XG')事务,它可以涉及多达5个实体组(没有祖先的实体定义自己的实体组),这允许你有一些灵活性。

另一方面,无论你的实体是否有祖先,你仍然可以在任何时候使用get-by-key获得强一致性。

这意味着您将受制于最终的一致性:事务之外的查询不能保证是一致的。如果这并不困扰您,那么就没有理由使用parent。

最新更新