AppEngine NDB:如何正确应用祖先?

时间:2014-12-13 05:16:17

标签: google-app-engine google-cloud-datastore app-engine-ndb ancestor

我正在考虑将GAE + NDB用于新项目。我对祖先仍然有点困惑,所以我可以就如何正确使用它们提出一些建议。

我的情况: 该应用程序将处理工厂的生产订单,我们计划拥有不同的客户。 为了减少管理任务,我们将让所有客户使用相同的应用程序和相同的数据存储区(拥有一个单独的应用程序+数据存储区将成为客户之间的一个很好的中国墙,但这是一个难以理解的噩梦)。

我需要实现一种在客户端之间隔离数据的方法。客户端A不应该能够访问此应用程序上任何其他客户端的任何数据。

那么建议在数据存储区中使用祖先来分隔来自不同客户端的数据吗? 我想在这种情况下我可以拥有像ClientA-Products,ClientA-Orders,ClientB-Products,ClientB-Orders等祖先密钥。或者甚至可能让客户端所有关键事务处理:如ClientA,ClientB ..?

或者是否最好在每个实体中将实体与客户关联? 在这种情况下"产品"和"命令"实体都将拥有一个属性"公司"必须在每次写入时由应用填写并包含在每个查询中。

提前感谢您的想法!

1 个答案:

答案 0 :(得分:0)

多租户将非常适合您的用例。

from google.appengine.api import users

def namespace_manager_default_namespace_for_request():
    # assumes the user is logged in.
    return 'client_id'

详细了解here