對於許多開發者來說,Amazon DynamoDB 是一個極其強大的 NoSQL 資料庫,但它最大的痛點在於其高度的雲端綁定性。如果你想在本地開發、進行持續整合測試(CI Testing),或者因為法規合規性必須將資料留在地端(On-premises),通常只能依賴功能受限的 DynamoDB Local。現在 AWS 推出了開源專案 ExtendDB,旨在解決這個問題。
什麼是 ExtendDB
簡單來說,ExtendDB 是一個相容層(Adapter),它扮演了翻譯官的角色。它實作了 DynamoDB 的線路協定(Wire Protocol),也就是說,你的應用程式依然使用原生的 AWS SDK 發送 DynamoDB 指令,但 ExtendDB 會在中間將這些指令翻譯成其他儲存後端能理解的語言。目前首波支援的後端是 PostgreSQL。
這對工程實務有什麼影響
對於開發團隊而言,最大的好處是解耦。你不需要為了本地開發而修改程式碼中的資料庫存取邏輯,只要將 SDK 的端點(Endpoint)指向 ExtendDB,就能在本地的 PostgreSQL 上運行 DynamoDB 風格的工作負載。這不僅降低了開發成本,也讓測試環境的搭建變得更靈活。
從技術架構來看,ExtendDB 使用 Rust 語言編寫,這保證了其執行效率與記憶體安全。其設計核心採用了可插拔的儲存後端(Pluggable Storage Backends)模式。在 Rust 的實作中,這透過一個名為 Trait 的介面定義來達成。核心引擎負責處理類別驗證與表達式評估,而具體的儲存邏輯則交由後端模組處理。這意味著未來除了 PostgreSQL,社群或 AWS 也可以輕鬆地加入 Apache Cassandra 或 MySQL 等其他資料庫作為儲存底層,而無需更動核心代碼。
部署與運作細節
ExtendDB 被設計成單一執行檔(Single Binary),不需要安裝複雜的運行環境。為了模擬真實的 AWS 環境,它支援 SigV4 認證(AWS 標準的請求簽名機制),並在首次執行時自動生成自簽名憑證以支援 TLS 加密傳輸。
目前的版本雖然已實作了控制平面(Control Plane,如建立表單)與資料平面(Data Plane,如讀寫項目)以及 Streams 功能,但仍處於早期階段(v0.1)。
潛在的限制與挑戰
儘管構想美好,但目前的實作仍有明顯的性能瓶頸。根據初步的社群回饋,在高併發的寫入壓力下,延遲(Latency)會顯著增加。例如在某些測試場景中,更新項目的 P90 延遲甚至高達 300 毫秒,這對於追求極速響應的 NoSQL 應用來說是一個巨大的挑戰。
此外,雖然它提供了與 DynamoDB 相似的體驗,但它本質上是在關聯式資料庫(PostgreSQL)之上模擬 NoSQL 行為,因此在處理極大規模數據時,其性能表現與原生的 DynamoDB 分散式架構仍有巨大差距。
總結與展望
ExtendDB 的出現象徵著 AWS 在開源生態與開發者體驗上的轉向,讓開發者在享受 DynamoDB API 便利性的同時,擁有選擇儲存底層的自由。對於 Junior 工程師來說,這是一個學習 API 代理(Proxy)設計與協定翻譯的絕佳案例。雖然目前性能尚待優化,但它為地端部署與混合雲架構提供了一條可行的路徑。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。