海量資料的解決方案 筆記

2022-08-10 02:42:11 字數 1284 閱讀 5371

-----海量資料的解決方案-----

point 1.快取和頁面靜態化

快取的作用是降低資料庫的壓力.

快取的使用方式:

a>通過程式直接儲存到記憶體中(map concurrenthashmap)

b>使用快取框架(ehcache,memcache,redis)

頁面靜態化: 在程式中使用模板技術生成,如常用的fremarker和velocity都可以根據模板生成靜態頁面

(另外也可以使用快取伺服器在應用伺服器的上一層快取生成的頁面,如squid,nginx也有相應的功能)

point 2.資料庫優化

1)表結構優化

2)sql語句優化

3)分割槽(當資料變多的時候,就可以採用分割槽或者分表)

將一張表中的資料按照一定規則分到不同的區來儲存. 查詢資料的時候, 根據規則到相應的區中查詢資料

4)分表

如果一張表中的資料可以分為幾種固定不變的型別,而且如果同時對多種型別共同操作的情況不多,那麼都可以通過分表來處理.

另一種分表的方法是將乙個表中不同型別的字段分到不同的表中儲存.

5)索引優化

6)使用儲存過程代替直接操作

point 3.分離活躍資料

定期將不活躍資料分離到不活躍表中, 每次呼叫查詢該錶的資料時,首先先查詢預設表,預設表中查不到再到不活躍表中查.

point 4.批量讀取和延遲修改

1)批量讀取

通過減少操作次數來提交效率.

批量讀取時將多次查詢合併到一次中進行, 在高併發的情況下,將3秒或5秒內的所有請求合併到一起統一查詢資料庫,這樣可以有效減少查詢資料庫次數.(非同步請求)

2)延遲修改

主要針對高併發而且頻繁修改(包括新增)的資料.

現將需要修改的資料暫時儲存到快取中,然後定時將快取中的資料儲存到資料庫中.

程式在讀取資料時可以同時讀取資料庫中和快取中的資料.

point 5.讀寫分離

讀寫分離的本質是資料庫集群,在高併發的情況下,將資料庫的操作分配到多個資料庫伺服器去處理,從而降低單個資料庫伺服器壓力.

但是有個重要的問題要解決: 保證多個資料庫的資料一致性.

如果多台資料庫伺服器都可以處理寫操作,那麼多台資料庫伺服器資料之間同步就變得很複雜. 通常都是交由指定一台伺服器進行寫操作.

負責寫操作的資料庫伺服器叫'主伺服器',當主伺服器寫入資料(增刪改)後,底層同步到其他伺服器'從伺服器'.讀資料的時候到從伺服器讀取.

讀的操作可以分配到多個從伺服器中.

如果從伺服器過多, 主伺服器資料同步也可以分批同步到從伺服器.

海量資料解決方案

首先做使用者量估算需求,假如我們做的是學術社群,那麼這個使用者量不會很大,可能我們不需要考慮這個,對於使用者量的級別,我們暫時把使用者量級別定 為三種,百萬級別 m 和千萬界別 s 以及億萬級別 q 並考慮使用者登入驗證以及查詢常用的操作,對m和s進行擴充以及了解。眾所周知,在這個情況下,對於使用者...

海量資料的解決方案

現在無論是企業的業務系統還是網際網路上的 程式都面臨著資料量大的問題,這個問題如果解決不好將嚴重影響系統的執行的速度。1 快取和頁面靜態化 資料量大的問題最直接的解決方案就是使用快取,快取就是將從資料庫中獲取的結果佔時儲存起來,在下次使用的時候無需要重新到資料中獲取,這樣可以大大降低資料庫的壓力。快...

海量資料的解決方案

隨著企業業務的不斷擴充套件,不得不面臨資料量大的問題,下面針對這個問題進行各種方案的介紹。快取的使用方式分為通過程式儲存到記憶體中和使用快取框架兩種方式。程式直接操作的是 map,尤其是concurrentmap,而常用的快取框架有 ehcache memcache 和 redis等。頁面靜態化是將...