返回 Discover
Field DispatchHacker News8 · 2026-06-01

Show HN: Streambed – Stream Postgres to Iceberg on S3, Supports Postgres Wire

github.com

Points
37
Comments
1
日榜排名
#8
Host
github.com
痛点分析发布于 2026/05/31

痛点为 AI 基于上游原始证据的初步提炼;未包含额外中国市场检索。

痛点

用户试图将Postgres数据库的实时变更流式复制到S3上的Iceberg格式,以便在不影响生产库的情况下进行分析查询。现有流程中,直接使用Postgres处理分析查询会拖慢生产库,而传统ETL管道复杂且延迟高。用户尝试使用Streambed这类工具简化流程,但评论指出仅靠CDC复制不足以直接用于分析,数据仍需转换(ELT),否则直接查询会导致糟糕体验。这表明用户面临的核心痛点是:在追求低延迟、低复杂度的数据同步时,容易低估后续数据转换的必要性,导致分析结果不可靠或需要额外返工,造成时间浪费和决策困难。

External Article

External article summary

Stream Postgres to Apache Iceberg on S3 via logical replication, queryable over the Postgres wire protocol. - viggy28/streambed

External Article

External article source

Article title
GitHub - viggy28/streambed: Stream Postgres to Apache Iceberg on S3 via logical replication, queryable over the Postgres wire protocol.
Host
github.com
§ Dossier

Selected HN comments

Replicating the Postgres WAL to S3 and Iceberg reliably is a hard problem but it’s not accurate to say that no ETL is needed here. maybe you can say it’s more of an ELT pattern but anyone who’s interested into using this for realistic analytics they will have to transform the data at some point. If an org is early enough to think that they can use a solution like this and just get in duckdb and start spitting out reports, they will be up for a really bad experience. Please educate people to do the right thing and realize the scope of the work they are facing, it might feel that it hurts your growth in the short term but it will benefit you greatly in the mid-long term as a vendor.

