成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

支持C#的分表分庫組件-Ctrip DAL

開發 后端
Ctrip DAL是攜程框架部開發的數據庫訪問框架,支持代碼生成和水平擴展。其由攜程技術中心框架部DAL團隊開發,歷經3年不斷打磨,并在長期的實際使用中基于大量的用戶反饋不斷優化。

[[411066]]

本文轉載自微信公眾號「后端Q」,作者conan。轉載本文請聯系后端Q公眾號。

簡介

Ctrip DAL是攜程框架部開發的數據庫訪問框架,支持代碼生成和水平擴展。其由攜程技術中心框架部DAL團隊開發,歷經3年不斷打磨,并在長期的實際使用中基于大量的用戶反饋不斷優化。

開源范圍包括代碼生成器,Java客戶端和C#客戶端。

背景

隨著企業規模擴張和業務量的急劇增加,作為系統核心的數據庫相關開發也會經歷一個由單一團隊發展為多團隊;由單機擴張到集群;由單數據庫發展為多數據庫;由采用單一數據庫產品到多種數據庫產品并存的過程。伴隨這一過程的是如何管理數據庫擴展,如何規范數據庫訪問,如何保護數據庫投資,如何應對訪問量增加,如何預防安全問題等一系列挑戰。作為中國在線旅游行業的翹楚,攜程也曾經面對同樣困擾。為了應對這些挑戰,實現企業10倍速發展,攜程開發了具有自己特色的數據庫訪問框架Ctrip DAL。

Ctrip DAL支持流行的分庫分表操作,支持Java和C#,支持Mysql和MS SqlServer。使用該框架可以在有效地保護企業已有數據庫投資的同時,迅速,可靠的為企業提供數據庫訪問層的橫向擴展能力。整個框架包括代碼生成器和客戶端。工作模式是使用代碼生成器在線生成代碼和配置,通過DAL客戶端完成數據庫操作。生成器具有豐富的向導指引,操作簡單清晰,即可以批量生成標準DAO,也可以在方法級別定制數據庫訪問。客戶端則可以簡單的通過標準的maven方式添加依賴。

Ctrip DAL與一般數據庫框架最大的不同是從企業跨部門的角度,統一管理數據庫相關資源。通過部署代碼生成器,企業可以做到有效的管理全公司的DAL開發團隊,明確數據庫歸屬和定制數據庫訪問。通過代碼生成器生成的標準DAO代碼與客戶端配合使用,可以大幅提高工作效率,保證代碼質量。解決了業內常見的伴隨業務成長而帶來的系統維護困難,開發效率低下,代碼風格五花八門,代碼質量參差不齊等痛點問題。

代碼生成器

代碼生成器允許用戶創建Dal團隊,組織開發人員,管理數據庫,創建DAO并生成代碼和配置。與一般基于JDBC driver的DB sharding產品不同的是,代碼生成器生成的代碼和配置可以直接拿來實用,完全無需用戶寫一行代碼和配置。做到了只需開發人員關心業務邏輯,而把繁瑣的數據庫相關的編碼和配置任務全部交給DAL。由于Ctrip DAL完全在DAO這層工作,也沒有什么這種SQL語句不支持,那種SQL語句不能用的情況。同時傳遞hints的方式也非常自然,每個方法都自帶hints的接口,需要DAL額外做什么可以直接按給定的已有名字來設置,無需改寫原始的sql來添加怪異的注釋。

客戶端簡介

客戶端配合代碼生成器生成的代碼來完成用戶的數據庫訪問操作。通過Dev和QA兩方面雙重自動化測試來保障質量,覆蓋率達到99%,并經過生產實際實用的的長期嚴格檢驗。為了適應不同公司的實際情況,DAL客戶端定義了豐富的擴展接口,覆蓋了從數據源管理,數據庫映射,連接串讀取到自定義訪問方式等等方方面面的功能。同時為了方便系統監控還內置了系統狀態,日志和統計模塊。

C#客戶端 API列表

以下這些API位于BaseDao類中 方法族說明:除了所示的方法之外,至少還包含一個帶有IDictionary hints參數的重載方法。

