Skip to content

Update README.md#10

Open
lfittl wants to merge 2 commits intomainfrom
readme-updates
Open

Update README.md#10
lfittl wants to merge 2 commits intomainfrom
readme-updates

Conversation

@lfittl
Copy link
Member

@lfittl lfittl commented Sep 8, 2025

No description provided.

@lfittl lfittl requested a review from seanlinsley September 8, 2025 18:57

- pco supports `u16`, `u32`, `u64`, `i16`, `i32`, `i64`, `f16`, `f32`, `f64`
- pco_store adds support for `SystemTime`, `bool`
- pco_store adds support for `SystemTime` (mapped to ???), `bool` (mapped to ???)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • pco_store adds support for SystemTime (stored as i64), bool (stored as u16)

```

`STORAGE EXTERNAL` is set so that Postgres doesn't try to compress the already-compressed fields
The pco-compressed columns are expected to typically be in Postgres [TOAST](https://www.postgresql.org/docs/current/storage-toast.html). Using `STORAGE EXTERNAL` is recommended so that Postgres doesn't try to compress the already-compressed fields, speeding up writes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the TOAST sentence should be removed because it's just explaining how Postgres works, and pco_store would work whether or not TOAST existed in its current form.

I'd also reword the existing sentence:

STORAGE EXTERNAL is recommended to improve write times by skipping the default Postgres compression step.

The pco-compressed columns are expected to typically be in Postgres [TOAST](https://www.postgresql.org/docs/current/storage-toast.html). Using `STORAGE EXTERNAL` is recommended so that Postgres doesn't try to compress the already-compressed fields, speeding up writes.

This uses a `(end_at, start_at)` index because it's more selective than `(start_at, end_at)` for common use cases. For example when loading the last week of stats, the `end_at` filter is what's doing the work to filter out rows.
Its recommended to index `(end_at, start_at)`, because it's more selective than `(start_at, end_at)` for common use cases. For example when loading the last week of stats, the `end_at` filter is what's doing the work to filter out rows.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: It's. I'm also not sure the added comma makes sense

## Performance

Numeric compression algorithms take advantage of the mathematic relationships between a series of numbers to compress them to a higher degree than binary compression can. Of the numeric compression algorithms available in Rust, pco achieves both the best compression ratio and the best round-trip read and write time.
Numeric compression algorithms take advantage of the mathematic relationships between a series of numbers to compress them to a higher degree than binary compression can. Of the numeric compression algorithms available in Rust, in our tests pco achieves both the best compression ratio and the best round-trip read and write time.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might read better:

In our tests of the numeric compression algorithms available in Rust, pco achieves both the best compression ratio and the best round-trip read and write time

Base automatically changed from compressed-prefix to main September 10, 2025 22:17
@seanlinsley
Copy link
Member

Looks like you'll need to fix the commit history; after the other PR was merged its commit started showing up in the diff here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants