一次PostgreSql数据迁移,使用nodejs来完成

2014-02-08

XX开放平台不允许使用站外的服务器了,可是我们的app都在站外,数据库也在站外,全都要求迁移到其云主机上(坑爹啊)。我们在其云主机上仅有有限的资源,而且也有在运行中的数据库,要做数据迁移,正好重新清理一下数据库吧,把过期的没用的数据都转入到历史库,将原系统的数据和云主机上的数据做一次合并,打算用nodejs从站外服务读取数据,然后发送到云主机上,云主机接受数据并合并到现有系统里。站外服务器和云主机上的数据迁移都用nodejs来实现,想法确立之后,开始做一个简单设计。

为什么要选用nodejs,因为可以快速开发,快速部署,js代码写起很轻快,顺便实践一个小小的nodejs项目。

要实现的功能:

sender.js

  职责:接收命令行参数,读取需要迁移的源数据,转换成message格式,发送到云主机的服务上,并在开始和结束处记录日志,程序重启可以按日志断点续传。

receiver.js (云主机只有80端口开放,用apache做一个proxy)

  职责:接受源数据,保存message到数据库,并返回结果给sender。

processer.js

  职责:定时轮询读取message数据,有未处理的数据,则处理数据整合逻辑(合并用户ID,合并用户数据等)

 

 

 

2014-02-09

由于我们的数据库都是Postgresql,服务器都是CentOS,开发环境在Win7,先安装开发环境和生产环境的nodejs环境

(1)在Linux下安装nodejs,以及node-postgresql,比较简单,参见我的另一篇博客。

(2)在Win7下安装nodejs,以及node-postgresql,稍微麻烦,需要安装Python 2.7,还需要安装node-gyp,为了能安装node-postgresql 还需要安装VC++,我安装的是VC++2010 Express,都安装好了之后,测试一下,node-postgresql能正常工作。

至此工作环境准备完毕,接下来开始进入模块的简单设计阶段。

传输过程中的数据结构Json格式:

 

message.type: 数据名

message.content: 数据内容

至此貌似云主机上接受数据使用mongodb比较合适,在接下来的设计和实践中再做比较和决策。

 

(待续)

 

posted @ 2014-02-09 20:38  kylindai  阅读(3256)  评论(1编辑  收藏  举报