2013-12-19 78 views
2

我注意到Windows Azure診斷使用UTC ticks主鍵作爲一種使時間範圍訪問條目變得容易的方法。我想爲我的桌子實施一個類似的系統。可能會在服務器端添加分區密鑰Azure表存儲

然而,一個主要的問題是,將要進行上傳的系統不一定將他們的時間同步到毫秒(更不用說ping時間差異),所以在本地設置分區密鑰然後上傳並不能很好地工作(我有各種競賽條件問題)。理想情況下,我希望保證在任何時候創建表條目時,其分區鍵肯定會大於或等於表中已有的任何分區鍵(因爲這是時間的工作原理)。

我能想到的確保這種保證的唯一方法是讓「時間戳」分區鍵集服務器端。有沒有辦法讓這種情況發生,比如通過服務器端腳本?

注意:我意識到時間戳記已添加用於進行輸入時,但表格不由此時間戳記索引。

+2

這種事情在Azure Table Storage中不太可行 - 沒有任何東西像服務器端腳本。但是,「主鍵」的概念也不適用。您可能必須查看節點之間的某種程度的時間同步 - 這在分佈式系統中很常見。 –

+0

對不起,主鍵是一個錯字 - 我的意思是分區鍵。 –

回答

2

我建議使用twitter/snowflake解決方案。我有非常相似的要求,這種方法對我來說非常合適。我使用Flake ID Generator。它是基於twitter/snowflake的.net實現。

生成器可以獨立部署到不同的Azure實例(或作爲獨立服務工作) - 我在每個Azure服務實例上獨立生成ids。生成的64位ID可直接排序並始終唯一(即使同時來自不同實例)。您還可以訪問其源代碼,以便您還可以根據需要添加自定義設置。

我希望這會有所幫助。

+0

正是我在找的! –

相關問題