我们正在构建一个 API,该 API 当前公开数据库主键以选择参数。我担心 pg_dump(和基于它的 Heroku pgbackups)显然不备份主键。(请参阅Postgres pg_dump 每次都以不同的顺序转储数据库)
如果我需要升级我们的数据库或将其复制到 staging,我可以使用 Heroku follower 或 fork 功能并保留主键。(参见https://devcenter.heroku.com/articles/heroku-postgres-follower-databases和https://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 中。
提前感谢您的建议。