Postgresql
如果 Postgres 是基於行的,如何基於 PostgreSQL 建構 Amazon Redshift?
據亞馬遜稱,Redshift 基於 PostgreSQL,是一個面向列的數據庫管理系統。這在我看來是一個非常自相矛盾的陳述,Postgres 不是面向行的數據庫嗎?
Postgres 伺服器有很多東西,而不僅僅是面向行的訪問方法:
(上圖來自Postgres 文件。)
任何人都可以在非常寬鬆的許可下使用 Postgres 原始碼。要實現“基於 PostgreSQL”的 DBMS,您不必從頭開始重寫它。比如說,如果你想引入一個不同的佈局來儲存你的數據,你可以在很少或不改變主伺服器程序、客戶端 API、查詢解析器和重寫器、大多數實用程序和安全功能的情況下重用。您可能需要修改計劃生成器和執行器,同時添加新的訪問方法並替換部分頁面儲存管理器。鑑於亞馬遜可以支配的資源,這看起來並非不可能完成的任務。
亞馬遜基本上說了這麼多:
Amazon Redshift 使用的專用數據儲存架構和查詢執行引擎與 PostgreSQL 實施完全不同。
$$ … $$Amazon Redshift 將數據儲存在列中,使用專門的數據壓縮編碼來優化記憶體使用和磁碟 I/O。一些適合小規模 OLTP 處理的 PostgreSQL 特性,例如二級索引和高效的單行數據操作操作,已被省略$$ … $$