如果一个项目对数据的安全性并不是要求特别高,(不是类似银行记录钱,财务数据)的项目,是不是用mongodb就可以代替mysql甚至oracle?
我之前用过mongodb作为项目记录高并发日志的数据,写入速度远远高于mysql。
mongodb最大的缺点是不支持事务。然而,很多互联网项目的业务逻辑并不复杂,很多都是单表的写入和查询而已,比如共享单车的开锁,会有多复杂的业务逻辑呢?无非是查询用户是否合法,单车是否损坏,能否开锁,然后开锁,记录用户操作记录就可以了。
这种一个请求里面只写了一条记录的逻辑,用mongodb会非常有优势,失败的可能性其实微乎其微。数据库事务并不重要。而这个情景显然高并发写入速度才是关键,如果真的失败,提示操作失败即可。
表达清楚一点:
- 通常业务逻辑简单,一个请求就是一个单表的单条写入;
- 数据价值没有想象的大,出错了提示用户失败即可,事实上失败的可能性很小;
- 并发特别大写入量QPS高,通常是记录历史操作记录和日志和文档等数据;
- 这些数据基本没有关联查询的意义,或者可以先查询关系数据库得出主键,再用主键在mongodb中关联查询;
你说的这个“一般”就是应用场景是否适用mongodb了。
但除了技术上的问题,还得考虑企业用MongoDB和MySQL的成本比较。会两手MySQL的后端开发满大街都是,各种解决方案积累非常多,但会MongoDB的就没那么好找了。
新企业上新技术没什么负担,但有点积累的企业都是不大乐意随便换技术栈的,毕竟MySQL和围绕MySQL建立的舒适区在那儿。除非确实场景非常适合(而不是可用可不用,而你说的“一般”其实大多是可用可不用的场景),不然企业没什么理由抛弃MySQL这么容易招人和维护的生态,去投奔MongoDB。