欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

DataRabbit 輕量的數據訪問框架(19)-- 讀寫

系統 2080 0

在高并發的系統中,我們常采用多數據庫分散放置、讀寫分離、細粒度的隔離級別設定等策略來提高系統的性能。 DataRabbit3.3 以及以上版本對這三種策略都給予了內置的支持。

(1)數據庫分散放置:對于較大型的系統,在設計數據庫時,我們可以根據業務范圍將其設計為多個數據庫,而不是一個,然后將這些數據庫部署在不同的物理服務器上,以分擔負載。當然,如果已經設計好的數據庫,也可以采用水平分區或垂直分區的方式來達到類似的效果。

(2)讀寫分離:在高性能的系統中,這是最常采用的策略。在SqlServer中,可以采用事務型的訂閱/發布模型來實現這種策略。在這種策略中,有一個Master DB 和多個(或一個)Slave DB,其中所有的Slave DB是只讀的,而Master DB支持讀寫,當Master DB中的數據發生變化時,所有Slave DB會自動與其同步(可能會有稍微的延遲)。

(3)細粒度的隔離級別:比如,對于某些要求不高的查詢可以采用ReadUncommitted的隔離級別來讀取數據。

DataRabbit.Application. TransactionScopeFactoryProvider <TSourceKey,TSlaveSuitKey> 類可以支持數據庫分散放置和讀寫分離。它支持【1套主/N套從】數據庫實例。 【一套】表示支持一個系統運行的不可或缺的相互協作的多個數據庫。

TransactionScopeFactoryProvider 類圖結構如下所示:

DataRabbit 輕量的數據訪問框架(19)-- 讀寫分離與隔離級別

其中泛型參數 TSourceKey 是用來表示數據源標志的類型,比如我們可以用字符串來為每個數據庫(數據源)命名,那么TSourceKey便可使用string類型。

泛型參數 TSlaveSuitKey 是用來表示每套從庫的【套標志】的類型,比如,我們每套Slave庫中包含5個數據庫(這與Master中的5個是一一對應的),而我們可以提供比如3套Slave庫以支持超大負載的數據讀取,于是我們就要為這三套Slave庫加以不同的標志以區分。

其中有用于注入Master DB數據庫連接信息的Dictionary屬性: MasterDataConfigurationDictionary ,鍵便是TSourceKey類型,是每個數據源的標志,其值是用于封裝數據庫連接信息的DataConfiguration,這個類大家已經很熟悉了。而SlaveSuitDictionary用于注入多套從庫的數據庫連接信息。當然你已經知道, MasterDataConfigurationDictionary SlaveSuitDictionary中每一套的項是一一對應的。還有一個小技巧,如果你現在的系統還不夠大,但是以后會采用倒讀寫分離策略,那么暫時你可以將Master和Slave配置為指向同一個數據庫,這是沒有問題的,等系統做大了以上,需要Slave的支持時,只要修改一下配置即可。

DBOperationLogger屬性用于記錄數據庫的所有操作和訪問產生的異常信息。如果不設置,則表示不記錄這些信息,關于DBOperationLogger的介紹,可以參考 這里 。

接下來我們再看GetFactory方法:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> TransactionScopeFactory GetFactory(TSourceKeysourceKey, bool fromMaster);

其第一個參數表示要訪問哪個數據庫,第二個參數表示是要訪問Master庫還是Slave庫。我們要注意到,當系統采用多套從庫時,GetFactory()方法會隨機的返回某套從庫的TransactionScopeFactory,從而達到自動負載均衡的目的。 當然你也可以通過GetSlaveFactory()方法來返回指定標志的某套從庫的TransactionScopeFactory。

如此,我們可以這樣來使用讀寫分離機制 -- 比如,我們有一個任務只是讀取數據庫,而不會有任何修改行為,那么就從Slave庫中讀?。?

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> IList < Student > list = null ;
TransactionScopeFactory factory
= this .transactionScopeFactoryProvider.GetFactory( DBSourceType .Basic, false );
using ( TransactionScope scope = factory.NewTransactionScope( false ))
{
IOrmAccesser
< Student > accesser = scope.NewOrmAccesser < Student > ();
list
= accesser.GetAll();
scope.Commit();
}

return list;

這個例子中,我們用一個枚舉 DBSourceType 來標志多個數據源,例子從標志位Basic的數據源的Slave庫中讀取所有的Student列表信息。

接下來,我們來看對隔離級別的支持。

還是使用上面的這個例子,假設我們的業務允許讀取Student列表可以為臟讀,那么可以降低讀取的隔離級別(默認為ReadCommitted):

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> IList < Student > list = null ;
TransactionScopeFactory factory
= this .transactionScopeFactoryProvider.GetFactory( DBSourceType .Basic, false );
using ( TransactionScope scope = factory.NewTransactionScope( false, IsolationLevel.ReadUncommitted ))
{
IOrmAccesser
< Student > accesser = scope.NewOrmAccesser < Student > ();
list
= accesser.GetAll();
scope.Commit();
}

return list;

IsolationLevel定義如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> public enum IsolationLevel
{
ReadUncommitted
= 0 ,
ReadCommitted,
RepeatableRead,
Serializable
}

DataRabbit3.3及以上版本對上述策略都給予了充分的支持,你可以下載 最新版本 試試。

關于DataRabbit的更多信息目錄,參見 這里

DataRabbit 輕量的數據訪問框架(19)-- 讀寫分離與隔離級別


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美在线一区二区三区 | 亚洲精品性视频 | 成人欧美一区二区三区在线播放 | 草樱av| 在线观看亚洲一区 | 久久精品视在线观看2 | 国产一区二区精品在线 | 亚洲午夜精品国产电影在线观看 | 一级做性色a爰片久久毛片 亚洲午夜精品久久久久久app | 亚洲AV久久久噜噜噜久久 | 狠狠综合久久av一区二区小说 | 性色欧美 | 日韩欧美专区 | 毛片毛片毛片毛片毛片毛片 | 日日碰狠狠躁久久躁婷婷 | 欧美午夜一艳片欧美精品 | 日韩欧美专区 | 黄色福利 | 欧美大片在线免费观看 | 5060午夜网 | 午夜视频色 | 久草在线视频资源站 | 欧美一级α片毛片免费观看 | 黄色电影在线免费观看 | 国产精品久久国产精品 | 日韩欧美亚洲在线 | 国产亚洲欧美日韩v在线 | 国产精品久久久久9999高清 | 激情网址在线观看 | 欧美一级电影视频 | 亚洲国产区| 玖玖操| 国产亚洲欧美视频 | 99精品国产一区二区青青牛奶 | 99xxoo视频在线永久免费观看 | 午夜影院黄色 | 欧美黄区| 国产精品久久久一区二区三区 | 久久亚洲视频 | 日韩精品一区二区三区免费观看 | 三级黄色一级视频 |