表格存储可使用户把操做和扩展分布式数据库的沉重负担,交给阿里云来处理,这样,用户就不须要担忧硬件配置、磁盘故障、机器故障、软件安装和升级等工做,能够更专一到业务逻辑中去。网络
今天,就给你们介绍如何将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: