2009-11-26 53 views
1

對不起,因爲這個問題是相似的(但不相同!)給其他人。遠程生成代理鍵

無論如何,我需要能夠在多個位置生成代理鍵,以便以後同步。我正在考慮使用GUID,但是這些鍵可能必須出現在URL的參數中,而GUID將非常複雜和難看。

我正在考慮一個允許我使用整數的方案,在數據庫中提供更好的性能,但顯然我不能簡單地使用自動編號。這個想法是使用一個有兩個含義的密鑰 - 我相信它被稱爲高 - 低策略。密鑰由來源(產生的地方,通常是本商業案例中的兩個地點中的一個)和自動遞增值組成。例如:

1-000000567, 1-000000568, 1-000000569, 1-000000570, ...

而對於另一個來源:

2-000000567, 2- 000000567, ...

這也意味着我可以將它們作爲整數存儲在數據庫中(即「2-000000567」將成爲整數「2000000567」)。

任何人都可以看到這個問題嗎?如索引碎片可能會發生?或者甚至可能是更好的方式?

只是爲了確認,這個鍵沒有商業意義,用戶永遠不會看到它(除了在URL的參數中),也不會使用它。

我期待着您的意見和欣賞你的時間,太感謝了:)

回答

1

這說明你提到的希洛算法:What's the Hi/Lo algorithm?

這是常用的解決方案,「斷開」的問題比如你的。例如,如果您使用的是Hibernate/nHibernate,它是推薦的主鍵選項之一。

+0

感謝您的迴應:) – 2009-11-27 19:12:11