我正致力于开发多租户SaaS系统,并且我将所有数据存储在数据存储区中。我为每个客户端都有一个单独的命名空间,但同一组"种类"在所有命名空间中。
这是我的问题:如果我为一种实体类型构建自定义索引,是否会在所有名称空间中提供此索引?或者我应该在某处指定命名空间?
这是我的自定义索引之一:
- kind: loginTrack
ancestor: no
properties:
- name: logDate
- name: username
- name: timeStamp
我在数据存储区中将其部署为自定义索引,但我不确定它是否适用于所有命名空间。
Datastore如何处理开发人员提供的索引?
答案 0 :(得分:1)
正如您所观察到的,索引本身没有空间用于命名空间信息,它在应用程序域内的所有命名空间中的操作方式相同。
与每个命名空间映射的数据存储分区有什么不同。来自Multitenancy and partitioned data(强调我的):
Cloud Datastore使用分区来为每个租户设置数据。该 项目ID 和命名空间ID的组合形成分区ID, 它标识每个分区。实体属于单个实体 分区和查询的范围限定为单个分区。
但请注意,对某个租户的数据进行操作是您应用的责任:与某个租户相关的所有操作必须才能执行租户的分区/命名空间上下文(即必须将命名空间指定为与数据存储区相关的调用的参数)。
对于在租户域中使用(共享)索引的特定情况,您必须在构建查询时指定租户的命名空间。否则,您将无法从该租户的分区中获得结果。