1

我们正在构建一个 API,该 API 当前公开数据库主键以选择参数。我担心 pg_dump(和基于它的 Heroku pgbackups)显然不备份主键。(请参阅Postgres pg_dump 每次都以不同的顺序转储数据库

如果我需要升级我们的数据库或将其复制到 staging,我可以使用 Heroku follower 或 fork 功能并保留主键。(参见https://devcenter.heroku.com/articles/heroku-postgres-follower-databaseshttps://devcenter.heroku.com/articles/heroku-postgres-fork)。但是,导出数据库以在开发中使用会丢失排序(请参阅https://devcenter.heroku.com/articles/heroku-postgres-import-export)。

所以,如果我不能备份它们,使用数据库表的 ID 作为外部 API 标识符是不是一个坏主意?

我应该考虑在每个参数表上创建一个 UUID 列并改为公开它吗?(见http://www.codinghorror.com/blog/2007/03/primary-keys-ids-versus-guids.html

我发现像 /v1/products?category=14,16&partner=3&q=plaid 这样的 URL 对开发人员来说更容易使用,但我担心我会因为难以迁移而将自己锁定在 Heroku 中。

提前感谢您的建议。

4

1 回答 1

3

我担心 pg_dump(和基于它的 Heroku pgbackups)显然不备份主键。

不要担心。当然,他们得到了备份。这不是链接项目所说的。

该项目表示无法保证倾倒行的顺序。这并不意味着 (id=1, name="fred") 将丢失 (id=1) 只是它可能不会(在备份文件中)列为第一项。发帖人关心的唯一原因是因为他试图将备份文件作为文本进行比较。

于 2013-06-19T10:58:22.743 回答