mongodb和mysql的一个小小的取舍比较

对于创业的团队或者个人的项目来讲,在项目初期,可能会考虑一些比较新奇的技术或者方案。

比如关系型数据库能满足的,可能会选择其他一些Nosql方案

比如memcache能满足的,可能选择了redis来做缓存

我在做一个业余小项目thepast.me的时候

由于当时考虑到用户同步过来的数据量会很大,并且对查询的速度要求比较高

所以选择了使用mongodb来存储用户的历史数据。

前几天,在用户数量2200,共存储了440万条数据的时候,mongodb的数据文件已经占用了20G的磁盘空间

由于linode的磁盘还比较贵,2G/month 为2$,所以,我需要更换后端的存储引擎,更换为更为熟悉的mysql。

花了一天的时间,很艰难的把440万条,20G的数据,从mongodb中导出,然后插入到mysql中。

在mysql启用innodb compression的情况下,成功的把数据文件,从20G降到了7个G,节省一些开支。

另外,由于代码在查询数据库的时候,都是使用主键或者索引查询,然后又有memcache的支持,所以速度相当快。

——

小结:

mongodb:
1、加了索引的情况下,在几十G到百G的数据量,查询性能比较恒定,但也谈不上快。
2、mongodb真的很浪费磁盘空间。
3、倒腾大数据,很费神。

mysql:
1、可靠,成熟,自己熟悉。
2、主键、索引查询,速度稳定、快。
3、相比mongodb,节省30%的磁盘,如果启用innodb compression,则可以节省60%的磁盘。

另外,感谢专业dba 李彬 提供的技术支持。

发表评论