簡體   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