注意:增刪改均適用的API被歸類至Update系列

  1. Create 
  2.  
  3. Object Insert<T>(T obj) where T : class, new() 方法族 
  4. Object InsertByComplexPk<T>(T obj) where T : class, new() 方法族 
  5. Boolean BulkInsert<T>(IList<T> list) where T : class, new() 方法族 
  6. Retrieve 
  7. IQuery<T> GetQuery<T>() where T : class, new() 
  8. IList<T> GetAll<T>() where T : class, new() 方法族 
  9. IList<T> SelectListOfSingleField<T>(String sql) 方法族 
  10. IList<T> SelectList<T>(String sql) where T : class, new() 方法族 
  11. IList<T> SelectList<T>(IQuery query) where T : class, new() 方法族 
  12. IList<T> SelectListByAdapter<T>(String sql) where T : class, new() 方法族 
  13. IList<T> SelectListByAdapter<T>(IQuery query) where T : class, new() 方法族 
  14. IList<T> ExecListBySp<T>(String procName, StatementParameterCollection parameters) where T : class, new() 方法族 
  15.  
  16. T GetByKey<T>(Object keywhere T : class, new() 方法族 
  17.  
  18. T SelectFirst<T>(String sql) where T : class, new() 方法族 
  19.  
  20. T SelectFirst<T>(IQuery query) where T : class, new() 方法族 
  21.  
  22. T VisitDataReader<T>(String sql, Func<IDataReader, T> callback) 方法族 
  23.  
  24. T VisitDataReaderBySp<T>(String procName, StatementParameterCollection parameters, Func<IDataReader, T> callback) 方法族 
  25.  
  26. DataTable SelectDataTable(String sql) 方法族 
  27.  
  28. DataTable ExecDataTableBySp(String procName, StatementParameterCollection parameters) 方法族 
  29.  
  30. DataSet SelectDataSet(String sql) 方法族 
  31.  
  32. DataSet SelectDataSet<T>(IQuery query) where T : class, new() 方法族 
  33.  
  34. DataSet ExecDataSetBySp(String procName, StatementParameterCollection parameters) 方法族 
  35.  
  36. IDataReader SelectDataReader(String sql) 方法族 
  37.  
  38. IDataReader ExecDataReaderBySp(String procName, StatementParameterCollection parameters) 方法族 
  39.  
  40. Object ExecScalar(String sql) 方法族 
  41.    
  42. Object ExecScalarBySp(String procName, StatementParameterCollection parameters) 方法族 
  43.    
  44. Update 
  45.    
  46. Int32 Update<T>(T obj) where T : class, new() 方法族 
  47.    
  48. IUpdatePartial<T> GetUpdatePartially<T>() where T : class, new() 
  49.    
  50. Int32 UpdatePartially<T>(IUpdatePartial<T> partially, T obj) where T : class, new() 方法族 
  51.    
  52. Int32 ExecNonQuery(String sql) 方法族 
  53.    
  54. void ExecSp(String procName, StatementParameterCollection parameters) 方法族 
  55.    
  56. Delete 
  57.    
  58. Int32 Delete<T>(T obj) where T : class, new() 方法族 

https://github.com/ctripcorp/dal

 

責任編輯:武曉燕 來源: 后端Q
相關推薦

2020-07-30 17:59:34

分庫分表SQL數據庫

2019-11-12 09:54:20

分庫分表數據

2024-07-26 00:16:11

2021-08-31 20:21:11

VitessMySQL分庫

2022-07-11 08:16:47

NewSQL關系數據庫系統

2023-08-11 08:59:49

分庫分表數據數據庫

2020-11-18 09:39:02

MySQL數據庫SQL

2025-04-01 08:45:00

2020-07-28 09:04:09

NewSQL分庫分表

2021-01-26 05:37:08

分庫分表內存

2022-06-15 07:32:24

數據庫分庫分表

2023-08-26 20:08:15

分庫分表Spring

2023-05-15 10:02:00

分庫分表數據

2023-07-24 09:00:00

數據庫MyCat

2019-01-16 14:00:54

數據庫分庫分表

2024-01-03 08:14:33

GreatSQLMyCat庫名字

2019-07-31 09:27:23

數據庫MySQLSQL

2024-02-21 12:17:00

2021-10-29 07:25:32

分庫分表技巧

2020-09-27 08:00:49

分庫分表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产黄色在线观看 | 成人在线视频网址 | 欧美在线资源 | 亚洲成人精品视频 | 伊人久久大香线 | 精品影院 | 九九九久久国产免费 | 久久久精品国产 | 欧美精品一区二区三 | 国产一级视频在线播放 | 欧美专区在线观看 | 国产精品视频一区二区三区不卡 | 精品91视频 | 久久国产成人 | 欧美日产国产成人免费图片 | 日日天天 | 天天碰日日操 | 国产精品美女 | 国产精品毛片一区二区三区 | 精品一区在线免费观看 | 99精品国产一区二区三区 | 国产精品一区免费 | 福利视频一区二区 | 欧美日韩国产一区二区 | 成人在线中文字幕 | 精品色| 四虎免费视频 | 99热电影| 拍拍无遮挡人做人爱视频免费观看 | 精品国产乱码久久久久久蜜柚 | 玖玖精品| 一区二区久久精品 | 国产精品国产三级国产aⅴ中文 | 国产精产国品一二三产区视频 | 亚洲一区二区三区免费在线 | 国产精品18久久久久久白浆动漫 | 国内自拍视频在线观看 | 亚洲一级黄色 | 玖玖综合在线 | 国产成人小视频 | www.午夜|