表格存儲可使用戶把操做和擴展分佈式數據庫的沉重負擔,交給阿里雲來處理,這樣,用戶就不須要擔憂硬件配置、磁盤故障、機器故障、軟件安裝和升級等工做,能夠更專一到業務邏輯中去。網絡
今天,就給你們介紹如何將DynamoDB的數據增量遷移到表格存儲。併發
表格存儲支持的數據格式有:負載均衡
因爲DynamoDB支持文檔型數據類型,咱們須要將文檔型轉換爲一個String類型或者Binary類型存儲到表格存儲中,在讀取時須要反序列化成Json。函數
故,從DynamoDB遷移到表格存儲時,咱們作以下的數據轉換:性能
咱們使用DynamoDB的Stream數據流獲取DynamoDB表中的增刪改操做,將操做同步到表格存儲中,爲了不環境搭建,將同步程序運行在Lambda 中,流程以下圖:測試
使用Stream數據流中的'eventName'
字段來判別數據的增刪改操做:阿里雲
PutRow
"MODIFY" : 修改數據
"REMOVE":刪除數據,對應DeleteRow
Update
Delete
咱們以表Source爲例,主鍵爲user_id(字符串類型),排序鍵爲action_time(數字)。因爲DynamoDB的預留設置會影響讀寫的併發,故須要注意預留的設置。
實例函數名稱爲:data-to-table, 運行語言選擇爲 Python 2.7,使用 lambda-dynamodb-execution-role的角色。
點擊事件源的DynamoDB圖標,進行事件源配置,選擇 source 數據表批處理大小先選擇爲10進行小批量驗證,在實際運行過程當中建議爲100,因爲表格存儲的Batch操做最大爲200條數據,故不能超過200。
因爲tablestore須要依賴SDK及 protocolbuf等依賴包,咱們按照建立部署程序包 (Python)的方式進行 SDK依賴安裝及打包。
使用的函數zip包爲:lambda_function.zip 點擊下載 能夠直接本地上傳,也能夠先上傳到S3。
處理程序入口爲默認的 lambda_function.lambda_handler
基本設置中須要將超時事件設置在1分鐘以上(考慮到批量提交的延時及網絡傳輸時間)。
在數據導入時,須要 TableStore 實例名、AK等相關信息,咱們可使用一下兩種方式:
在表格存儲控制檯上建立數據表:__target__,主鍵爲 user_id(字符串)和action_time(整型)。
點擊右上角的 配置測試事件,輸入示例事件的json內容。
咱們準備了兩個示例的 Stream示例事件:
咱們將上述三個事件的內容依次保存爲putdata、updatedata、deletedata。
執行結果提示成功的話,則在表格存儲的 target表中就能夠讀到以下的測試數據。
依次選擇putdata、updatedata和deletedata,會發現表格存儲中的數據也會隨之更新和刪除。
測試經過以後,咱們在DynamoDB中新寫入一條數據,在表格存儲中立刻就能夠讀到這條數據,以下圖。
Lambda 運行的日誌都會寫入到 CloudWatch 中,在 CloudWatch 選擇對應的函數名,則能夠實時查詢到 Lambda 的運行狀態。
Lambda函數中,主要的代碼邏輯爲lambda_function.py 查看代碼,其餘則爲表格存儲SDK的依賴。lambda_function.py中主要包含了一下幾個function: