我們很高興宣布強大的新功能和架構增強功能(統稱為增強的 Postgres 相容性),允許更廣泛的 Postgres 應用程式在 YugabyteDB 上運行。
此版本兌現了我們一年前所做的承諾,即實現 PostgreSQL 應用程式完全可移植到 YugabyteDB。這項最新發展使 YugabyteDB 成為建立雲端原生應用程式並將現有應用程式現代化為雲端原生 RDBMS 的
公司的完美資料庫。
在這篇部落格中,我們分享了 YugabyteDB 的新增功能以及我們決定建立這些新功能的原因。
在詳細介紹之前,先快速瀏覽一下我們新增的內容:
與 Postgres 的運行時相容性– YugabyteDB 現在提供事務語義、重試邏輯和 CDC,其工作方式與 Postgres 類似,作為我們不斷改進 Postgres 運行時兼容性的努力的一部分。
自適應基於成本的優化器 (CBO):YugabyteDB 的新自適應 CBO 擴展了 PostgreSQL CBO 的範圍,適用於大規模和多區域應用程式。
智慧資料分發:YugabyteDB 現在自動決定是 巴基斯坦 電話號碼庫 否將表並置以降低延遲,或對它們進行分片和分發以實現大規模擴展。
YugabyteDB 的新自適應 CBO 和智慧資料分發使開發人員能夠在 YugabyteDB 上以相當的性能運行其 Postgres 應用程序,並在需要擴展時對資料進行分片和分發。
這意味著不再需要權衡和強制遷移!
觀看 Yugabyte 創辦人兼聯合執行長 Karthik Ranganathan 分享這個新版本的主要功能。
我們押注 Postgres 作為標準
由於其成熟的功能集、強大的擴展、開源社群以及對流行程式語言的支持,PostgreSQL 仍然是最受開發人員歡迎的資料庫。
Postgres 現在不僅僅是一個資料庫,它已經成為雲端原生事務資料庫的預設 API。
越來越多的 Postgres 相容資料庫和衍生解決方案選擇支援 Postgres 協定以及其他功能。 YugabyteDB 很早就認識到了這種轉變,並早在 2017-2018 年就宣布兼容 PostgreSQL。
具有 Postgres 相容性的資料庫有很多好處:
Postgres 相容的資料庫可以利用為 Postgres 構建的龐大的現有工具、庫和框架生態系統,而無需從頭開始重新設計。這個生態系統繼續快速發展,現在包括 pg_vector 等 AI 擴展。
開發人員可以利用現有的 Postgres 經驗快速提高新資料庫的工作效率,而無需從頭開始學習。
選擇使用 Postgres 相容資料庫的企業可以降低風險和暴露程度,因為他們有 Postgres 和其他相容資料庫作為後備計劃。
Postgres 相容性的力量
您看到這些好處的程度取決於您的資料庫提供的相容性級別,而相容性級別各不相同(通常差異很大)。與 Postgres 的連線相容性並不能讓您走得太遠 – 開發人員需要執行時間相容性,以確保重試、
錯誤程式碼等無縫運作。
YugabyteDB 保留了 PostgreSQL 的所有功能和熟悉性,同時以三種不同的方式進行了發展:
從內部分散式:YugabyteDB 的分散式架構為您提供內建的彈性、動態可擴展性和多站點分佈,而 PostgreSQL 相容的 API 提供工作負載可移植性
企業級開箱即用:YugabyteDB將領先的商業RDBMS的功能帶到分散式Postgres中,例如災難復原和複製、效能最佳化和可觀察性、安全性等。
作為雲端服務提供:YugabyteDB 將 Postgres 建置為任何公有雲或私有雲中的靈活託管服務。我們不只是將 Postgres 作為雲端中的託管服務運行,而是將資料庫重新構想為充分利用公有雲服務的大量資源的本機雲端服務。
提供運行時相容性和可擴展性
雖然其他資料庫可能與 Postgres 運行時相容,但這些資料庫不是分散式的。這意味著它們無法擴展讀取和寫入,不具有相同的彈性和可用性(它們不是多活動的),並且缺乏多區域功能。
類似地,其他資料庫可能 2024 年 6 家最佳網域註冊商 是完全分散式的,但僅與 Postgres 有線相容。
YugabyteDB 是唯一一個既與 Postgres 運行時相容又完全分散式的資料庫。
與 Postgres 相容且完全分散式
超越與 Postgres 的功能相容性
隨著越來越多的企業將其 Postgres 應用程式遷移到 YugabyteDB 以獲得高可用性和可擴展性,我們意識到與 Postgres 的運行時相容性不足以輕鬆地將應用程式遷移過來。
為什麼?
YugabyteDB 是一個分散式資料庫,它將資料分片並複製到叢集中的多個節點,以實現彈性和可擴展性。當應用程式從 Postgres 移植到 YugabyteDB 時,查詢效能可能會受到影響,有時會以意想不到的方式受到影響。
開發人員必須花費額外的時間來最佳化現有的 Postgres 應用程序,以適應 YugabyteDB 的分散特性。開發人員的時間很寶貴,雖然有些人喜歡深入研究分散式系統,但我們將這種摩擦視為改進的機會。
我們希望提供更好的直接遷移體驗,使開發人員能夠在 YugabyteDB 上運行現有的 Postgres 應用程序,而無需進行額外的工作。
超越功能對等
我們著手實現效能對等,而不僅僅是與 Postgres 的功能相容性。開發人員應該能夠以最小的更改(直接遷移)遷移為 PostgreSQL 構建的應用程序,並讓這些 台灣數據 應用程式運行時不會出現錯誤,並且性能可與 PostgreSQL 相媲美。
然後,當應用程式需要可擴展性時,它們應該能夠自動分片和分發表和查詢以使用叢集中的資源。
為了實現這一目標,我們在兩個方面進行了創新:
基於成本的自適應優化器
PostgreSQL 的內建基於成本的最佳化器 (CBO) 對於處理多種不同的工作負載至關重要。 YugabyteDB 的新自適應 CBO 擴展了 PostgreSQL CBO 的範圍,適用於大規模和多區域應用程式。
它確定最佳查詢計劃,該計劃考慮資料是否位於同一位置、自動分片,甚至跨區域或區域分佈。它還實現了核心 Postgres 功能,包括擴展表統計、平行計劃和點陣圖掃描。
智慧數據分發
分散式 SQL 資料庫通常跨節點聯合資料和查詢處理。雖然這可以擴展工作負載,但可能會降低為傳統資料庫建立的應用程式的效能。這迫使開發人員在較低延遲和更大規模之間做出選擇。
YugabyteDB 透過自動確定是以並置方式將表儲存在一起以降低延遲,還是對它們進行分片和分發以實現大規模擴展,從而消除了這種強制選擇。
一些應用程式沒有看到可比性能的另一個原因是標準 Postgres 和分散式 Postgres (YugabyteDB) 之間存在細微的儲存差異。在早期,我們不得不放棄某些 Postgres 內部功能(例如點陣圖掃描或平行查詢),尤其是那些與 Postgres 儲存層緊密耦合的功能。
然而,在過去的一年裡,我們透過「教導」Postgres 如何使用我們新的基於成本的優化器,在儲存層(或在儲存層和查詢層的交匯處)找回了這些缺失的拼圖,運行並行查詢、利用共享記憶體以及使用YugabyteDB 的分散式儲存執行更多操作。
為什麼這些最新的優化很重要?
YugabyteDB 不僅應該像 Postgres 一樣工作,而且還應該像它一樣執行——甚至更好!我們希望開發人員將 Postgres 應用程式遷移到 YugabyteDB,以享受開箱即用的高可用性和可擴展性,而無需犧牲關鍵的 Postgres 功能,或在效能優化上投入額外的精力。
最終的結果甚至超出了我們的預期。
超過 92% 的 PostgreSQL 查詢模式在 YugabyteDB 上運行時具有相當的性能,而兩年前這一比例為 47%。這意味著開發人員可以將其 Postgres 應用程式移植到 YugabyteDB 並實現可比較的效能,同時能夠在需要時進行適當擴展。
YugabyteDB 的 Adaptive CBO 在 93% 的 TAQO Framework 測試中選擇了最佳查詢計劃,這接近 Postgres 達到的 97% 的分數。 TAQO 框架是基於加州大學戴維斯分校的研究的Postgres 相容資料庫的
查詢優化器測試框架。
智慧型資料分發使 YugabyteDB 能夠支援超過 50,000 個資料庫物件(表、索引、序列等),而沒有智慧資料分發的情況下只能支援 2,000 個資料庫物件。這導致顯著更高的可擴展性。
有關最新改進的更多詳細信息,請參閱增強型 Postgres 相容模式文件。
總之
我們希望您現在能夠更好地理解為什麼YugabyteDB 繼續深入了解 Postgres 相容性,以及我們致力於使 YugabyteDB 成為現代事務應用程式的首選資料庫。
我們不僅僅是建立另一個分散式 SQL 資料庫。我們正在建立一個完全分散的資料庫,具有增強的 Postgres 相容性,可擴展且永不失敗。