亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在關系型數據庫中頻繁使用 JSON 格式來存儲不需要索引的數據好么?

在關系型數據庫中頻繁使用 JSON 格式來存儲不需要索引的數據好么?

墨色風雨 2019-04-23 15:35:49
最近在設計一些復雜的MySQL數據庫表。碰到一些需要存儲用戶所得成就、用戶所得稱號、用戶消息之類的數據的需求。感覺這類數據其實可以直接用JSON格式存儲在user_meta表的text類型字段里。而不需要設計過于復雜的表。當然并不是所有數據都存儲在一起,可能按照100條數據/條記錄的方法。優點是:每頁顯示50條用戶數據的話,每頁只要讀一次數據庫的一條記錄就行了,而不需要遍歷50條記錄。把數據庫的壓力分擔到程序執行上,貌似更多情況是數據庫壓力過大導致網站掛掉。不需要設計復雜的數據庫表,因為這類數據的結構可能經常變動,用JSON可以在程序中做好處理。但是我不知道這樣設計的缺點,因為我沒有足夠的經驗。所以我的問題是:在關系型數據庫中頻繁使用JSON格式來存儲不需要索引的數據好么?或者有沒有更好的方案呢?麻煩大家了,謝謝=w=
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

既然不需要索引,這種情況看起來用KeyValue庫更合適一些,比如TC/TT,Bdb,Redis;或者MongoDb這種文檔型數據庫也可以(但也有很多設計上的坑)。其他理由如下:
1.Mysql庫里慎用text字段,性能不樂觀……
2.一旦需要對這些數據進行索引或者統計,從MySQL中解出所有的數據并重新入庫成本相當巨大……
3.大JSON的parse性能同樣不樂觀,而且對于中文數據,純JSON太占空間了……
4.100條/記錄的存儲方式,如果需要對其中一條進行增加/刪除/更新,即需要更新整個100條,更新量比較大;同樣可能會產生并發問題,需要自行實現行鎖。一般情況下,如果你用了關系數據庫,不要輕易(為了性能/空間)做違反范式的設計,除非你有足夠的理由和把握,否則會給未來的維護升級帶來無盡的麻煩。通常建議:
1.換Key-Value庫/文檔庫(mangodb)
2.或者關系庫做好緩存和索引優化,可以把一個用戶相關的勛章稱號都緩存在一個key下,這個是經過被各大網站驗證過無數遍的設計……
                            
查看完整回答
反對 回復 2019-04-23
  • 2 回答
  • 0 關注
  • 307 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號