个人认为,MongoDB不太适合用作商城APP的数据库:
能用是肯定能用的,但是不适合,开发过程中需要解决的问题会比较多且严峻;
单独只使用MongoDB是不适合的,可以用它解决一部分的问题,也就是关系型数据库和MongoDB配合着使用。
MongoDB是什么,以及它的优点概括地说一下MongoDB是什么:它是一个基于分布式文件存储的非关系型数据库;我们常见的MySQL、Oracle都是关系型数据库,数据在关系型数据库中都是通过表的格式展现,可以看做二维表格;而MongoDB中的数据,类似于JSON格式(BSON)。
MongoDB除了性能上的优势之外,我认为最大的优点就是数据模式自由,如果你愿意的话,可以将任何数据都保存到同一张表中(MongoDB中叫做Collection,等同于关系型数据库中的Table);
比如像这样,一条客户信息,一条产品信息,两条毫无交集的数据,可以保存到同一个Collection中(比较极端的做法,实际使用的时候还是要区分开):
为什么说MongoDB不太适合用作商城应用的数据库首先,商城应用对事务一致性要求非常高,而MongoDB在事务的支持上,比较晚熟;MongoDB在3.0左右的版本,开始支持单文档的事务,到了4.0以上的版本,开始支持多文档事务;MongoDB发展的越来越好,但是在事务支持上,和关系型数据库相比确实还是有差距。
第二,通常商城相关的业务,表结构相对都是比较成熟且固定的,比如客户表、商品表、订单表、支付表等等,同一个维度的数据结构基本都是相同的,比如客户都会有姓名、手机号、收货地址,这并没有发挥MongoDB数据结构自由的优势,关系型数据库已经可以很好地支撑。
第三,MongoDB在多表关联方面,优势不大,比如需要查询客户下面所有的订单,那么可能需要关联客户表和订单表;而让MongoDB来实现,订单可以作为客户下面的一个子文档来存储,大概就是这个样子:
总结来说,MongoDB更多适用于大数据量、高并发、弱事务、数据结构“随意”且“善变”的场景,是对关系型数据库的补充。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有