有没有一种方法可以使用C#更新Google Cloud Datastore的index.yaml文件

时间:2019-08-20 08:03:04

标签: c# google-cloud-datastore

我正在一个使用数据存储区保存游戏中事件数据以进行机器学习的项目。我希望我可以通过API调用或其他方法在生产模式下更新index.yaml文件,而不是手动运行gcloud SDK命令。有什么办法可以达到这个目的?

[架构]

  • 我们使用的语言是C#.Net core 2.2
  • 我们正在使用“ GAME ID”作为数据存储区中的种类。每次我们有一个新游戏上线时,都会创建一个新的Kind(使用C#代码)。
  • 每种类型都具有相似的属性,但并非全部相同。
  • 所有类型都使用一组通用属性作为复合索引(比如说:UserId,TimeStamp和EventType)

[我当前的方法]

  • 我正在尝试将#AUTOGENERATED函数应用于我的数据存储区,但仅在我的模拟器数据存储区上起作用
  • 到目前为止,我已经可以将新的复合索引添加到模拟器的indexs.yaml文件中
  • 但是索引不会在生产数据存储上更新,我必须将索引附加到模拟器上,然后通过以下方式将其更新到生产中

    gcloud datastore indexes create 
    

    命令(尽管这是有道理的,因为官方文件只提到了这种方法)

[我需要什么]

由于在接下来的几个月中我们可能会上线许多新游戏,因此很难一一添加然后更新这些新游戏的索引。有什么方法可以自动更新生产数据存储上的indexs.yaml?

感谢您提出任何建议或参考资源!

1 个答案:

答案 0 :(得分:0)

您当前的方法仅适用于DataStore模拟器。这是预期的行为。因此,您可以识别索引,然后将其部署到生产数据库中。

Cloud Firestore in Datastore and Firestore native modes仅自动创建单个索引,而not composite indexes.

但是,使用Firestore(处于Firestore模式的数据存储)可以identify what indexes you are lacking using error message.

作为解决方法(也适用于Firestore模式),您可以:

  1. 创建composite indexes using API call,或
  2. 创建composite indexes using client libraries