Java数据库开发
Nosql數(shù)據(jù)庫使用場景
首先需要確認(rèn)一個問題,nosql能做什么?在現(xiàn)在的開發(fā)領(lǐng)域中nosql可以實(shí)現(xiàn)文檔存儲(BSON、JSON)、緩存存儲、圖像緩存(圖像搜索),但是對于nosql的具體應(yīng)用場景完全要根據(jù)你實(shí)際的業(yè)務(wù)來講;
· 在傳統(tǒng)的開發(fā)之中由于經(jīng)常要使用到多表查詢,性能很差,所以可以將一些經(jīng)常顯示的數(shù)據(jù)整理到文檔型的nosql數(shù)據(jù)庫(MongoDB),但是現(xiàn)在這個文檔型的nosql使用越來越少,可以忽略了;
·緩存型:例如在進(jìn)行分布開發(fā)的時(shí)候session存儲、做一些臨時(shí)的數(shù)據(jù),例如:購物車、短信驗(yàn)證碼等,現(xiàn)在使用最多的緩存數(shù)據(jù)庫就是Redis(可以保存在磁盤,斷電后數(shù)據(jù)可以被保存下來);
使用Redis實(shí)現(xiàn)消息隊(duì)列,可以使用更加高級的RabbitMQ,Kafka實(shí)現(xiàn)更方便。
優(yōu)點(diǎn):可以實(shí)現(xiàn)每秒近乎10W次的讀寫處理。
數(shù)據(jù)庫優(yōu)化有很多層次。
1. 語句上的優(yōu)化:盡量不要去使用多表查詢,盡量不要頻繁的使用各種神奇的統(tǒng)計(jì)查詢、如果需要的時(shí)候建議使用子查詢來代替(子查詢只是一種折中方案也不是最好的,只是相對的,當(dāng)你的數(shù)據(jù)量暴大的時(shí)候,那么你所有認(rèn)知的規(guī)則就全部都將改變)。
2. 數(shù)據(jù)庫的優(yōu)化只能夠體現(xiàn)在查詢上,而這個查詢還是在認(rèn)知范圍內(nèi)的數(shù)據(jù)量,例如使用索引,但是一旦使用了索引,就不能夠進(jìn)行頻繁的修改,例如:在主鍵往往會設(shè)置索引,但是從另外一個角度,數(shù)據(jù)不應(yīng)該進(jìn)行物理刪除,而要進(jìn)行邏輯刪除,只是為了保證索引不被重新創(chuàng)建;
空間換時(shí)間、時(shí)間換空間:你的數(shù)據(jù)是否需要進(jìn)行同步處理操作。
3. 當(dāng)存在有多個RPC業(yè)務(wù)端的時(shí)候,可以考慮進(jìn)行垂直拆庫的做法,這個時(shí)候只能夠按照功能進(jìn)行拆分,這個是需要強(qiáng)大的接口技術(shù)支持的;
4. 當(dāng)分庫在無法解決問題的時(shí)候就需要考慮數(shù)據(jù)庫的水平拆分問題(認(rèn)知范圍內(nèi)的唯一可以使用的最后方案);
5. 如果需要保證強(qiáng)大的查詢性能,那么就需要再次引入搜索引擎的概念進(jìn)行分詞處理;
更多數(shù)據(jù)庫精品課程:阿里云大學(xué)——開發(fā)者課堂
轉(zhuǎn)載于:https://juejin.im/post/5cee3a3fe51d455d850d3a73
總結(jié)
- 上一篇: Vue入门八、非父子组件间通讯
- 下一篇: 数据库以及后台开发之写在前面