【问题标题】:How to make a filter query across all tenants ignoring the namespace of each tenant (i.e. a query with WILDCARD namespace ) in objectify如何在 objectify 中忽略每个租户的命名空间(即使用 WILDCARD 命名空间的查询)对所有租户进行过滤查询
【发布时间】:2016-11-04 06:26:53
【问题描述】:

我有一个多租户应用程序,其中每所学校都是租户。每个学校可以有很多老师。所以我有两种实体,一种是“学校”,第二种是“老师”,这样每个老师都有一个家长学校。我正在使用objectify的@Parent注解来建立学校和老师之间的关系。

现在我想为我的管理门户统计学校的教师人数。objectify/datastore 中是否有全局命名空间的概念?

【问题讨论】:

    标签: google-cloud-datastore objectify


    【解决方案1】:

    您不能在单个查询中混合命名空间或遍历所有命名空间。据我所知,您别无选择,只能为每个命名空间运行多个查询。

    解决方法可能是 - 维护“管理员”命名空间并跟踪每所学校的教师人数和/或所有学校的人数。这意味着,当您在任何命名空间中插入/删除教师实体时,您将更新“admin”命名空间中的计数。

    【讨论】:

    • 我已经在做你说的,即在每个命名空间上运行查询。但我不希望这样,因为有超过 100 所学校(租户),而且它也可能会增长,所以首先通过一个查询获取所有命名空间,然后在给定命名空间中对教师进行查询,我认为这不是一个好方法.在最坏的情况下,对于 100 个租户,如果我没记错的话,我需要进行 1+100 次查询。所以应该有更好的方法来做到这一点,比如通配符命名空间
    • 我认为这违背了多租户的目的并增加了数据泄露的风险。想象一下,如果您不小心开始向另一个租户显示一个租户的数据会发生什么。同样,如果您只需要一些基本统计数据,例如教师人数,您应该考虑我建议的解决方法。
    • 管理门户需要显示许多其他需要此类查询的内容。计数就是一个例子。
    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多