我正在權衡可用於多主複製的整數主鍵的選項。 (我使用整數密鑰而不是GUID銷售)用於複製的整數主鍵
最好的我可以拿出最重要的數據先服務器號碼最後: 例如。在服務器2 = 102 上服務器發票1 1 = 101 發票1其中非serverno部分(invoiceno)來自一個分貝數發生器
算法:GEN_ID(INVOICENO_GEN,1)* 100 + serverno 並可以通過查看數值和數學得到服務器編號。
這爲99個服務器留下空間,但仍然很短並且可讀,不會發生衝突。使用該方案和普通整數大小列將使最大行數(21 474 836)或者如果使用bigint數十億。
例如發票表鍵是這樣的:
Server 1
101
201
301
401
Server 2
102
202
302
402
所以我的問題是:任何批評或缺陷我忽略了?
數據庫是Firebird。
我不想爲此引入組合鍵。首先,組合鍵是PITA需要處理的,並且他並不認爲他真的有興趣根據附加信息來關聯這些數據。 –
我們大部分的代碼和我們使用的庫都是針對單一主鍵進行優化的。因此,從數據庫的角度來看,複合主鍵是「正確的」答案,但從發展的角度來看並不好。 – AngelBlaZe
只是爲了澄清我們將有一個serverno列以及查詢目的。我們沒有invoiceno(沒有serverno)列,因爲這是我們想要在發票,查找等上打印的東西。 – AngelBlaZe