ASP.NET + SqlSever 大數據解決方案 PK HADOOP

半個月前看到博客園有人說.NET不行那篇文章,我只想說大家有時間去抱怨不如多寫些實在的東西。 html

 一、SQLSERVER優勢和缺點?

     優勢:支持索引、事務、安全性以及容錯性高 git

     缺點:數據量達到100萬以上就須要開始優化了,通常咱們會對 表進行水平拆分,分表、分區和做業同步等,這樣作大大提升了邏輯的複雜性,難以維護,只有羣集容錯,沒有多庫負載均衡並行計算功能。 github

 二、SQLSERVER真的不能處理大數據?

   答案:固然能夠的,打個比方:操做單一數據庫稱爲一維操做,若是操做相同結構,分佈在多個服務器上的多個數據庫這個能夠稱爲二維操做。 咱們只須要對這個二維操做進行一層封裝,讓他支持並行運算,把服務器壓力分散開,咱們不須要寫太多東西,SQL已經爲咱們封裝了不少,它就比如是一個巨人,而咱們只須要站在他的肩膀上,就能夠輕鬆實現針對WEB的大數據處理。 算法

 

 三、hadoop適不適合.NET,他有哪些缺點?

   (1)、數據同步慢 數據庫

   (2)、事務處理難 安全

   (3)、異常捕獲難 服務器

   (4)、很難與ASP.NET結合,不管是學習學成本,仍是自身的支持方面 架構

   (5)、 須要安裝,適合離線大數據處理,但未必適合WEB 併發

 四、什麼是SqlSugar框架?

    SqlSugar是一款基於SqlSever的輕量級高性能ORM框架,除了具備和ADO.NET匹敵的性能外,如今已經支持多庫並行計算。 負載均衡


優勢:  

   (1)、適合海量數據的無延遲查詢

   (2)、支持分佈式事務

   (3)、讓JOIN飛起來,告別大數據NOJOIN

   (4)、C#.NET自家語法和大量封裝函數

   (5)、隨機存儲,也就是說能夠存儲在任意一個節點數據庫,作到真正正的負載均衡,而不是以往主從模式的讀寫分離。

     

    缺點:    SqlServer受權費太貴,適合有錢的公司或者不交受權費的創業小企業

優勢:  

   (1)、適合海量數據的無延遲查詢

   (2)、支持分佈式事務

   (3)、讓JOIN飛起來,告別大數據NOJOIN

   (4)、C#.NET自家語法和大量封裝函數

   (5)、隨機存儲,也就是說能夠存儲在任意一個節點數據庫,作到真正正的負載均衡,而不是以往主從模式的讀寫分離。

     

    缺點:    SqlServer受權費太貴,適合有錢的公司或者不交受權費的創業小企業

優勢:  

   (1)、適合海量數據的無延遲查詢

   (2)、支持分佈式事務

   (3)、讓JOIN飛起來,告別大數據NOJOIN

   (4)、C#.NET自家語法和大量封裝函數

   (5)、隨機存儲,也就是說能夠存儲在任意一個節點數據庫,作到真正正的負載均衡,而不是以往主從模式的讀寫分離。

     

    缺點:    SqlServer受權費太貴,適合有錢的公司或者不交受權費的創業小企業


優勢:  

   (1)、適合海量數據的無延遲查詢

   (2)、支持分佈式事務

   (3)、讓JOIN飛起來,告別大數據NOJOIN

   (4)、C#.NET自家語法和大量封裝函數

   (5)、隨機存儲,也就是說能夠存儲在任意一個節點數據庫,作到真正正的負載均衡,而不是以往主從模式的讀寫分離。

     

    缺點:    SqlServer受權費太貴,適合有錢的公司或者不交受權費的創業小企業

優勢:  

   (1)、適合海量數據的無延遲查詢

   (2)、支持分佈式事務

   (3)、讓JOIN飛起來,告別大數據NOJOIN

   (4)、C#.NET自家語法和大量封裝函數

   (5)、隨機存儲,也就是說能夠存儲在任意一個節點數據庫,作到真正正的負載均衡,而不是以往主從模式的讀寫分離。

    缺點:    SqlServer受權費太貴,適合有錢的公司或者不交受權費的創業小企業

SqlSugar學習目錄

 一、SqlSugar基礎應用

 二、使用SqlSugar處理大數據

 三、使用SqlSugar實現Join  待更新

 四、使用SqlSugar實現分頁+分組+多列排序 待更新

 五、節點故障如何進行主從調換

》》》》二、使用SqlSugar處理大數據《《《 

 

 一、SqlSugar的原理

      Insert: 隨機存儲到某個節點數據庫(每一個節點能夠配置處理的機率,若是設置爲0表示該節點不會有新數據添加進來)

      Update、Delete:異步請求全部數據庫節點同步彙總處理結果

      Search: 對分頁前X頁、後X頁和PageCount<1000(1000這個值能夠在程序中設置)的數據進行了特殊優化,其它數據進行了異步節點算法同步對 結果進行匯,性能在多服務器架構中能夠完美的體現出來,在單服務器架構須要注意保證足夠IO,避免全表掃描,不然起不到優化效果。

       一、單服務器、單硬盤、多庫架構:

         適合低併發,數據量在1億如下,響應速度有較高要求,建議數據量最好不要超過1000W,在查詢中避免全表掃描,充分利用io性能,讓異步的優點體現出來。

        如圖:

        對部署在同一臺PC機上的10個同結構庫進行了模糊搜索

        name建了全文索引,id和num創建了複合索引

        十個庫加起來總共有540萬條數據 ,普通機械硬盤 只用了0.3秒的時間。

二、單服務器、多硬盤或陣列:

        可使用LIKE等進行全表掃描,性能有明顯的提高

     

       三、多服務器、多庫架構

  

             就按單臺PC機10個庫540萬0.3秒的來算,若是有10臺PC機那就能夠處理5000萬,時間預算在0.3秒-0.5秒之間。

             這10臺PC換成10臺服務器又能處理多少呢?

             總結:節點越多、服務器越多處理能力就越強。

二、用法

       一、引用SqlSugar.dll

       二、配置鏈接字符串

            其中rate是Insert時存儲到某節點的機率,0表示不會有新數據添加到該節點,下面設置都爲1表示我一點都不偏愛

 三、添、刪、改用法

四、啓用分佈式事務

                 服務器須要開啓MSDTC等服務

五、Taskable是全部分佈式計算的底層核心

                 分頁、分組等複雜的查詢都從這裏展開,支持DataTable、T:Class、值類型 三種類型,可以方便的把多庫的結果同步彙總到一個容器中。

                 使用Taskable須要注意每一個節點獲取的數據量都不能很大,經過少取多,內存運算,在取在運算的方式處理複雜數據的查詢。

 六、使用Taskable進行分組查詢

                統計類報表類的查詢,查詢結果集不會太大,徹底可以使用Taskable進行處理,Merge方法可以將全部庫查詢的結果集合併到一個新的集合

  七、使用Taskable擴展函數,讓你處理多庫運算更加方便。

八、分佈式分頁

               考慮了分庫機制,主鍵建議使用GUID來保證獨一,只有主鍵惟一纔可使用該分頁函數

 分頁是經過 節點數 每頁顯示條數 當前頁碼 等算出一個初步的索引,而後取出這個索引位置所在的數據,在算出這個數據的真實索引 與 page begin比較在算出一個新的索引直到找到精準位置在把數據讀出來。原理是這樣子的。

源碼地址:https://github.com/sunkaixuan/SqlSugar

相關文章
相關標籤/搜索