2012-09-29 67 views
2

Azure表存儲實施的唯一主鍵/唯一性驗證是分區鍵+行鍵。如果我想要其他列是唯一的,我需要在應用程序層檢查這個條件。我們如何驗證Azure表存儲列的唯一性?

if(service.GetEmailAddress(emailAddress) == null) { 
    // email address is not yet registered by a user 
    // persist user data to the database 
} 
else 
{ 
    // display an error message 
} 

我很好奇什麼是如果有正試圖在同一列的值保存到同一個表的併發用戶的X個會發生什麼。確保在沒有UNIQUE約束的特定列下面輸入重複值的安全方法是什麼?

回答

2

就我所見,Azure Table Storage不是爲此目的而設計的。正如他們所說Azure Table中存儲的目標是:

存儲數據的高效檢索和持久性

所以因爲我覺得這可能是不是你正在尋找的解決方案,我想你應該評估移動數據Azure SQL的可能性。因爲在Azure表存儲(或任何其他NoSQL實現)中,COLUMN的概念沒有多大價值,因爲您可以將不同類型的實體保存在同一個表中。

進一步閱讀link1,link2

+1

嗨Geethanga,我在Azure市場上推出了一個可擴展的數據庫解決方案。使用SQL Azure本身並不是一個好主意,因爲當時你被限制在150GB以下,並且有一點我需要考慮水平分區。最近我一直在玩SQL Azure Federation,但是我不能在那裏創建獨特的約束。每個唯一索引必須包含聯合列。 – Mark13426

+0

在你的情況下,這是真的。數據庫的大小真的讓你陷入困境。但正如我之前說的,我認爲在列視角下查看錶存儲並不好。因爲你在同一個表中有不同類型的實體。這讓您只有一個解決方案可以在業務層中處理此問題。我認爲那是你應該前往的地方。 – Geethanga