Amazon近期在一個博客帖子中宣布其NoSQL數據庫DynamoDB服務做了改進,添加了DynamoDB中存儲數據的過期時間(TTL,Time To Live)特性。這一特性允許根據時間閾值刪除那些價值與日俱減的數據,可降低企業數據存儲的開銷。
可擴展的無服務器數據庫服務在廣告、游戲、物聯網以及對低延遲數據訪問有需求的應用中具有廣泛的用例。Lyft就是Amazon推銷的一個用例,它通過遷移到DynamoDB實現了GPS數據的持久化,進而在駕駛位置跟蹤系統(Ride Location Tracking System)中使用。
對于在應用中存在短期數據波涌的企業,一個挑戰是如何處理數據滯留問題。例如,雖然GPS追蹤數據在駕車當時是非常有用的,但是這些數據的價值與日俱減。對企業而言,長期存儲這些數據會增加開銷負擔。
現在企業可以通過使用新的TTL特性設置一個時間閾值,數據一旦達到過期時限就會被自動刪除。AWS的首席布道師Jeff Barr解釋了TTL特性的工作機制:
該特性可以逐表啟用。啟用時只需為表項指定一個包含了過期時間的屬性。一旦設置了屬性并啟用了TTL管理(這兩個操作都可以通過一個API實現),DynamoDB將會查找并刪除過期的條目。這個過程是在后臺自動執行的,并不會影響到表的讀取和寫入操作。
開發人員和管理員可以通過AMS管理平臺(Management Console)設置TTL屬性,屬性值使用了DynamoDB Number格式,解釋為Unix新紀元時間(Epoch Time)系統中的秒值。TTL閾值可以從AWS的命令行接口(CLI,Command Line Interface)調用update-time-to-live命令更改,也可以在代碼中調用UpdateTimeToLive函數更改。
圖片來源:https://aws.amazon.com/blogs/aws/new-manage-dynamodb-items-using-time-to-live-ttl/
由于TTL而過期的表項可以被移動到冷存儲(Cold Storage),或是使用AWS Lamda和DynamoDB觸發器更新到其它的DynamoDB中。還可以使用DynamoDB流處理,或是直接刪除掉。
在使用DynamoDB TTL時,其它應了解的考慮包括:
TTL屬性可以在新的表或已有的表上應用,但是不能用作JSON文檔的元素,因為該屬性必須是DynaomoDB Number類型。 管理員能通過AWS Identity and Access Management(IAM)管理對TTL屬性的訪問。 使用TTL屬性并不會降低數據服務的性能,因為掃描和刪除是在后臺執行的。 使用TTL不需要支付額外的費用。客戶只需為表項被刪除前所占用的存儲付費。 TTL特性于2017年2月27日可用。查看英文原文: Amazon Adds Time to Live (TTL) Support to AWS DynamoDB