互聯網百萬級應用的大數據處理問題

探討大數據量處理
服務器君一共花費了224.500 ms進行了7次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

我說的大數據量處理是指同時需要對數據進行檢索查詢,同時有高并發的增刪改操作。記得以前在XX做電力時,幾百萬條數據,那時一個檢索查詢可以讓你等你分鐘。現在我是想探討下對大數據量的處理,那時我就在想例如騰訊,盛大,動輒數以億計的帳號,怎么能這么快呢, 于是找到了互聯網現在對數據處理的發展。

對于大數據量處理,如果是互聯網處理的話,一般分為下面階段:

  1. 第一階段,所有數據都裝入一個數據庫,當數據量大了肯定就會出現問題,就像剛剛說的查詢,于是想辦法。
  2. 第二階段,那時肯定想做緩存機制,確實可以如加上緩存Memcached,但緩存也是治標不治本,數據量太大了也是不行,于是有了下面的方法。
  3. 第三階段,master-slave模式,進行主從數據庫,master提供寫,slave進行讀,這個適合于有寫造成數據庫卡的方法,XX那個還是不行,于是——
  4. 第四階段,垂直分庫,這個意義還是不大,對于這種采集數據的,于是——
  5. 第五階段,進行水平分庫,這個不錯,記得以前從興也是按這個分時間水平分庫,其實可以分的更細點估計效果更好
  6. 第六階段,用nosql做了,關于nosql怎么做可以參考google的bigtable

其實本文主要目的也是想探討nosql對大數據量的處理:

NOSQL就是將寫操作在內存中進行,定時或按某一條件將內存中的數據直接寫到磁盤上,一定基礎上是解決了一些問題:

  1. 高并發讀寫的需求?
  2. 海量數據訪問的需求
  3. 數據庫橫向擴展性的需求

CAP理論來說,nosql是犧牲了一致性,做到了AP,一致性只是保證了最終一致性。

缺點也很明顯:

1. 當機器掛了數據將會丟失,可以考慮共享內存解決。

補充:其實這里可以展開了講,一種是通過共享內存來實現。

集群內存:根據的是Quorum NRW理論,比如你有N臺機子用來集群,每次你進行讀寫數據時可以至少要同步到X個節點才算成功,所以你每次讀數據時只需要讀大于N-X個節點就能保持你的正確率,其實就是對數據進行的冗余備份,不過我們存的是內存,相對于直接的磁盤操作,跨網絡進行內存操作可以更快。

其實還一種保證數據一致性,就是記錄日志,當數據每次寫操作內存時都進行日志記錄,然后再在內存中進行寫操作,至少很多數據庫就是這樣做的,如redis。

2. 內存的限制,內存有限當寫數據操作太大的時候內存也會爆。

解決:Bigtable的做法是通過bloom-filter算法合并掉相同的操作,比如UPDATE A='A' ,update A='B'時可以直接合并了。

基本理論基礎

nosql理論基礎:內存是新的硬盤,硬盤是新的磁盤

關系型數據庫都要實現事務ACID,即:原子性(Atomicity),一致性(Consistency),隔離性(Isolation), 持久性(Durability)。

CAP理論:

  • Consistency 一致性
  • Availability -可用性
  • Partition -容錯性

?大多數NoSQL數據庫都不支持事務,不支持SQL等,所以還是得保留關系型數據庫。現在有人提到用內存數據庫, 總體如果是簡單業務來說,NOSQL的速度比內存數據庫更快,但NOSQL最大缺點,不支持事務,不支持SQL查詢等。

本文地址:http://www.zqhthc.tw/librarys/veda/detail/1446,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.zqhthc.tw/librarys/veda/detail/1446

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《數據結構與算法分析:C++描述(第3版)》 維斯 (Mark Allen Weiss) (作者), 張懷勇 (譯者), 等 (譯者)

《數據結構與算法分析:C++描述(第3版)》是數據結構和算法分析的經典教材,書中使用主流的程序設計語言C++作為具體的實現語言。書的內容包括表、棧、隊列、樹、散列表、優先隊列、排序、不相交集算法、圖論算法、算法分析、算法設計、攤還分析、查找樹算法、k-d樹和配對堆等。《數據結構與算法分析:C++描述(第3版)》適合作為計算機相關專業本科生的數據結構課程和研究生算法分析課程的教材。本科生的數據結構課程可以使用《數據結構與算法分析:C++描述(第3版)》第1章~第9章,多學時課程還可以講解第10章;研究生算法分析課程可以使用第6章~第12章。

更多計算機寶庫...

英超直播吻球网