前言:拥抱新技术,就要破除已有的观念。你目前所掌握的技能,不一定就是最合理的,新的技术方案也许更高效。比如设计mysql表时,不一定要逐个设置字段,不需要搜索的可以以json形式存储。做技术,最重要的就是不要因循守旧,要积极拥抱新技术。
memcache、redis、mongodb和mysql的应用场景并不是完全对立的,不是说必须使用某种技术,只是那种技术更合适,能以更低的成本解决问题。
在数据高度关系化和结构化时,并且需要复杂事务操作时,mysql是最佳选择。
mongodb不仅仅是缓存系统,是非关系型数据库,所以mysql的很多应用场景,mongodb是完全可以取代的,并且性能更好。
当需求变动频繁,开发更加敏捷,快速上线时,mongodb是很好的选择。
1.服务器的日志记录,查找比文本方便
2.第三方信息抓取的存储,由于数据格式不固定,mongodb更灵活
3.对象频繁改动的,不适合使用mysql,涉及到改表结构
是否使用mongodb的判断
1.应用不需要事务及复杂 join 支持
2.新应用,需求会变,数据模型无法确定,想快速迭代开发
3.应用需要2000-3000以上的读写QPS(更高也可以
4.应用需要TB甚至 PB 级别数据存储
5.应用发展迅速,需要能快速水平扩展
6.应用要求存储的数据不丢失
7.应用需要99.999%高可用
8.应用需要大量的地理位置查询、文本查询