DynamoDB 本地安装、连接和管理
DynamoDB是AWS提供的一套Serverless数据库,理论上具有极好的伸缩性,无需开发人员关心分库分表。
但是它和Mysql、PostgreSQL等数据库不同,它本身是个云数据库,无法在开发者本地运行。因此开发者在开发过程中如何连接数据库,就成为了一个问题。
如果能在本地运行DynamoDB,开发的时候会方便很多。
本地安装和运行DynamoDB
AWS提供了一套可以本地运行的 mini 版本,DynamoDB Local,你可以在这个网址中查看它的介绍以及下载它:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
DynamoDB Local安装起来还是比较麻烦,需要jre,对于前端开发者来说,有个更方便使用的基于JS的版本:dynalite https://www.npmjs.com/package/dynalite。
安装dynalite:
1$ npm i -g dynalite
启动 dynalite:
1$ dynalite
它会默认监听4567端口,也可以使用--port
选项改变默认端口
连接本地的DynamoDB
本地的DynamoDB启动之后,还需要配置下程序中的连接参数。
如果使用的是 aws-sdk,可以用如下的方式:
1var AWS = require('aws-sdk') 2 3var dynamo = new AWS.DynamoDB({endpoint: 'http://localhost:4567'}) 4 5dynamo.listTables(console.log.bind(console))
如果是用的 dynamoose,则可以用这样的配置:
1import * as dynamoose from 'dynamoose' 2 3dynamoose.local('http://localhost:4567')
顺便提一下,推荐使用dynamoose来操作DynamoDB,避免直接与DynamoDB繁琐的查询语法打交道,提高编程效率。
如果在使用serverless-offline本地运行代码,则还可以加入如下的判断,在本地模式自动使用本机的数据库:
1import * as dynamoose from 'dynamoose' 2 3if (process.env.IS_OFFLINE) { 4 // 如果是离线模式,就设置下DynamoDB使用本地连接 5 dynamoose.local('http://localhost:4567') 6}
管理本地的DynamoDB
现在本地的数据库搭建和连接都有了,还差一个管理工具。
万能的npm仓库中有一个名为 dynamodb-admin 的包,可以用来做这个事。
https://www.npmjs.com/package/dynamodb-admin
用法如下:
1$ npm install -g dynamodb-admin 2 3# For Windows: 4$ export DYNAMO_ENDPOINT=http://localhost:4567 5$ dynamodb-admin 6 7# For Mac/Linux: 8$ DYNAMO_ENDPOINT=http://localhost:4567 dynamodb-admin
它会提供一套还算美观的界面,具备增删改查的能力。