個人認為,MongoDB不太適合用作商城APP的數據庫:
能用是肯定能用的,但是不適合,開發過程中需要解決的問題會比較多且嚴峻;
單獨只使用MongoDB是不適合的,可以用它解決一部分的問題,也就是關系型數據庫和MongoDB配合著使用。
MongoDB是什么,以及它的優點
概括地說一下MongoDB是什么:它是一個基于分布式文件存儲的非關系型數據庫;我們常見的MySQL、Oracle都是關系型數據庫,數據在關系型數據庫中都是通過表的格式展現,可以看做二維表格;而MongoDB中的數據,類似于JSON格式(BSON)。
MongoDB除了性能上的優勢之外,我認為最大的優點就是
比如像這樣,一條客戶信息,一條產品信息,兩條毫無交集的數據,可以保存到同一個Collection中(比較極端的做法,實際使用的時候還是要區分開):
為什么說MongoDB不太適合用作商城應用的數據庫
首先,商城應用對事務一致性要求非常高,而MongoDB在事務的支持上,比較晚熟;MongoDB在3.0左右的版本,開始支持單文檔的事務,到了4.0以上的版本,開始支持多文檔事務;MongoDB發展的越來越好,但是在事務支持上,和關系型數據庫相比確實還是有差距。
第二,通常商城相關的業務,表結構相對都是比較成熟且固定的,比如客戶表、商品表、訂單表、支付表等等,同一個維度的數據結構基本都是相同的,比如客戶都會有姓名、手機號、收貨地址,這并沒有發揮MongoDB數據結構自由的優勢,關系型數據庫已經可以很好地支撐。
第三,MongoDB在多表關聯方面,優勢不大,比如需要查詢客戶下面所有的訂單,那么可能需要關聯客戶表和訂單表;而讓MongoDB來實現,訂單可以作為客戶下面的一個子文檔來存儲,大概就是這個樣子: