通过此功能,您可以动态修改多元索引的schema,例如在多元索引中新增、更新或者删除索引列,修改多元索引的路由键等。
功能概述
表格存储数据表是schema free的,而多元索引是强schema的。创建多元索引时,您需要指定添加到多元索引中的列,这样使用多元索引查询数据时才能查询到这些列。但是出于业务变更、性能优化等目的,修改多元索引schema成为一个非常常见的需求。例如以下场景:
- 新增索引列:随着业务发展,需要查询更多的列,则可以添加更多的索引列。
- 更新索引列:修改Text类型字段的分词器。
- 删除索引列:创建多元索引时,添加了不会作为查询条件的列,需要移除掉。
- 修改路由键:查询时合理指定路由键,减少查询时的读放大。
动态修改schema的具体流程如下所示,整个过程对业务层透明,您无需变更业务代码,即可实现轻量级动态修改schema。
- 在数据表上创建一个灰度索引,并根据需要新增、修改和删除多元索引的schema。
- 等待数据表的存量和增量数据同步到灰度索引,直到同步进度与多元索引的进度相同。
- 通过A/B测试逐步引流查询流量到灰度索引,直到100%查询流量均切到灰度索引。
- 验证无误后,交换源索引和灰度索引的schema。
- 删除源索引。
操作步骤
- 进入索引管理页签。
- 登录表格存储控制台。
- 在概览页面,单击实例名称或在操作列单击实例管理。
- 在实例详情页签的数据表列表区域,单击数据表名称或在操作列单击数据管理后选择索引管理页签。
- 基于源索引创建灰度索引。
- 查看索引同步信息。灰度索引会经历“存量同步”和“增量同步”两个阶段。数据同步完成前,系统会提示切换有风险,禁止用户切换;当灰度索引同步进度追上源索引的同步进度后,系统会提示可安全切换,此时请继续执行后续操作。
- 索引同步完成后,通过设置权重进行A/B测试。A/B测试功能支持将查询流量按照一定比例分摊到源索引和灰度索引来验证修改schema的效果。仅当查询流量全部都切到灰度索引时,才能继续执行后续步骤。
- 查询流量全部切换到灰度索引后,交换源索引和灰度索引的schema。交换索引后,源索引名会关联到新schema,而灰度索引名会关联到老schema,并且100%查询流量会查询源索引名关联的新schema。
- 在灰度/上线对话框的操作区域,单击交换索引。
- 在交换索引对话框,查看源索引和灰度索引的schema对比信息,确认无误后,单击确认交换。
- 交换索引并验证索引无误后,建议静置一段时间(例如一天)再删除源索引。在灰度/上线对话框,单击删除源索引,即可删除源索引。
安全性
为了保证操作的安全性,表格存储提供了“回滚机制”和“切换提醒”,最大限度地降低修改索引过程中可能的风险。
- 回滚机制动态修改Schema的关键步骤均支持回滚。
- 创建灰度索引后,如果发现灰度索引的Schema不符合预期,您可以删除后重新创建。
- 在A/B测试阶段,通过设置查询权重,将查询流量逐步引流到灰度索引。在此过程中,如果发现问题,可以随时重新设置查询权重,将查询流量重新引流到源索引。
- 交换源索引和灰度索引的Schema后,如果发现问题,您可以随时撤销交换,切回源索引的Schema。交换索引和撤销交换互为逆向操作。
- 切换提醒
如果在灰度索引的同步进度落后于源索引时将流量切到灰度索引,则可能会出现查询数据回退。此时表格存储会通过源索引和灰度索引的同步状态和最后同步时间,判断“是否可以安全切换”。
当出现如下情况时,表格存储会判断为可安全切换。- 当源索引处于全量阶段,灰度索引为全量或者增量阶段,即灰度索引已追上源索引。
- 源索引和灰度索引均处于增量阶段,且“源索引最后同步时间 - 60 s <= 灰度索引最后同步时间”,即灰度索引落后源索引的时间不超过1分钟。