2013-06-19 35 views
0

我們正在構建一個當前公開數據庫主鍵以選擇參數的API。我擔心pg_dump(以及基於它的Heroku pgbackups)顯然不會備份主鍵。 (請參閱Postgres pg_dump dumps database in a different order every time我可以從Heroku Postgres備份主鍵嗎?

如果我需要升級數據庫或將其複製到分段,我可以使用Heroku跟隨器或分叉功能並保留主鍵。 (見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)。

所以,如果我不能對它們進行備份,Is it a bad idea to use a database table's ID as an external API identifier?

我應該考慮創建每個參數表中的UUID列,並揭露說呢? (見http://www.codinghorror.com/blog/2007/03/primary-keys-ids-versus-guids.html

我找到喜歡的網址/ V1 /產品?類別= 14,16 &夥伴= 3 & Q =格子開發人員一起工作更容易,但我擔心我自己鎖進的Heroku通過讓它太難遷移而去。

在此先感謝您的建議。

+0

'我擔心pg_dump(以及基於它的Heroku pgbackups)顯然不會備份主鍵。「您似乎是錯誤信息,或者您的'主鍵'定義與我的定義不同。你究竟擔心什麼? 「暴露主鍵」是什麼意思? – wildplasser

+0

您是否試圖使用oid作爲主鍵的oids表?如果是這樣:糟糕的計劃。 –

回答

2

我擔心pg_dump(和基於它的Heroku pgbackups) 顯然不會備份主鍵。

不用擔心。當然,他們會得到支持。這不是鏈接項目所說的。

該項目是說,行的排序順序不能保證。這並不意味着(id = 1,name =「fred」)會丟失(id = 1),因爲它可能不會作爲第一項列出(在備份文件中)。海報關注的唯一原因是因爲他試圖將備份文件作爲文本進行比較。

+0

感謝您解決我的困惑。我的查詢是按照created_at日期排序的,對於一堆記錄來說這是相同的(下到第二個)。 pg轉儲和恢復以不同的順序顯示這些記錄。將查詢更改爲通過created_at進行排序,然後通過id來證明轉儲和恢復的工作方式與他們應該的方式一致。 – dankohn

相關問題