租户和命名空间之间的概念差异是什么

时间:2017-04-08 18:24:20

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

我刚刚在Stormpath的背景下以及在Google Cloud Datastore的背景下面对租户术语。是什么让我为此疯狂,为什么我们需要引入新术语来定义命名空间?或者我可能遗漏了一些描述租户名称空间不具备的特定品质的东西?

虽然在这整个概念中,我仍然无法在这里获得多租户的概念?多租户有什么意义?它只是看起来像multinamespaces,但具有相同的结构。

那么,这两个术语有什么区别?

1 个答案:

答案 0 :(得分:7)

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

实施例

假设你想创建一个社交网络,比如Facebook,但是要简化。你有用户,帖子和评论。

实体

  • 用户
  • 帖子
  • 评论

命名空间

您可以将命名空间(用户ID)分配给'post',而不是将'post'实体声明为'user'实体的子节点。

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

这就是为什么数据存储在每个Parent内限制为每秒写入(平均),但不会在命名空间中强加写入限制。

'一致性'是什么意思?

在这个例子中,让我们说Jack现在发表了一篇文章。玛丽和约翰是他的朋友。如果Mary和John在Jack发布后立即访问Jack的帖子,是否100%保证会看到这个新帖子?

  • 如果帖子是用户(杰克)的孩子,他们会。
  • 如果帖子在用户(Jack)名称空间中,则在给定时间点可能不是这样;最终,两人都会看到这个帖子,但改变传播可能需要一些时间。