什麼時候該使用NoSQL儲存資料庫?

2022-02-13 08:21:15 字數 1015 閱讀 3645

1.頻繁寫,很少讀統計資料,比如點選率,應該使用基於記憶體的in-memory的key/value儲存資料庫如redis, 或者update-in-place 文字儲存如mongodb.

redis是乙個key-value儲存系統。和memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(鍊錶)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。我一般用在實時性比較強資料,資料庫頻繁插入、更新或刪除的場景。減少對資料庫的操作

1 redis 是什麼?

通常而言目前的資料庫分類有幾種,包括 sql/nsql,,關聯式資料庫,鍵值資料庫等等 等,分類的標準也不以,redis本質上也是一種鍵值資料庫的,但它在保持鍵值資料庫簡單快捷特點的同時,又吸收了部分關聯式資料庫的優點。從而使它的位置處於關聯式資料庫和鍵值數 據庫之間。redis不僅能儲存strings型別的資料,還能儲存lists型別(有序)和sets型別(無序)的資料,而且還能完成排序(sort) 等高階功能,在實現incr,setnx等功能的時候,保證了其操作的原子性,除此以外,還支援主從複製等功能。

redis官方也同樣提供了乙個名為retwis

的專案**,可以對照著官方學習。

2 redis用來做什麼?

通常侷限點來說,redis也以訊息佇列的形式存在,作為內嵌的list存在,滿足實時的高併發需求。而通常在乙個電商型別的資料處理過程之中,有關商品,熱銷,推薦排序的佇列,通常存放在redis之中,期間也包擴storm對於redis列表的讀取和更新。

乙個詳細的示範用例,還請參考本id的另外一篇博文: storm 【topn】 排序。期間使用的是:storm-redis-pubsub的介面

3 redis的優點

4 redis的缺點

是資料庫容量受到物理記憶體的限制,不能用作海量資料的高效能讀寫,因此redis適合的場景主要侷限在較小資料量的高效能操作和運算上。

總結: redis受限於特定的場景,專注於特定的領域之下,速度相當之快,目前還未找到能替代使用產品。

什麼時候該用NoSQL?

2 資料庫表字段是複雜資料型別 對於複雜資料型別,比如sql sever提供了可擴充套件性的支援,像xml型別的字段。很多用過的同學應該知道,該欄位不管是查詢還是更改,效率非常一般。主要原因是是db層對xml欄位很難建高效索引,應用層又要做從字元流到dom的解析轉換。nosql以json方式儲存,提...

什麼時候該休息

睡眠是身體進行自我調整的時刻,你侵略它的時間,它便侵略你的健康 有些人原本一向身體健康,但在連續熬夜數晚後,突然第二天起床會覺得很疲勞,一閉眼就想睡覺,而且會腰痠背痛,但一到晚上精神又好起來!別以為這是小事!根據中醫的看法,是因過勞而造成體內器官陰陽失調,就是體內器官起內訌,互相打架,最後造成器官衰...

什麼時候該使用前置宣告?

首先,我們為什麼要包括標頭檔案?問題的回答很簡單,通常是我們需要獲得某個型別的定義 definition 那麼接下來的問題就是,在什麼情 況下我們才需要型別的定義,在什麼情況下我們只需要宣告就足夠了?問題的回答是當我們需要知道這個型別的大小或者需要知道它的函式簽名的時候,我們就需要獲得它的定義。假設...