Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
395 views
in Technique[技术] by (71.8m points)

关于MongoDB使用场景的疑问

目前网站的数据库是MYSQL,里面存储了很多歌曲信息记录。

我在想如果把歌曲查询部分做成从MongoDB里查询,速度是不是会快一些?

以后对歌曲信息的增删写的时候,同时要跟MongoDB同步一下,是这样吧?没有NOSQL的经验,请各位指点下,谢谢。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

很多问题并非只有一个解决方案的,这意味着你既可以用这种技术,也可以用那种技术。学习目的随便怎样都可以,但是真实生产环境中强烈建议简化你的复杂度,用最简单的,你自己最熟悉的方式解决问题。思考一下是否真的有必要使用2个数据库来解决同一个问题。

我在想如果把歌曲查询部分做成从MongoDB里查询,速度是不是会快一些?

可能会,也可能不会。取决于你有多少数据量,使用MongoDB的数据模型设计是否合理,以及……你打算投入多少硬件资源在上面。NoSQL更专注于水平扩展,就是说在数据量不断增加的情况下,仍然能够保持查询速度在一定的水平上。个人的经验,如果有个几千万,上亿的数据,MongoDB可能才会真正发挥出优势来。在数据到达这个量级之前,如果仅仅是从速度上考虑我认为没有很大的必要引入额外一个数据库。它带来的收益跟对你造成的复杂度对比起来,只能说性价比不高。

以后对歌曲信息的增删写的时候,同时要跟MongoDB同步一下,是这样吧?

数据同步的问题取决于你对“一致性”的要求有多高。强一致的情况下,这就是一个分布式事务,恐怕对性能不是一件好事,违背了你想加快速度的初衷。如果是考虑最终一致性,可以看一下各种MySQL到MongoDB的ETL工具,比如Pentaho。当然自己通过代码实现也是可能的,只是考虑好各种容错问题并不是一件容易的事情。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
...