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