我很確定這是一個愚蠢的主意,但我想知道為什麼,所以請耐心等候。
許多後端開發人員所做的工作是通過HTTP向客戶提供CRUD訪問,本質上在內部數據庫之間映射數據。客戶通過某種加密連接使用某種憑據向Web服務授權,Web服務將驗證數據並針對後端數據庫執行查詢,然後將結果返回給客戶端。
總而言之,這只是直接與數據庫進行交互的一種較差的方式:幾乎沒有人完全實現REST規範,而且遲早您總會遇到自製的通用過濾,排序或分頁的問題。 -儘管SQL已經支持所有這些功能。
這讓我感到奇怪:為什麼不通過公開SQL端口,完全跳過HTTP API來讓客戶訪問數據庫?這有很多優點:
- 客戶端必須使用客戶端證書對連接進行加密
- 我們可以使用服務器內置的訪問控制,也可以僅針對每個客戶使用分片數據庫
- (My-)SQL權限非常精細,因此我認為不應有任何明顯的安全問題
- 性能應該更好,因為我們跳過了整個HTTP通信和Web應用程序代碼
- 新功能是數據庫遷移的問題,所有內容都反映在架構中
- 為用戶提供了強大的查詢功能,而無需付出任何額外的努力
缺點似乎包括無法支持多個架構版本,儘管我認為謹慎的棄用(也許還有客戶端SDK)應該使影響最小。
似乎沒有人這樣做,肯定有我忽略的安全風險。為什麼我們不能為客戶提供公共SQL訪問?可能出什麼問題了? (請記住,這只是出於好奇而產生的思想實驗)