jack2684 Asked: 2021-01-05 14:00:55 +0800 CST2021-01-05 14:00:55 +0800 CST 2021-01-05 14:00:55 +0800 CST 如果 Postgres 是基于行的,如何基于 PostgreSQL 构建 Amazon Redshift? 772 据亚马逊称,Redshift 基于 PostgreSQL,是一个面向列的数据库管理系统。这在我看来是一个非常自相矛盾的陈述,Postgres 不是面向行的数据库吗? postgresql data-warehouse 1 个回答 Voted Best Answer mustaccio 2021-01-05T15:48:25+08:002021-01-05T15:48:25+08:00 Postgres 服务器有很多东西,而不仅仅是面向行的访问方法: (上图来自Postgres 文档。) 任何人都可以在非常宽松的许可下使用 Postgres 源代码。要实现“基于 PostgreSQL”的 DBMS,您不必从头开始重写它。比如说,如果你想引入一个不同的布局来存储你的数据,你可以在很少或不改变主服务器进程、客户端 API、查询解析器和重写器、大多数实用程序和安全功能的情况下重用。您可能需要修改计划生成器和执行器,同时添加新的访问方法并替换部分页面存储管理器。鉴于亚马逊可以支配的资源,这看起来并非不可能完成的任务。 亚马逊基本上说了这么多: Amazon Redshift 使用的专用数据存储架构和查询执行引擎与 PostgreSQL 实施完全不同。[...] Amazon Redshift 将数据存储在列中,使用专门的数据压缩编码来优化内存使用和磁盘 I/O。一些适用于小规模 OLTP 处理的 PostgreSQL 功能,例如二级索引和高效的单行数据操作操作,已被省略 [...]
Postgres 服务器有很多东西,而不仅仅是面向行的访问方法:
(上图来自Postgres 文档。)
任何人都可以在非常宽松的许可下使用 Postgres 源代码。要实现“基于 PostgreSQL”的 DBMS,您不必从头开始重写它。比如说,如果你想引入一个不同的布局来存储你的数据,你可以在很少或不改变主服务器进程、客户端 API、查询解析器和重写器、大多数实用程序和安全功能的情况下重用。您可能需要修改计划生成器和执行器,同时添加新的访问方法并替换部分页面存储管理器。鉴于亚马逊可以支配的资源,这看起来并非不可能完成的任务。
亚马逊基本上说了这么多: