我正在考虑将GAE + NDB用于新项目。我对祖先仍然有点困惑,所以我可以就如何正确使用它们提出一些建议。
我的情况: 该应用程序将处理工厂的生产订单,我们计划拥有不同的客户。 为了减少管理任务,我们将让所有客户使用相同的应用程序和相同的数据存储区(拥有一个单独的应用程序+数据存储区将成为客户之间的一个很好的中国墙,但这是一个难以理解的噩梦)。
我需要实现一种在客户端之间隔离数据的方法。客户端A不应该能够访问此应用程序上任何其他客户端的任何数据。
那么建议在数据存储区中使用祖先来分隔来自不同客户端的数据吗? 我想在这种情况下我可以拥有像ClientA-Products,ClientA-Orders,ClientB-Products,ClientB-Orders等祖先密钥。或者甚至可能让客户端所有关键事务处理:如ClientA,ClientB ..?
或者是否最好在每个实体中将实体与客户关联? 在这种情况下"产品"和"命令"实体都将拥有一个属性"公司"必须在每次写入时由应用填写并包含在每个查询中。
提前感谢您的想法!
答案 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。