异模数据库同步工具 - 第一阶段

zb1481207860565 发布于 2017/01/25 07:05
阅读 13
收藏 2

一、【业务需求】

开发一个数据库迁移工具,目的是把MySQL的数据库的数据实时同步到MongoDB中。

已经有一个初步模块和开发测试环境(基于Docker)。基本的功能已经可以执行,现在要求细化。

二、技术要求

三、功能要求

3.1  能够按照严格的一对一关系把mysql里面的表同步到mongodb的集合(collection)里面来。无模式转化。原来4张表,就是4个mongodb集合

3.2  能够把两张mysql表合并到一个mongodb集合。如,订单表和产品表,订单表里可能有产品ID。合并后订单表里有订单信息,也有产品的详细信息

3.3  能够把1:N的关系用mongo的数组来表示出来。比如说, 一个客户有多个订单,在mongo里面可能可以用客户文档(JSON Document)的一个数组字段属性来把该客户所有订单都内嵌到客户文档内。

3.4  支持源数据库的DML如insert update, delete,能够同步复制到mongodb(上述场景1、2、3)。MongoDB的数据应该和菜市场保持高度一致。

3.5 多重嵌套文档的支持 - 比如说,一个客户有几个订单,一个订单有几个产品,订单和产品信息应该都能够内嵌于客户的文档内,当然这个时候需要多重数组嵌套。当产品信息改变的时候,我们应该自动更新MongoDB文档内的数组里面的数组。

3.6 字段名改变。当把mysql的表转成mongo时候,可以按照配置把字段名改成新的mongodb字段名

四、其他功能性要求

4.1 数据类型转换。能够对MySQL的所有数据类型,转换成为相应的MongoDB类型

- Timestamp和Date

- 各种数字(包括decimal)

- 字符串

- 逻辑值

要有相应的测试代码对这些数据转换进行验证。

五、非功能性要求

5.1 mysql数据库的更新操作,需要在1秒之内同步到MongoDB

5.2 为保证支持大量数据的,多系统数据的同时同步需求,采用分布式数据队列技术Kafka 来作为数据库更新消息的中间件

【人员要求】

一、能力要求

- 熟练使用Python,最好用过Pymongo、MongoDB,能够提供Python的项目文件供参考

- 如果对node.js非常厉害,可以考虑使用nodejs来编程而不是python

- 对数据库比较了解,类似于外键,cascade delete, 索引等概念, 熟悉mySQL

- 最好使用过MongoDB

- 熟练使用unit test, 能够搭建unit test环境和创建unit tests

- 擅长文档,能够提供样本设计文档(概要设计、详细设计)

- 了解Kafka 和 Docker


【交付要求】

一、交付计划

本需求将按3个阶段进行交付和验收,初步的交付计划以及相应的提交物要求如下:

1、第一阶段,3.1,3.2, 3.3, 3.4 以及相关设计方案及单元测试代码

2、第二阶段,3.5,3.6, 4.1

3、第三阶段,提供UI界面进行迁移工作的管理

二、验收基准

-  概要设计文档:能够提供系统模块图(如何组织脚本或者类文件?),相关UML图等

-  详细设计文档:能够清晰的描述所实现功能,包括参数说明,功能行为说明等

-  代码可测试性:清晰的单元测试结构,单元测试可运行,测试覆盖范围应该包括所有主要功能

-  功能完整性:  所有列出的功能按照需求实现 

注意:第一阶段中很多已经由python实现,((3.1,3.2,3.3),也可以开始运行。主要是3.4 部分,以及更多一些技术上的细化和方案的整理,以及单元测试等。

另外附件包括一个Python脚本,第一阶段所有代码均在那个rdm.py里面,可参考一下代码开发方面的工作量。

本人自己为架构师以及具有开发背景。能够和开发者比较清楚描述需求。此项目为多阶段项目。第一阶段主要目标希望找到合适合作伙伴。

加载中
0
Gondar
Gondar
需求描述可以更正下,并不是实时同步,而是针对固定机构数据库的迁移工具?
0
z
zb1481207860565

引用来自“Gondar”的评论

需求描述可以更正下,并不是实时同步,而是针对固定机构数据库的迁移工具?
严格来说不是迁移,可以理解为异构数据库 replication,增加模式转换功能
0
wulicode
wulicode
数据量有多大?
返回顶部
顶部