使用 Python SDK 配置多元索引的資料生命週期(Time To Live,TTL),Tablestore 會自動清理超過儲存期限的索引資料。
前提條件
安裝Tablestore Python SDK並初始化用戶端。
已建立待配置的資料表,並將最大版本數設定為
1。
注意事項
使用多元索引生命週期管理功能前,必須禁止資料表通過
UpdateRow更新資料,以避免資料表與多元索引的資料不一致。資料表 TTL 按屬性列生效,多元索引 TTL 按整行生效;使用UpdateRow更新資料時,系統清理到期資料後,資料表可能只保留部分屬性列,而多元索引仍保留整行資料。如需更新資料,請改用PutRow覆蓋整行資料。多元索引 TTL 的單位為秒,取值為
-1或 int32 範圍內的正整數。-1表示永久儲存,正整數最大值對應的儲存時間約為 68 年。多元索引 TTL 與資料表 TTL 獨立配置,但多元索引 TTL 必須小於或等於資料表 TTL。如果多元索引的目標 TTL 大於當前資料表 TTL,先增巨量資料表 TTL;如果同時減小二者,先減小多元索引 TTL。
Tablestore 每天自動清理多元索引中的到期資料。在下一次清理完成前,查詢仍可能返回已到期但尚未清理的資料。更新資料表或多元索引 TTL 後,Tablestore 會在下一次清理周期自動清理因 TTL 變更而到期的存量資料。
操作步驟
生命週期配置包括禁止資料表通過 UpdateRow 更新資料、設定多元索引生命週期,以及按需設定資料表生命週期。資料表生命週期不是固定的最後一步,請根據上述 TTL 約束確定第 2 步和第 3 步的執行順序。
-
禁止資料表通過
UpdateRow更新資料。以下樣本禁止
example_table通過UpdateRow更新資料。table_options = TableOptions( time_to_live=None, max_version=None, max_time_deviation=None, allow_update=False, ) client.update_table( "example_table", table_options=table_options, ) -
設定多元索引生命週期。
根據多元索引是否已建立,選擇相應的設定方式。
建立索引
建立多元索引時,將生命週期設定為 7 天。
fields = [ FieldSchema("category", FieldType.KEYWORD, index=True), FieldSchema("price", FieldType.LONG, index=True), ] index_meta = SearchIndexMeta( fields, time_to_live=7 * 24 * 60 * 60, ) client.create_search_index( "example_table", "example_index", index_meta, )已有索引
將已有多元索引的生命週期更新為 7 天。
index_meta = SearchIndexMeta( fields=None, time_to_live=7 * 24 * 60 * 60, ) client.update_search_index( "example_table", "example_index", index_meta, ) -
按需設定資料表生命週期。
以下樣本將
example_table的生命週期設定為 7 天。請根據上述 TTL 約束,在設定多元索引生命週期之前或之後執行此操作。table_options = TableOptions( time_to_live=7 * 24 * 60 * 60, max_version=None, max_time_deviation=None, ) client.update_table( "example_table", table_options=table_options, )