用戶資料庫是用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 的適用範圍比較狹窄, 坊間有傳言:另外給篇不錯的文章, 為什麼我從 MongoDB 遷移到 PostgreSQL如果不確定用 MySQL 還是 MongoDB, 那就不要用 MongoDB
別用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日晚新浪微博服務各種崩潰,發生了什麼?