我有一個會被多個客戶端(本地安裝)中使用的數據庫,該計劃是然後將數據複製到Azure中,讓全球報告等聚集索引和分佈式數據庫
該數據庫將使用的GUID因爲它是主鍵。
我應該如何使用表上的聚集索引,或者在將數據添加到Azure時這些無關緊要?我甚至真的需要一個聚集索引嗎? Azure將擁有數據庫的單一副本,如果這有所幫助,則所有客戶端數據都將包含在該數據庫中。
謝謝大家。
我有一個會被多個客戶端(本地安裝)中使用的數據庫,該計劃是然後將數據複製到Azure中,讓全球報告等聚集索引和分佈式數據庫
該數據庫將使用的GUID因爲它是主鍵。
我應該如何使用表上的聚集索引,或者在將數據添加到Azure時這些無關緊要?我甚至真的需要一個聚集索引嗎? Azure將擁有數據庫的單一副本,如果這有所幫助,則所有客戶端數據都將包含在該數據庫中。
謝謝大家。
雖然您可以在SQL Server中創建(並且擁有數據)一個沒有聚集索引的表,但這在Windows Azure SQL數據庫(WASD/SQL Azure)中是不允許的。雖然可以將WASD中沒有聚簇索引的表定義爲定義,但是不允許針對這樣的表執行DML語句,即無法在沒有聚簇索引的情況下針對WASD中的表執行INSTERT/UPDATE/DELETE語句。因此,如果有數據傳到雲端,您應該有一個聚集索引。有關更多信息,請查看Guildelines中的Clustered Index Requirement和Windows Azure SQL數據庫的限制。
這裏的一些建議是不正確的。
在Azure中,聚簇索引用於其後端複製。參考:http://blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx
我認爲你最好的選擇是使用一個標識元素作爲聚集索引的列,以及你的guid列上的非聚集索引。我遇到了這個完全相同的問題,經過相當多的研究,這是我最終提出的解決方案。將它們放在一起會有點痛苦,特別是如果您已經在Azure上製作了數據,但似乎解決了所有問題。
我覺得使用NEWSEQUENTIALID最簡單,但這不是Azure上的選項。
感謝迄今爲止的答案。有沒有人知道如果聚集索引中發生碰撞會發生什麼?假設我使用int Identity列作爲索引,數據上傳到Azure時的衝突幾乎得到保證。 – Jay
只要聚集索引不是主要的,那麼你不應該有任何問題。 – knightpfhor
優秀。謝謝! – Jay