繁体   English   中英

postgresql中结构化数据的压缩与分发

[英]Compression and distribution of structured data in postgresql

我在 postgresql db 中创建了一个非常大的表(以 TB 为单位)并且像 greenplum 我喜欢指定压缩大小并随机分发数据但是在 postgresql 文档中,我找不到任何压缩条款

知道如何在 postgresql 中实现数据的压缩和随机分布

提前致谢

对于压缩,只有 TOAST。 这会自动压缩数据,但仅限于大行(超过 2000 字节)。 没有办法像这样压缩整个表。

我不确定表中的“随机数据分布”是什么,但是如果您想跨多个设备分布该表数据,则必须为它们定义表空间并使用 hash 分区,每个表空间上都有一个分区。

对于压缩,当 go 超过一定大小时,PostgreSQL 会自动为您执行此操作。 但是,压缩应用于每个单独的数据值 - 而不是整个表级别。 这意味着如果您有 10 亿行非常窄的行,它们将不会被压缩。 或者,如果您有很多列,每列中只有一个很小的值,它们将不会被压缩。 手册中有关此方案的详细信息。

如果您在全表级别需要它,一个解决方案是为那些您想要压缩的表创建一个 TABLESPACE 并将其指向压缩文件系统。 只要文件系统仍然遵守 fsync() 和标准 POSIX 语义,这应该是绝对安全的。 手册中有关于此的详细信息。

PostgreSQL 不是本地分发的。 如果您想要 PostgreSQL 的分布式版本,其中数据可以分布在多个节点上,并且让这些节点使用复制来实现高可用性,则有一些第 3 方选项,例如:

  • Postgres-XL - Postgres 的一个分支版本,设计用于分发并具有一些其他功能,如 MPP。

PostGreSQL 中不存在压缩。没有办法做到这一点。 唯一的例外是 LOB(大对象)被系统地压缩为 TOAST,这显然不适合许多 LOB(图片如 .jpg、.png...)。

阅读我关于 PostGreSQL 限制与 MS SQL 服务器相比的论文。 http://mssqlserver.fr/postgresql-vs-sql-server-mssql-part-3-very-extremely-detailed-comparison/特别是§“17 – 数据和索引压缩”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM