用戶資料庫是用mongodb好,還是用mysql好?

打算給一系列產品統一賬戶,程序用的是nodejs寫的,用戶資料庫大概就是記錄用戶名、密碼、電子郵箱還有一些會高並發頻繁變更的信息,這種資料庫要用mongodb還是mysql?或者有更好的推薦嗎?


推薦mysql

更主要還是看你怎麼用,你要很清閑,想學習,愛折騰那就mongodb吧。

存儲用戶數據,肯定也要讀取吧,還要JOIN關聯,各種查詢,分析。

用mongdb可就麻煩了,group受限,map/reduce不爽

現在的mysql也不知有沒有對mongodb對接的支持。

mysql也就是幾條SQL的事,用mongodb不同庫,還得在代碼里拼數據。

嘗鮮一時爽,卻埋下了以後更多的工作量。

我個人只是用mongodb作相對獨立的小系統,比如一些數據分析,抓取,匯總的工作。


mysql更通用 如果不知道選什麼就選mysql錯不了. 而mongodb的存在更多的是對於mysql的一個細分需求領域中的補充.

比如在遊戲行業中 使用json格式的mongodb基本上可以滿足所有數據結構的存儲, 而且你再也不必因為擴充一個小功能而糾結新建一個表來存儲 還是新建一個欄位並用字元串來存儲(每次讀/寫都要解析/序列化成字元串存儲), mysql是不是特別傻笨粗, 而遊戲基本上前面搭好框子後面寫業務的時候 一直都是在做這些東西.

但正如我上面說的 mongodb只是一個細分需求領域的補充, 很多東西他做不了也做不好 假如你的程序哪怕有1%的功能在這裡 這都容易悲劇.

另外說一下題主問題中提供的需求看法.

看上去是統一認證系統或者認證平台之類的需求.

一般有以下特點.

1. 數據結構簡單. 所以用mysql還是mongodb在這裡都一樣.

2. 可能對讀性能有要求 但寫速度關係不大, 一般都是大量已註冊用戶登錄. 因此mysql一定要配合redis或者memcache, 這樣的話 mongodb稍微勝出一點, mongodb本身的讀速度有優化 很可觀.

3. 數據結構中含有一些特殊數據 比如玩家的充值信息. mysql明顯比mongodb好的太多.

4. 日誌統計, meysql的存儲過程可以很方便的做很多統計工作, mongodb的話就要委屈後台小哥多寫點代碼來做統計了(實際上因為數據簡單 可能也就幾行代碼).

因此呢 根據上面幾點來說 用mongodb的意義不大 但具體題主的需求 自己根據上面我列舉的幾條可以自己再度量一下.


如果每條記錄的記錄格式是固定的,不是不定列的,優先SQL,SQL體系發展了這麼久,事件、索引等技術不是近年的NoSQL可比。

mongodb是基於文檔式的,對於記錄格式不等倒是不錯,索引方面……還是不要提了。


建議上 PG, 哈哈

Mongodb 的適用範圍比較狹窄, 坊間有傳言:

如果不確定用 MySQL 還是 MongoDB, 那就不要用 MongoDB

另外給篇不錯的文章, 為什麼我從 MongoDB 遷移到 PostgreSQL


別用mongodb,巨坑

mysql足夠


如果數據量大,又經常需要更改schema,就上mongodb。


mongodb 感覺更適合未來,結構化的東西總覺得受束縛、、、


按題主的需求,用mysql或mongodb都可以滿足。

建議使用mysql,整個生態圈更成熟。


mysql吧 畢竟主流。。。我感覺之所以很多前端人員願意使用mongodb的原因是因為學習成本低,而且市面上大部分教材是用mongodb作為實例的,但是並沒有考慮到應用層面。


建議 mysql

schema 很簡單並且是經典的關係式數據

mysql 的整個 stack 工具更豐富


一般來說看你的後端語言呀,node和mongo是最佳實踐

而其他比如php和mysql肯定更常見的搭配


我們有個項目管理系統,裡面主要是任務,20多個欄位,一堆關係,經常變化,產品的花樣查法,寫sql還沒有寫完呢,產品已經想到新的查法了,然後我們給任務表做了一個版本,更新mysql的時候同步數據到mongodb。現在產品想怎麼查就怎麼樣,差不多理解完就能寫完查詢表達式。


兩個打陣營不同,MySQL最大特點是事務(InnoDB),MongoDB在水平分庫和查詢性能有絕對優勢,MongoDB 存儲數據更加靈活(JSON),查詢靈活性程度不如MySQL(SQL語言),每個開源軟體都坑。


schema不會頻繁變動的話,建議Mysql.


推薦閱讀:

自學數據結構、計算機網路、資料庫、演算法設計,有什麼比較推薦的書籍?
有没有公开的中国历史人物事件数据库?
vector, list, map等容器使用場合是什麼?
oracle和mysql這兩個方向不知道如何選擇去學習?
1月22日晚新浪微博服務各種崩潰,發生了什麼?

TAG:資料庫 | MySQL | 用戶數據 | Nodejs | 資料庫設計 |