跨多个命名空间的数据存储索引是否相同?
Are datastore indexes same across multiple namespaces?
我正在开发一个多租户 SaaS 系统,并将所有数据存储在 Datastore 中。我为每个客户端都有一个单独的名称空间,但在所有名称空间中都有相同的 "kinds" 集。
这是我的问题:如果我为一种实体类型构建自定义索引,该索引是否会在所有命名空间中提供?还是我也应该在某处指定命名空间?
这是我的自定义索引之一:
- kind: loginTrack
ancestor: no
properties:
- name: logDate
- name: username
- name: timeStamp
我将其部署为 Datastore 中的自定义索引,但我不确定它是否适用于所有命名空间。
Datastore 如何处理开发人员提供的索引?
如您所见,索引本身没有命名空间信息的空间,它在应用程序域内的所有命名空间中以相同的方式运行。
不同的是映射到每个命名空间的数据存储分区。来自 Multitenancy and partitioned data(强调我的):
Cloud Datastore uses partitions to silo data for each tenant. The
combination of a project ID and a namespace ID forms a partition ID,
which identifies each partition. An entity belongs to a single
partition, and queries are scoped to a single partition.
但请注意,对特定租户的数据进行操作是您应用程序的责任:所有与特定租户相关的操作必须在该租户的 partition/namespace 上下文(即命名空间必须指定为数据存储相关调用的参数)。
对于在租户域中使用(共享)索引的特殊情况,您必须在构建查询时指定租户的名称空间。否则您将无法从该租户的分区中获得结果。
我正在开发一个多租户 SaaS 系统,并将所有数据存储在 Datastore 中。我为每个客户端都有一个单独的名称空间,但在所有名称空间中都有相同的 "kinds" 集。
这是我的问题:如果我为一种实体类型构建自定义索引,该索引是否会在所有命名空间中提供?还是我也应该在某处指定命名空间?
这是我的自定义索引之一:
- kind: loginTrack
ancestor: no
properties:
- name: logDate
- name: username
- name: timeStamp
我将其部署为 Datastore 中的自定义索引,但我不确定它是否适用于所有命名空间。
Datastore 如何处理开发人员提供的索引?
如您所见,索引本身没有命名空间信息的空间,它在应用程序域内的所有命名空间中以相同的方式运行。
不同的是映射到每个命名空间的数据存储分区。来自 Multitenancy and partitioned data(强调我的):
Cloud Datastore uses partitions to silo data for each tenant. The combination of a project ID and a namespace ID forms a partition ID, which identifies each partition. An entity belongs to a single partition, and queries are scoped to a single partition.
但请注意,对特定租户的数据进行操作是您应用程序的责任:所有与特定租户相关的操作必须在该租户的 partition/namespace 上下文(即命名空间必须指定为数据存储相关调用的参数)。
对于在租户域中使用(共享)索引的特殊情况,您必须在构建查询时指定租户的名称空间。否则您将无法从该租户的分区中获得结果。