半個月前看到博客園有人說.NET不行那篇文章,我只想說你們有時間去抱怨不如多寫些實在的東西。
優點:支持索引、事務、安全性以及容錯性高
缺點:數據量達到100萬以上就需要開始優化了,一般我們會對 表進行水平拆分,分表、分區和作業同步等,這樣做大大提高了邏輯的復雜性,難以維護,只有群集容錯,沒有多庫負載均衡并行計算功能。
答案:當然可以的,打個比方:操作單一數據庫稱為一維操作,如果操作相同結構,分布在多個服務器上的多個數據庫這個可以稱為二維操作。 我們只需要對這個二維操作進行一層封裝,讓他支持并行運算,把服務器壓力分散開,我們不需要寫太多東西,SQL已經為我們封裝了很多,它就好比是一個巨人,而我們只需要站在他的肩膀上,就可以輕松實現針對WEB的大數據處理。
(1)、數據同步慢
(2)、事務處理難
(3)、異常捕獲難
(4)、很難與asp.net結合,無論是學習學成本,還是自身的支持方面
(5)、 需要安裝,適合離線大數據處理,但未必適合WEB
SqlSugar是一款基于SqlSever的輕量級高性能ORM框架,除了具有和ADO.NET匹敵的性能外,現在已經支持多庫并行計算。
優點:
(1)、適合海量數據的無延遲查詢
(2)、支持分布式事務
(3)、讓JOIN飛起來,告別大數據NOJOIN
(4)、C#.NET自家語法和大量封裝函數
(5)、隨機存儲,也就是說可以存儲在任意一個節點數據庫,做到真正正的負載均衡,而不是以往主從模式的讀寫分離。
缺點: SqlServer授權費太貴,適合有錢的公司或者不交授權費的創業小企業
0、功能更新
1、SqlSugar基礎應用
2、使用SqlSugar處理大數據
3、使用SqlSugar實現Join 待更新
4、使用SqlSugar實現分頁+分組+多列排序 待更新
5、節點故障如何進行主從調換
Insert: 隨機存儲到某個節點數據庫(每個節點可以配置處理的機率,如果設置為0表示該節點不會有新數據添加進來)
Update、Delete:異步請求所有數據庫節點同步匯總處理結果
Search: 對分頁前X頁、后X頁和PageCount<1000(1000這個值可以在程序中設置)的數據進行了特殊優化,其它數據進行了異步節點算法同步對結果進行匯,性能在多服務器架構中可以完美的體現出來,在單服務器架構需要注意保證足夠IO,避免全表掃描,否則起不到優化效果。
1、單服務器、單硬盤、多庫架構:
適合低并發,數據量在1億以下,響應速度有較高要求,建議數據量最好不要超過1000W,在查詢中避免全表掃描,充分利用io性能,讓異步的優勢體現出來。
如圖:
對部署在同一臺PC機上的10個同結構庫進行了模糊搜索
name建了全文索引,id和num建立了復合索引
十個庫加起來總共有540萬條數據 ,普通機械硬盤 只用了0.3秒的時間。
2、單服務器、多硬盤或陣列:
可以使用LIKE等進行全表掃描,性能有明顯的提升
3、多服務器、多庫架構
就按單臺PC機10個庫540萬0.3秒的來算,如果有10臺PC機那就可以處理5000萬,時間預算在0.3秒-0.5秒之間。
這10臺PC換成10臺服務器又能處理多少呢?
總結:節點越多、服務器越多處理能力就越強。
Landa
1、引用SqlSugar.dll
2、配置連接字符串
其中rate是Insert時存儲到某節點的機率,0表示不會有新數據添加到該節點,下面設置都為1表示我一點都不偏心
3、添、刪、改用法
4、啟用分布式事務
服務器需要開啟MSDTC等服務
5、Taskable是所有分布式計算的底層核心
分頁、分組等復雜的查詢都從這里展開,支持DataTable、T:Class、值類型 三種類型,能夠方便的把多庫的結果同步匯總到一個容器中。
使用Taskable需要注意每個節點獲取的數據量都不能很大,通過少取,內存運算,在取在運算的方式處理復雜數據的查詢。
6、使用Taskable進行分組查詢
統計類報表類的查詢,查詢結果集不會太大,完全可使用Taskable進行處理,Merge方法能夠將所有庫查詢的結果集合并到一個新的集合
7、使用Taskable擴展函數,讓你處理多庫運算更加方便。
8、分布式分頁
考慮了分庫機制,主鍵建議使用GUID來保證獨一,只有主鍵唯一才可以使用該分頁函數
分頁是通過 節點數 每頁顯示條數 當前頁碼 等算出一個初步的索引,然后取出這個索引位置所在的數據,在算出這個數據的真實索引 與 page begin比較在算出一個新的索引直到找到精準位置在把數據讀出來。原理是這樣子的。
至于原理我就不多講了,一個貼子也說不完,有幸趣的朋友可以加群: 225982985 討論
源碼地址:https://github.com/sunkaixuan/SqlSugar
哈哈 我已經盡力了, 不管好壞為了給個贊哈
新聞熱點
疑難解答