Mongodb 配合node.js 是最佳搭档,但如果不经过必要的测试就上线的话肯定会出现这样那样的问题,包括:“无法发挥出预想的性能”、“不了解sharding和replication是如何工作的“、”不知道如何监控才好“,”要如何做备份和恢复呢“,”安全性方面要如何考量“。这系列的文章就是为了解答此问题。
前言
mongodb对于新手是很友好的,安装简单,用户接口也因为JSON而显得很单纯。没有什么RDBMS相关知识的开发者也能开发出简单的应用。基于javascript开发,常常使用样本数据来指导开发,而一旦当真实数据开始大量产生后,就会出现”怎么不能发挥预想性能的问题“
”MongoDB由于是NOSQL所以速度很快“ , 这样的见解是很危险的。以mongodb为例,NOSQL的特点是“善于水平数据分配(Sharding),水平分片的话,请往往比单机要快!” 这虽然是事实,但单机的快慢仍和具体的调优/优化有关。另外,”因为是NOSQL所以就比RDBMS要快“ 这种想法是要不得的;如果不在实际的场景中去充分测试那么没有人能得出有价值的性能比较结论。
也可能会有人这么想:“那么为了提供整体性能,我们就一定要把sharding数据分片用起来啊!”
但实际大家可能会觉得意外的是,MongoDB的大原则其实是尽可能不要进行sharding。
MongoDB的sharding虽然看起来非常不错,似乎有必要为了提高性能而就sharding进行相关的应用设计,但使用起来其实并不简单。 特别是对已经sharding的数据进行备份的话,就较为困难了。