postgresql中结构化数据的压缩与分发
Compression and distribution of structured data in postgresql
我正在创建一个 table,它在 postgresql 数据库中非常大(以 TB 为单位)并且像 greenplum 我喜欢指定压缩大小并随机分发数据
但是在postgresql的文档中,我找不到任何关于压缩的条款
知道如何在 postgresql 中实现数据的压缩和随机分布
提前致谢
对于压缩,只有TOAST。这会自动压缩数据,但仅限于大行(超过 2000 字节)。没有办法像这样压缩整个 table。
我不确定 table 中的“随机数据分发”是什么,但是如果您想在多个设备上分发该 table 数据,您必须定义 table为它们分配空间,并在每个 table 空间上使用散列分区和分区。
PostGreSQL 中不存在压缩。没有办法做到这一点。唯一的例外是 LOB(大对象)被系统地压缩为 TOAST,这显然不适合许多 LOB(图片如 .jpg、.png...)。
阅读我关于 PostGreSQL 限制与 MS SQL 服务器相比的论文。
http://mssqlserver.fr/postgresql-vs-sql-server-mssql-part-3-very-extremely-detailed-comparison/
特别是§“17 – 数据和索引压缩”
对于压缩,PostgreSQL 会在超过特定大小时自动为您执行此操作。但是,压缩应用于每个单独的数据值 - 而不是完整的 table 级别。这意味着如果您有 10 亿行非常窄的行,它们将不会被压缩。或者,如果您有很多列,每列中只有一个很小的值,它们将不会被压缩。 manual.
中有关此方案的详细信息
如果您需要完整的 table 级别,解决方案是为那些 table 要压缩的表空间创建一个表空间,并将其指向压缩文件系统。只要文件系统仍然遵守 fsync() 和标准 POSIX 语义,这应该是绝对安全的。 manual.
中的详细信息
PostgreSQL 不是原生分布式的。如果您想要一个分布式版本的 PostgreSQL,其中数据可以分布在多个节点上,并且让这些节点使用复制来实现高可用性,则有一些第 3 方选项,例如:
- Postgres-XL - Postgres 的一个分支版本,旨在分发并具有一些其他功能,如 MPP。
我正在创建一个 table,它在 postgresql 数据库中非常大(以 TB 为单位)并且像 greenplum 我喜欢指定压缩大小并随机分发数据 但是在postgresql的文档中,我找不到任何关于压缩的条款
知道如何在 postgresql 中实现数据的压缩和随机分布
提前致谢
对于压缩,只有TOAST。这会自动压缩数据,但仅限于大行(超过 2000 字节)。没有办法像这样压缩整个 table。
我不确定 table 中的“随机数据分发”是什么,但是如果您想在多个设备上分发该 table 数据,您必须定义 table为它们分配空间,并在每个 table 空间上使用散列分区和分区。
PostGreSQL 中不存在压缩。没有办法做到这一点。唯一的例外是 LOB(大对象)被系统地压缩为 TOAST,这显然不适合许多 LOB(图片如 .jpg、.png...)。
阅读我关于 PostGreSQL 限制与 MS SQL 服务器相比的论文。 http://mssqlserver.fr/postgresql-vs-sql-server-mssql-part-3-very-extremely-detailed-comparison/ 特别是§“17 – 数据和索引压缩”
对于压缩,PostgreSQL 会在超过特定大小时自动为您执行此操作。但是,压缩应用于每个单独的数据值 - 而不是完整的 table 级别。这意味着如果您有 10 亿行非常窄的行,它们将不会被压缩。或者,如果您有很多列,每列中只有一个很小的值,它们将不会被压缩。 manual.
中有关此方案的详细信息如果您需要完整的 table 级别,解决方案是为那些 table 要压缩的表空间创建一个表空间,并将其指向压缩文件系统。只要文件系统仍然遵守 fsync() 和标准 POSIX 语义,这应该是绝对安全的。 manual.
中的详细信息PostgreSQL 不是原生分布式的。如果您想要一个分布式版本的 PostgreSQL,其中数据可以分布在多个节点上,并且让这些节点使用复制来实现高可用性,则有一些第 3 方选项,例如:
- Postgres-XL - Postgres 的一个分支版本,旨在分发并具有一些其他功能,如 MPP。