使用資料版本以及資料生命週期(TTL)功能,您可以有效管理資料,減少資料存放區空間,降低儲存成本。

版本號碼

每次更新屬性列的值均會為該值產生一個新版本,版本的值即為版本號碼(時間戳記)。

在屬性列中寫入資料時,如果未設定版本號碼,則系統會自動產生資料的版本號碼,您也可以自訂資料的版本號碼。 版本號碼的單位為毫秒,在進行TTL比較和有效版本偏差計算時,需要除以1000換算成秒。

  • 當由系統自動產生資料的版本號碼時,系統預設將目前時間的毫秒單位時間戳記(從1970-01-01 00:00:00 UTC計算起的毫秒數)作為屬性列值的版本號碼。
  • 當自訂資料的版本號碼時,屬性列值的版本號碼需要為64位的毫秒單位時間戳記且在有效版本範圍內。
使用版本號碼,您可以實現以下功能:
  • 資料生命週期(TTL)

    版本號碼可以用來定義資料表中屬性列值的生命週期。當屬性列中資料的保留時間長度超過設定的TTL後,系統會自動非同步清理對應版本號碼的資料。

    例如資料的版本號碼為1468944000000(即2016-07-20 00:00:00 UTC),如果設定資料表的TTL為86400(一天),則該版本號碼的資料會在2016-07-21 00:00:00 UTC到期,系統會自動非同步刪除該版本號碼的資料。

  • 每行資料的版本讀取

    讀取一行資料時,您可以指定每列最多讀取的版本個數或者讀取的版本號碼範圍。

最大版本數

最大版本數(Max Versions)表示資料表中的屬性列能夠保留資料的最大版本個數。當屬性列中資料的版本個數超過設定的最大版本數時,系統會自動非同步刪除較早版本的資料。
重要 當前Tablestore未限制最大版本數。但是出於效能與易用性考慮,建議控製版本數在500以內。

建立資料表時,如果未設定最大版本數,則系統會使用預設值1,您也可以自訂屬性列的最大版本數。建立資料表後,您可以通過UpdateTable介面修改資料表的最大版本數。

超過最大版本數的資料版本為無效資料,即使系統還未刪除資料,使用者已無法讀取對應資料。

  • 當調小最大版本數時,如果資料版本個數超過新設的最大版本數,系統會非同步刪除較早版本的資料。
  • 當調大最大版本數時,如果系統還未刪除超過舊的最大版本數的對應版本資料,且對應版本資料在新設的最大版本數範圍中,則對應版本的資料可以重新讀取。

資料生命週期

資料生命週期是資料表的一個屬性,即資料的儲存時間,單位為秒。當屬性列中資料的保留時間超過設定的TTL時,系統會自動非同步清理超過該屬性列的資料。如果一行中所有屬性列中資料的保留時間均超過了TTL,則系統會自動非同步清理該行資料。

例如資料表的TTL設定為86400(一天),在2016-07-21 00:00:00 UTC時,資料表中所有版本號碼小於1468944000000(除以1000換算成秒後即2016-07-20 00:00:00 UTC)的屬性列資料均會到期,系統會自動非同步清理對應到期資料。

建立資料表時,如果未設定TTL,則系統會使用預設值-1(表示資料永不到期),您也可以自訂TTL。建立資料表後,您可以通過UpdateTable介面修改TTL。

超過TTL的到期資料為無效資料,即使系統還未刪除資料,使用者已無法讀取對應資料。

  • 當調小TTL時,可能會有資料到期,系統會非同步刪除對應到期資料。
  • 當調大TTL時,如果系統還未刪除在舊的TTL之外的以前版本的資料,且對應版本資料在新設的TTL中,則對應版本的資料可以重新讀取。

有效版本偏差

為了避免寫入資料時,自訂的時間戳記與目前時間的偏差超過了資料表的TTL,導致寫入的資料立即到期的問題,您可以設定有效版本偏差。

有效版本偏差(Max Version Offset)是指定的資料版本號碼與系統目前時間偏差的允許最大值,單位為秒。有效版本偏差為正整數,可以大於1970-01-01 00:00:00 UTC時間到目前時間的秒數。

為了保證資料寫入成功,在寫入資料時系統會檢查屬性列資料的版本號碼。屬性列資料的有效版本範圍為[max{資料寫入時間-有效版本偏差,資料寫入時間-資料生命週期},資料寫入時間+有效版本偏差)。只有當屬性列資料的版本號碼(單位為毫秒)除以1000換算為秒後在有效版本範圍時,才能成功寫入資料。

例如當資料表的有效版本偏差為86400(一天),在2016-07-21 00:00:00 UTC時,只能寫入版本號碼大於1468944000000(換算成秒後即2016-07-20 00:00:00 UTC)並且小於1469116800000(換算成秒後即2016-07-22 00:00:00 UTC)的資料。當某一行的某個屬性列資料的版本號碼為1468943999000(換算成秒後即2016-07-19 23:59:59 UTC)時,該行資料寫入失敗。

建立資料表時,如果未設定有效版本偏差,則系統會使用預設值86400,您也可以自訂資料有效版本偏差。建立資料表後,您可以通過UpdateTable介面修改有效版本偏差。

計費

  • 使用資料多版本時,會產生基於版本號碼與各個版本資料額外的儲存量費用。
  • 配置生命週期管理清理資料,不會有額外的資料清理費用。但開啟生命週期管理功能後,會在各個屬性列增加時間戳記作為的版本號碼資料,有額外的儲存量產生。

更多資訊,請參見資料存放區量