跳转到内容
use-cases / send-a-teammate-a-database-state / hero
PIPE · SHARE STREAMS · POSTGRES

用一行命令把数据库状态发给队友

队友撞到一个你复现不了的 bug。跳过文件这步。你笔记本上的 pg_dump 直接流进对方 staging 上的 psql——无上传、无链接、无下载。管道把字节穿过去。

阅读 Pipe API 文档
use-cases / send-a-teammate-a-database-state / flow

一条 pipe 路径。两条 curl。无中间文件。

Hoody Pipe API 让一条未建立的管道最多挂五分钟,等另一端连接。两端连上,字节就流。服务器从不写盘。

pipe.containers.hoody.com/dev-snapshot
PUT · SENDER你 · dev

把 pg_dump 的输出流出去

# from your dev laptoppg_dump --format=custom dev \  | curl -T - \      https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot[INFO] Waiting for 1 receiver to connect…[INFO] Streaming to 1 receiver…[INFO] Transfer complete.

PUT(或 POST)带流式 body。服务器会把状态信息回打到你的终端,管道一建立就能看见——方便看出对方实际什么时候连上的。

GET · RECEIVER队友 · staging

把 dump 直接拉进 psql

# on their staging shellcurl https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot \  | pg_restore -d staging# rows imported · staging now matches dev

对同一路径 GET,会阻塞到发送端连上。发送端写入的字节就是响应体。管道送给 pg_restore(或 psql),dump 直接落到数据库——从不变成文件。

n=1 · 默认扇出管道最多等 5 分钟服务器存 0 字节

想看进度又不想占接收端席位,把第三条 curl 指向同一路径加 ?progress,就能拿到一个实时 HTML 仪表盘,显示已传字节、速度和 ETA。

use-cases / send-a-teammate-a-database-state / steps

实时看是这样

把开发库塞进队友 staging,只要四步,且服务器上从不落盘。

Slack 消息 → 还原好的库四步 · 一条管道
10:14 · BUG REPORT01

队友复现不出来

“能把你的 dev 库发我吗?”

搁昨天,这意味着 pg_dump、S3 桶、预签名 URL,再粘到 Slack。

10:14 · PUT02

你把 dump 流出去

pg_dump dev | curl -T - …/pipe/dev-snapshot

终端打出“Waiting for 1 receiver to connect…”然后停在那。本地也不会创建文件。

10:15 · GET03

队友跑接收端

curl …/pipe/dev-snapshot | pg_restore

对方一连上,管道就建立。字节从你的 pg_dump 直接流进对方的 pg_restore。

10:18 · DONE04

staging 现在和 dev 一致

Transfer complete · 服务器 0 字节

服务端磁盘占用一直为零。两端一断开,管道路径就忘了这次传输。

use-cases / send-a-teammate-a-database-state / reasons

为什么路径胜过文件

命令数和走 S3 中转一样多——但少了桶、凭据、上传、下载和清理。

无存储

服务器从不持有字节

Hoody Pipe 是流式中介,不是文件服务。dump 在你盘上、也在对方盘上;中间只是飞行中的字节。无清理、无泄漏。

无大文件

大小由管道封顶,不由内存封顶

没有上传进度条要盯着,因为根本没上传。40 GB dump 以你的网络和对方 pg_restore 能顶住的速度走——管道只是转发。

可观察

加 ?progress 拿一个实时仪表盘

用 ?progress 在第三个 URL 上打开同一路径,实时看已传字节、速度和 ETA。每条管道最多 50 个旁观者,都不占接收端席位。

use-cases / send-a-teammate-a-database-state / punchline

数据库状态过去是附件。现在是路径。

文件是静止的状态。路径是运动的状态。Hoody Pipe 让数据库快照成为后者——可寻址、短生命周期,且不会留在服务器上让你回头收拾。

  • 无上传
  • 无下载
  • 无链接要分享
use-cases / send-a-teammate-a-database-state / replaces

它替代了什么

我们以前共享 dev 库用的大多数工具,都是当年还不能在两个终端之间通过 HTTP 流字节时留下的遗物。管道让它们都不必要。

  • AWS S3 + 预签名 URL一个桶、一个凭据、一次上传、24 小时链接
  • Dropbox / Google Drive登录、手动分享、等同步
  • Slack 文件上传30 MB 上限,然后“请用真链接”
  • WeTransfer 类服务邮件门禁、广告页、谜之保留期
  • Postgres dblink 绕路对 dev 开端口让 staging 实时拉行
  • rsync over SSH bastion两把 SSH key、一个跳板、两端各一份临时文件
use-cases / send-a-teammate-a-database-state / cta

两条 curl。一条路径。对方 staging 现在和你 dev 一致。

阅读 Pipe API 指南
use-cases / send-a-teammate-a-database-state / related

阅读其他内容