【问题标题】:What the conceptual difference between tenant and namespace租户和命名空间之间的概念区别是什么
【发布时间】:2023-03-10 12:02:01
【问题描述】:

我不久前在 Stormpath 和 Google Cloud Datastore 的上下文中遇到了租户术语。让我疯狂的是,为什么我们需要引入新术语来定义命名空间?或者我可能遗漏了一些描述租户特定特性的东西,而命名空间没有?

虽然,在整个概念中,我仍然无法在这里理解多租户的概念?多租户有什么意义?它只是看起来像多命名空间的东西,但具有相同的结构。

那么,这两个词有什么区别呢?

【问题讨论】:

    标签: namespaces google-cloud-datastore multi-tenant


    【解决方案1】:

    在 Datastore 中,可以使用命名空间来创建多租户结构。

    示例:

    假设您想创建一个社交网络,例如 Facebook,但要简化。您将拥有用户、帖子和 cmets。

    实体

    • 用户
    • 帖子
    • cmets

    命名空间

    您可以将命名空间(用户 ID)分配给“帖子”,而不是将“帖子”实体声明为“用户”实体的子实体。

    就数据结构而言,似乎没有区别,但就性能而言,确实如此。当您将实体声明为父实体的子实体时,Datastore 需要将所有子实体存储在一起,并确保该父实体中的数据一致性。为实体分配命名空间时,它可以分发数据,但不保证绝对一致性。

    这就是为什么 Datastore 将每个父级内的写入限制为每秒 1 次(平均),但不会在命名空间内施加写入限制。

    “一致性”是什么意思?

    在此示例中,假设 Jack 现在发布了一篇帖子。玛丽和约翰是他的朋友。如果 Mary 和 John 在 Jack 发帖后立即访问 Jack 的帖子,是否 100% 保证两人都会看到这个新帖子?

    • 如果帖子是用户 (Jack) 的孩子,他们会。
    • 如果帖子位于用户 (Jack) 命名空间中,则在给定时间点可能不正确;最终,双方都会看到该帖子,但更改可能需要一些时间才能传播。

    【讨论】:

    • 那么,基本上,一切都是为了实现更高性能的数据结构化?
    • 没错。如果您预计每秒有大量写入,请使用命名空间。如果您的用例要求数据一致性,请使用祖先路径。如果您两者都需要,Datastore 不适合您。查看 Datastore Multitenancy 文档了解更多详细信息。在此页面中,您还可以找到有关如何在 Go、Java 和 Python SDK 中实现此架构的指南链接。
    • 一个澄清:每秒写入次数应低于每个父级的 1/秒(平均跨时间)。您可以每秒进行 100 万次写入,只要它不超过单亲的 1/秒(平均)。
    • @RenatoByrro 对祖先路径的读取是否有任何限制?读取、祖先或命名空间时哪个更快?
    • 抱歉,不知道这些问题的答案,@JohnBalvinArias
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 2019-05-17
    • 2012-06-02
    • 2016-04-24
    • 1970-01-01
    • 2020-08-15
    • 2011-03-07
    • 2013-12-23
    相关资源
    最近更新 更多