cpard
源数据· Raw Archive
source
Hacker News
upstream_source
hacker_news
upstream_item_id
48348429
daily_ranking_item_id
3c6e6e07-a0cb-48b5-8bb5-e49e7801e315
rank_date
2026-06-01
rank
8
name
Show HN: Streambed – Stream Postgres to Iceberg on S3, Supports Postgres Wire
tagline
github.com
votes_count
37
comments_count
1
created_at_on_source
2026-05-31T18:43:05.000Z
media / source-specific data
{
  "author": "vira28",
  "hn_item_id": 48348429,
  "external_url": "https://github.com/viggy28/streambed"
}
raw_payload
{
  "by": "vira28",
  "id": 48348429,
  "url": "https://github.com/viggy28/streambed",
  "kids": [
    48350059
  ],
  "time": 1780252985,
  "type": "story",
  "score": 37,
  "title": "Show HN: Streambed – Stream Postgres to Iceberg on S3, Supports Postgres Wire",
  "descendants": 1
}
source_raw_snapshot
{
  "id": "f7573e23-2582-45ad-ae30-498de4e757f4",
  "daily_ranking_item_id": "3c6e6e07-a0cb-48b5-8bb5-e49e7801e315",
  "source": "hacker_news",
  "external_id": "48348429",
  "fetched_at": "2026-05-31T22:01:12.611Z",
  "story_raw": {
    "by": "vira28",
    "id": 48348429,
    "url": "https://github.com/viggy28/streambed",
    "kids": [
      48350059
    ],
    "time": 1780252985,
    "type": "story",
    "score": 37,
    "title": "Show HN: Streambed – Stream Postgres to Iceberg on S3, Supports Postgres Wire",
    "descendants": 1
  },
  "stats_raw": {
    "time": 1780252985,
    "score": 37,
    "descendants": 1
  },
  "aux_raw": {
    "external_url": "https://github.com/viggy28/streambed",
    "hn_comment_url": "https://news.ycombinator.com/item?id=48348429",
    "normalized_text": null,
    "external_article": {
      "title": "GitHub - viggy28/streambed: Stream Postgres to Apache Iceberg on S3 via logical replication, queryable over the Postgres wire protocol.",
      "excerpt": "Postgres-to-Iceberg CDC engine. Offload analytical queries from your production database without changing your application.\n\nstreambed streams WAL changes via logical replication, writes Parquet files to S3, and commits Iceberg metadata. Query the result with any Iceberg-compatible engine -- or use the built-in query server, which speaks the Postgres wire protocol so you can connect with psql .\n\nSame analytical query on pgbench (1M accounts, 500K history rows). Postgres on the left, Streambed on the right.\n\nRun streambed sync --help for all configuration options. All flags support environment variables with STREAMBED_ prefix (e.g. STREAMBED_SOURCE_URL ).\n\nStreambed connects to Postgres as a logical replication subscriber. It decodes WAL messages (inserts, updates, deletes), buffers rows per table, and periodically flushes them as Parquet files to S3 with Iceberg metadata commits. Updates and deletes use copy-on-write merging against existing Parquet data.\n\nA query server exposes Iceberg tables over the Postgres wire protocol using embedded DuckDB, so you can query with psql or any Postgres client.\n\nRequires Go 1.22+ and CGO (for go-duckdb and go-sqlite3).\n\nIntegration tests use the",
      "final_url": "https://github.com/viggy28/streambed",
      "fetched_at": "2026-05-31T22:01:04.036Z",
      "description": "Stream Postgres to Apache Iceberg on S3 via logical replication, queryable over the Postgres wire protocol. - viggy28/streambed"
    },
    "selected_comments": [
      {
        "id": 48350059,
        "raw": {
          "by": "cpard",
          "id": 48350059,
          "text": "Replicating the Postgres WAL to S3 and Iceberg reliably is a hard problem but it’s not accurate to say that no ETL is needed here.<p>maybe you can say it’s more of an ELT pattern but anyone who’s interested into using this for realistic analytics they will have to transform the data at some point.<p>If an org is early enough to think that they can use a solution like this and just get in duckdb and start spitting out reports, they will be up for a really bad experience.<p>Please educate people to do the right thing and realize the scope of the work they are facing, it might feel that it hurts your growth in the short term but it will benefit you greatly in the mid-long term as a vendor.",
          "time": 1780263899,
          "type": "comment",
          "parent": 48348429
        },
        "body": "Replicating the Postgres WAL to S3 and Iceberg reliably is a hard problem but it’s not accurate to say that no ETL is needed here. maybe you can say it’s more of an ELT pattern but anyone who’s interested into using this for realistic analytics they will have to transform the data at some point. If an org is early enough to think that they can use a solution like this and just get in duckdb and start spitting out reports, they will be up for a really bad experience. Please educate people to do the right thing and realize the scope of the work they are facing, it might feel that it hurts your growth in the short term but it will benefit you greatly in the mid-long term as a vendor.",
        "is_op": false,
        "author": "cpard",
        "raw_body": "Replicating the Postgres WAL to S3 and Iceberg reliably is a hard problem but it’s not accurate to say that no ETL is needed here.<p>maybe you can say it’s more of an ELT pattern but anyone who’s interested into using this for realistic analytics they will have to transform the data at some point.<p>If an org is early enough to think that they can use a solution like this and just get in duckdb and start spitting out reports, they will be up for a really bad experience.<p>Please educate people to do the right thing and realize the scope of the work they are facing, it might feel that it hurts your growth in the short term but it will benefit you greatly in the mid-long term as a vendor.",
        "created_at": 1780263899,
        "reply_count": 0
      }
    ],
    "presentation_fields": {
      "title": "Show HN: Streambed – Stream Postgres to Iceberg on S3, Supports Postgres Wire",
      "tagline": "github.com",
      "website_url": "https://github.com/viggy28/streambed",
      "canonical_url": "https://news.ycombinator.com/item?id=48348429"
    },
    "external_url_hostname": "github.com",
    "selected_comments_raw": [
      {
        "by": "cpard",
        "id": 48350059,
        "text": "Replicating the Postgres WAL to S3 and Iceberg reliably is a hard problem but it’s not accurate to say that no ETL is needed here.<p>maybe you can say it’s more of an ELT pattern but anyone who’s interested into using this for realistic analytics they will have to transform the data at some point.<p>If an org is early enough to think that they can use a solution like this and just get in duckdb and start spitting out reports, they will be up for a really bad experience.<p>Please educate people to do the right thing and realize the scope of the work they are facing, it might feel that it hurts your growth in the short term but it will benefit you greatly in the mid-long term as a vendor.",
        "time": 1780263899,
        "type": "comment",
        "parent": 48348429
      }
    ]
  },
  "selection_meta": {
    "discussion_depth": "top_comments_v1",
    "external_article": {
      "status": "ok",
      "final_url": "https://github.com/viggy28/streambed",
      "status_code": 200,
      "content_type": "text/html; charset=utf-8",
      "failure_reason": null
    },
    "snapshot_version": "hn_story_v3",
    "selected_comments_count": 1,
    "external_article_resolved": true,
    "text_normalization_applied": false
  },
  "created_at": "2026-05-31T22:01:12.796Z",
  "updated_at": "2026-05-31T22:01:12.796Z"
}