多个名称空间中的数据存储区索引是否相同?

时间:2018-04-27 22:27:40

标签: google-cloud-platform google-cloud-datastore

我正致力于开发多租户SaaS系统,并且我将所有数据存储在数据存储区中。我为每个客户端都有一个单独的命名空间,但同一组"种类"在所有命名空间中。

这是我的问题:如果我为一种实体类型构建自定义索引,是否会在所有名称空间中提供此索引?或者我应该在某处指定命名空间?

这是我的自定义索引之一:

- kind: loginTrack  
  ancestor: no
  properties:
  - name: logDate
  - name: username
  - name: timeStamp

我在数据存储区中将其部署为自定义索引,但我不确定它是否适用于所有命名空间。

Datastore如何处理开发人员提供的索引?

1 个答案:

答案 0 :(得分:1)

正如您所观察到的,索引本身没有空间用于命名空间信息,它在应用程序域内的所有命名空间中的操作方式相同。

与每个命名空间映射的数据存储分区有什么不同。来自Multitenancy and partitioned data(强调我的):

  

Cloud Datastore使用分区来为每个租户设置数据。该   项目ID 和命名空间ID的组合形成分区ID,   它标识每个分区。实体属于单个实体   分区和查询的范围限定为单个分区

但请注意,对某个租户的数据进行操作是您应用的责任:与某个租户相关的所有操作必须才能执行租户的分区/命名空间上下文(即必须将命名空间指定为与数据存储区相关的调用的参数)。

对于在租户域中使用(共享)索引的特定情况,您必须在构建查询时指定租户的命名空间。否则,您将无法从该租户的分区中获得结果。