本週一篇研究論文顯示:透過引入類似io_uring 實現資料庫 IO 非同步,尾部延遲可減少 100 倍。
這是一篇關於無伺服器計算環境中資料庫和執行時協同設計的學術論文,標題為《Serverless Runtime / Database Co-Design With Asynchronous I/O》,由Pekka Enberg、Sasu Tarkoma、Jon Crowcroft和Ashwin Rao撰寫。這篇論文發表在2024年4月22日於希臘雅典舉行的第七屆國際邊緣系統、分析和網路研討會(EdgeSys '24)上。以下是論文的主要內容概述:
傳統方法(如使用 SQLite)利用同步 IO,這會在資料庫互動過程中阻塞執行時,影響併發性和可擴充套件性,這對於具有多租戶特性的無伺服器來說並不理想。
這篇論文談到了對 SQLite 進行非同步重構,即資料庫互動不會阻塞執行時,從而讓執行時可以處理其他任務。
- 作者提出了“Limbo”,它重新設計了 SQLite 的架構,以透過類似 io_uring 的介面使用非同步 I/O。
- Limbo 將查詢引擎和儲存引擎分離,允許無伺服器執行時以適合其需求的方式實現 I/O 模組,例如將儲存解除安裝到遠端伺服器。
- Limbo 的非同步設計實現了更好的併發和多工處理,使得無伺服器執行時能夠有效地支援更多租戶。
- 初步評估表明,與傳統同步 SQLite 相比,Limbo 可以將尾部延遲減少多達 100 倍。
- 將 SQLite 等資料庫整合到無伺服器執行時會帶來新的隱私和安全挑戰,需要透過記憶體隔離和安全區等機制來解決
根據論文所述,這種改進可以為無伺服器或邊緣執行的關鍵延遲敏感型工作負載提供低延遲訪問。
關鍵詞:
- 邊緣計算、無伺服器計算、程序內資料庫