如何将新的STORING列添加到索引中

时间:2017-08-30 22:10:51

标签: google-cloud-platform google-cloud-spanner

如何更改二级索引?例如:我想在enum mytypeid { DERIVED1, DERIVED2, }; struct Base { virtual mytypeid type() = 0; }; struct Derived1 : public Base { static const mytypeid mytype = DERIVED1; virtual mytypeid type() { return mytype ; } }; struct Derived2 : public Base { static const mytypeid mytype = DERIVED2; virtual mytypeid type() { return mytype ; } }; //... void fn(Base &a) { if(a.type() == Derived1::mytype) { std::cout<<"1"<<std::endl; } } 规范中添加一个新列。

1 个答案:

答案 0 :(得分:1)

如果要更新索引以在其STORING子句中存储新列,则需要几个步骤。 Cloud Spanner不支持直接更新索引模式,因此您需要创建新索引并删除旧索引。例如,如果您有一个旧索引“myindex”,那么您正在尝试更新:

  1. 创建一个新索引,“myindex2”(或任何您希望的名称),具有您所需的STORING规范。
  2. 请注意,回填新索引可能需要数小时 或天。您将知道何时创建索引 架构更改的长时间运行已完成。
  3. 更新您的应用程序代码以开始使用myindex2。
  4. 删除旧索引。
  5. 请注意,如果您希望新索引与旧索引具有相同的名称,则可以重复上述步骤重新创建myindex。但是,仍然会有一个临时期间,您将没有名为“myindex”的索引(这可能持续数小时到数天),因此您的应用程序代码需要对此具有弹性。通常最简单的方法是更新应用程序代码以指向新的索引名称。