如果由于業務變更、性能優化等情況需要在多元索引中新增、更新或者刪除索引列以及修改多元索引的路由鍵和預排序方式,您可以通過動態修改多元索引的schema實現。動態修改schema操作包括為源索引創建灰度索引并修改多元索引schema、等待表數據全部同步到灰度索引、設置權重進行A/B測試、交換源索引和灰度索引的schema和刪除灰度索引五個步驟。
功能概述
表格存儲數據表是schema free的,而多元索引是強schema的。創建多元索引時,您需要指定添加到多元索引中的列,這樣使用多元索引查詢數據時才能查詢到這些列。但是出于業務變更、性能優化等目的,修改多元索引schema成為一個非常常見的需求。例如以下場景:
新增索引列:隨著業務發展,需要查詢更多的列,則可以添加更多的索引列。
更新索引列:可以修改列類型、虛擬列、是否數組和分詞類型等。
刪除索引列:隨著業務發展,有些列不再需要查詢,可以考慮刪掉。
修改路由鍵:查詢時合理指定路由鍵,減少查詢時的讀放大和提升性能。
修改預排序:查詢時如果數據排序順序與預排序相同,則可以加速數據查詢。
使用流程
動態修改schema的具體流程如下圖所示。整個過程對業務層透明,您無需變更業務代碼,即可實現輕量級動態修改schema。
修改多元索引schema的主要步驟說明請參見下表。
步驟 | 操作 | 說明 |
1 | 創建灰度索引 | 為源索引創建一個灰度索引,并根據需要新增、修改和刪除多元索引的schema。 |
2 | 查看索引同步進度 | 灰度索引會自動同步數據表的數據,等待數據表的存量和增量數據同步到灰度索引,直到同步進度與源索引的進度相同。 |
3 | 設置權重進行A/B測試 | A/B測試功能支持將查詢流量按照一定比例分攤到源索引和灰度索引來驗證修改schema的效果。 通過A/B測試逐步引流查詢流量到灰度索引,直到100%查詢流量均切到灰度索引。 |
4 | 交換索引Schema | 查詢流量全部切換到灰度索引后,交換源索引和灰度索引的schema。 交換索引后,源索引名會關聯到新schema,而灰度索引名會關聯到老schema,并且100%查詢流量會查詢源索引名關聯的新schema。 |
5 | 刪除灰度索引 | 交換索引并驗證索引無誤后,建議靜置一段時間(例如一天)再刪除灰度索引。 |
操作步驟
進入索引管理頁簽。
登錄表格存儲控制臺。
在頁面上方,選擇地域和資源組。
在概覽頁面,單擊實例名稱或在操作列單擊實例管理。
在實例詳情頁簽的數據表列表區域,單擊數據表名稱或在操作列單擊索引管理。
基于源索引創建灰度索引。
在索引管理頁簽,單擊多元索引操作列的修改schema。
在重建索引對話框,根據需要添加、修改或者刪除索引字段。
如果需要修改多元索引的路由鍵或者預排序方式,請打開高級選項開關,然后根據下表說明進行配置。
參數
說明
路由鍵
自定義路由字段,可以選擇部分主鍵列作為路由字段。
在進行索引數據寫入時,會根據路由字段的值計算索引數據的分布位置,路由字段的值相同的記錄會被索引到相同的數據分區中。更多信息,請參見多元索引路由字段的使用。
預排序
多元索引默認按照設置的索引預排序方式進行排序。使用多元索引查詢數據時,預排序決定了數據的默認返回順序。更多信息,請參見索引預排序。
如果要按照主鍵排序,直接選擇此參數為默認排序即可。
如果要按照字段值或者主鍵組合排序,請選擇此參數為自定義排序,并進行配置。具體操作如下:
選擇排序類型為主鍵預排序或者字段預排序,并單擊添加。
根據實際選擇字段名或排序方式。
排序方式支持選擇升序和降序。
重要只有選擇排序類型為字段預排序時,才需要選擇字段名。
使用自定義排序時支持同時配置主鍵預排序和字段預排序,請根據需要配置。
單擊確認重建。
在索引對比對話框,查看源索引和灰度索引的路由鍵、預排序和schema對比信息,確認無誤后,單擊確定。
查看索引同步信息。
單擊源索引前的圖標或者源索引名稱。
系統會顯示源索引的灰度索引。
單擊灰度索引操作列的灰度/上線。
重要灰度索引會經歷“存量同步”和“增量同步”兩個階段。
數據同步完成前,將鼠標光標移動至操作列的灰度/上線按鈕上,系統會提示切換有風險,禁止用戶切換。
當灰度索引同步進度追上源索引的同步進度后,將鼠標光標移動至操作列的灰度/上線上,系統會提示可安全切換,此時請繼續執行后續操作。
在灰度/上線對話框,查看索引同步信息。
索引同步完成后,通過設置權重進行A/B測試。
A/B測試功能支持將查詢流量按照一定比例分攤到源索引和灰度索引來驗證修改schema的效果。僅當查詢流量全部都切到灰度索引時,才能繼續執行后續步驟。
在灰度/上線對話框的操作區域,拖動滑塊調整源索引和灰度索引的權重后,單擊設置權重。
在設置權重對話框,查看權重數據和schema對比信息。
確認無誤后,單擊設置權重。
在系統提示框中單擊確定。
查詢流量全部切換到灰度索引后,交換源索引和灰度索引的schema。
交換索引后,源索引名會關聯到新schema,而灰度索引名會關聯到老schema,并且100%查詢流量會查詢源索引名關聯的新schema。
在灰度/上線對話框的操作區域,單擊交換索引。
在交換索引對話框,查看源索引和灰度索引的路由鍵、預排序和schema對比信息,確認無誤后,單擊確認交換。
交換索引并驗證索引無誤后,建議靜置一段時間(例如一天)再刪除源索引。
在灰度/上線對話框,單擊刪除灰度索引。
在確認刪除灰度索引對話框,確認要刪除的灰度索引信息正確后,在文本框中輸入
我已確認新索引數據已經同步完成并且灰度一定時間
內容。單擊確定。
安全性
為了保證操作的安全性,表格存儲提供了“回滾機制”和“切換提醒”,最大限度地降低修改索引過程中可能的風險。
回滾機制
動態修改Schema的關鍵步驟均支持回滾。
創建灰度索引后,如果發現灰度索引的Schema不符合預期,您可以刪除后重新創建。
在A/B測試階段,通過設置查詢權重,將查詢流量逐步引流到灰度索引。在此過程中,如果發現問題,可以隨時重新設置查詢權重,將查詢流量重新引流到源索引。
交換源索引和灰度索引的Schema后,如果發現問題,您可以隨時撤銷交換,切回源索引的Schema。交換索引和撤銷交換互為逆向操作。
切換提醒
如果在灰度索引的同步進度落后于源索引時將流量切到灰度索引,則可能會出現查詢數據回退。此時表格存儲會通過源索引和灰度索引的同步狀態和最后同步時間,判斷“是否可以安全切換”。
當出現如下情況時,表格存儲會判斷為可安全切換。
當源索引處于全量階段,灰度索引為全量或者增量階段,即灰度索引已追上源索引。
源索引和灰度索引均處于增量階段,且“源索引最后同步時間 - 60 s <= 灰度索引最后同步時間”,即灰度索引落后源索引的時間不超過1分鐘。
計費說明
灰度索引構建和數據寫入不會產生費用。源索引和灰度索引均會產生與存儲規模有關的存儲和預留讀CU費用。更多信息,請參見多元索引計量計費。
相關文檔
如果要在不改變表結構情況下實現新字段新數據類型的查詢功能,您可以通過修改多元索引Schema或者新建多元索引時結合虛擬列功能來實現。更多信息,請參見虛擬列。
您可以根據查詢場景使用全匹配查詢、匹配查詢、短語匹配查詢、精確查詢、多詞精確查詢、前綴查詢、范圍查詢、通配符查詢、多條件組合查詢、嵌套類型查詢、地理距離查詢、地理長方形范圍查詢、地理多邊形范圍查詢、列存在性查詢、折疊(去重)、模糊查詢、虛擬列等功能查詢所需數據。
如果需要使用SQL快速查詢多元索引中不同類型的數據,您可以使用SQL查詢功能通過多元索引實現。更多信息,請參見SQL查詢介紹、創建多元索引的映射關系、查詢數據、全文檢索、多元索引數組類型、多元索引嵌套類型和多元索引虛擬列。
如果要實現求最小值、求最大值、求和、求平均值、統計行數、去重統計行數、百分位統計、按字段值分組、按范圍分組、按地理位置分組、按過濾條件分組、直方圖統計、日期直方圖統計、獲取統計聚合分組內的行、嵌套查詢等數據分析需求,您可以使用多元索引統計聚合功能實現。更多信息,請參見統計聚合。