@
xoxo 按我的理解是。你做了一个广告数据存储和查询的平台。
那么是否用了Index:
http://docs.mongodb.org/manual/administration/indexes/Index又是如何设置的,是否是设置在查询的键上了。
再者Index大小是否超过了内存的大小:
http://docs.mongodb.org/manual/faq/indexes/#what-happens-if-an-index-does-not-fit-into-ram 如果超过了,一个是可能你的Index设计的不科学,还一个是你的内存太小了。这个时候无论什么数据库都会陷入窘境吧
再来说你的查询是如何优化的,当然这就涉及到了你的Document是如何设计的,如果嵌套过多的话性能必然也会受到影响
总之,如果你觉得MongoDB的优势在于热数据内存持久化的话,那么我觉得方向就不对。难道MySQL没有这个功能吗?
我个人认为MongoDB最大的优势之一就在于Document based design,那么你的数据模型可以尽可能的去模拟现实的情况,而不是表与表之间做关联。
还有优势就在于无比简单的shard和replica设置,现对于MySQL的M/S不知道简单了多少,当然如果复杂也可以很复杂
就说那么多吧。我觉得现在的技术发展并不是拼硬件,而是拼设计、理论,Hadoop的想法不也是把分布式系统放在“普通的机器”上么。SSD或者非SSD,完全就不应该成为衡量一个工具好与不好的标准。
退一万步来说,为什么访问量上来了以后你不在前面加Cache(如Redis)去缓存呢,这样可以减少直接读取数据库的次数。不管是不是MongoDB都应该这么做吧。