go database/sql 源碼分析(一)sql包設計哲學

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。database/sql設計哲學非常優雅,但是內部實現又非常複製,本節從頂層來去分析下database/sql的實現思想

對上層應用提供一個標準的API


對驅動層定義一個標準介面層
隔離具體的資料庫
各個具體的資料庫驅動實現該套介面即可被使用

應用程式層調用邏輯不依賴具體的資料庫,其使用的是sql提供的標準API


三大功能
在內部實現一個串連池
內部通過鎖實現並發訪問的安全性

內部實現資料類型的自動轉換


驅動層實現的介面和應用程式層的調用介面幾乎一模一樣
使應用程式調用者和驅動的實現者看到的介面視角的一致性

則也算一種編程哲學:增強功能但是調用介面不變,一般的理解是增強功能要增加介面,但是sql包的實現幾乎沒有增加太多的調用介面而實現功能增強


把複雜功能放在sql包內部實現
並發的安全性支援
串連池的管理

為訪問DB提供一個抽象體,看不到串連,串連完全在內部實現中隱藏了


編程哲學
面向介面編程
sql包的實現者教科書般的告訴我們實現抽象型平台型中介軟體的方法
抽象底層實現者介面
中介軟體面向介面層實現平台級層邏輯
對外提供一套統一的調用API,隔離底層實現者和上層調用者
基於該種思想可以抽象的平台型中介軟體有:
日誌記錄
 記錄到檔案
 記錄到DB

 寫到網路


session管理
 存放在記憶體
 存放在DB

 存放在檔案


程式配置
 各種設定檔
 DB

 其他中介軟體


面向組合的編程
sql包中定義資料結構組合了driver層的介面變數和內部資料元素

這種可以看作golang專屬的組合編程模式


分層實現
層內高內聚,層間低耦合
隱藏實現的複雜性,通過介面粘合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.