(近没做啥数据挖掘,净整这事儿了……公司没有DBA,我们的口号式,每个开发都是运维/DBA,我们的目标是从删库到跑路)
非结构化数据可以使用NoSQL存储,NoSQL中我用的多的是MongoDB。数据量大的时候可以通过分片的方式横向扩展,请求也可以通过路由进行分发,后做到透明获取数据。
集群的部署其实不是很困难,但是各个配置调整起来比较繁琐,尤其是机器多的时候,3~5台机器还能通过手动操作,超过5台基本就要骂娘了。
而且MongoDB的配置文件可以把集群配置的非常灵活,但是事实上,大部分的用户是不需要这么灵活的配置的,大部分都是N台机器,每台1个路由和配置节点,以及K个副本集使用的分片。K一般也就是2~3。
逻辑架构如图:
物理架构则是:
集群的可视化部署我们可以通过Ops Manager实现,但是这个工具只有mongoDB的企业版才会有,而且谁也不会想自己做个玩具就要用企业版吧!
通过Python的paramiko模块我们可以轻易的实现远程登陆,也就能上传文件,执行脚本之类的工作,通过自己编写的远程进程管理器,我们可以实现集群的自动化部署,之后有时间我们可以一步一步实现Ops Manager中关于监控,性能调优的一些功能,但是现阶段只实现了部署和简单的监控。
目前部署工具和文档开源在:TsingJyujing/MongoDBClusterDeploy
欢迎大家试用,如果有问题请随时提Issue给我。