0

我们将 Google Datastore 用于我们的仪表板。在仪表板中,我们为最终用户提供过滤选项。

假设我们有一个数据存储类型,其结构是:

{
    'attribute1': 'val1',
    'attribute2': 'val2',
    'attribute3': 'val3',
    'timestamp': 123456789,

}

有一个用例,我们需要在特定时间段内过滤数据,并结合不同的其他属性。

在 Datastore 中创建复合索引以实现此功能的最佳方法是什么?

有什么想法吗?

4

1 回答 1

0

Cloud Datastore 提供两种类型的索引

内置索引 -

这些是 Cloud Datastore 为每种实体类型的每个属性自动创建的索引。这些内置索引是单属性索引,适用于简单查询。

综合指数 -

复合索引是由用户而非 Cloud Datastore 自动构建的手动索引。这些是多属性索引。涉及使用两个或多个属性过滤数据的复杂查询需要复合索引。要构建复合索引,需要配置一个 index.yaml 文件,然后通过运行以下命令创建它 -

gcloud datastore indexes create ~/path/to/index.yaml/file

现在来到您的用例 -

由于您要根据两个以上的属性过滤数据,因此您不能使用内置索引。所以你必须使用复合或手动索引。为此,您需要定义一个索引配置文件并如上所述部署它。您希望根据特定时间段结合一个或多个属性来过滤数据。因此,对于用例,以下索引配置文件应该可以正常工作。

index.yaml

indexes:
- kind: demo
 properties:
 - name: attribute1
   direction: asc
 - name: attribute2
   direction: asc
 - name: attribute3
   direction: asc
 - name: timestamp
   direction: asc

在上面的配置文件中,该direction属性是可选的,如果你不指定它,它会默认将它作为升序(asc)。对于降序排序,您可以将其指定为desc. 这将通过组合配置文件中提到的两个或多个属性来过滤数据。您可以浏览此页面以了解有关 Cloud Datastore 中的索引的更多信息。

请注意,基于索引的查询机制支持范围广泛的查询,适用于大多数应用程序。Datastore 查询仍然存在一些限制或限制。我建议您浏览此页面以了解有关在 Cloud Datastore 中查询时的限制的更多信息。

于 2021-08-27T12:54:31.457 回答