天天看點

面試疑難點解析——Java資料庫開發(一)

面試疑難點解析——Java資料庫開發(一)
點選圖檔或戳我檢視詳情和投履歷

當面試官提問資料庫優化及NoSQL使用場景時,該如何回答?

資料庫優化

在現實的開發環境之中所謂的資料庫優化是不存在的,實際上所謂資料庫的優化有很多層次。

1.語句上的優化:盡量不要使用多表查詢,不要頻繁地使用各種神奇的統計查詢,如果需要,建議使用子查詢來代替(子查詢隻是一種折中方案,不是最好的,隻是相對的,當資料量大的時候,所有認知的規則全部都将改變)。

2.資料庫的優化隻能夠展現在查詢上,而這個查詢還是在認知範圍内的資料量,例如使用索引,一旦使用索引,就不能夠進行頻繁的修改,例如:在主鍵往往會設定索引,但是從另一個角度,資料不應該進行實體删除,而要進行邏輯删除,隻是為了保證索引不被重新建立;

-空間換時間,時間換空間:你的資料是否需要進行同步處理操作。

3.當存在有多個RPC業務端的時候,可以考慮進行垂直拆庫的做法,這個時候隻能夠按照功能進行拆分,這個是需要強大的接口技術支援的。

4.當分庫也無法解決問題的時候就需要考慮資料庫的水準拆分問題。(認知範圍内的唯一可以使用的最後方案)

5.如果需要保證強大的查詢性能,那麼就需要再次引入搜尋引擎的概念進行分詞處理。

NoSQL使用場景

首先需要确認一個問題:NoSQL能做什麼?

在現在的開發領域中,NoSQL可以實作文檔存儲(BSON、JSON)、緩存存儲、圖像緩存(圖像搜尋),但是對于NoSQL的具體應用場景完全要根據實際業務來講。

1.在傳統的開發之中,由于經常要使用到多表查詢,性能很差,是以可以将一些經常顯示的資料整理到文檔型的NoSQL資料庫(MongoDB),但是現在這個文檔型的NoSQL使用越來越少,可以忽略;

2.緩存型:例如在進行分布式開發的時候session存儲,做一些臨時的資料,例如:購物車、短信驗證碼等,現在使用最多的緩存資料庫就是Redis(可以儲存在磁盤,斷電後資料可以被保留下來)。

-使用Redis實作消息隊列,可以使用更加進階的RabbitMQ、Kafka實作更友善;

-優點:可以實作每秒近乎10W次的讀寫處理。

更多專業知識,面試技巧就在阿裡雲開發者社群,持續更新中……

感謝浏覽~

本内容來源于

阿裡雲大學-Java面試技巧