我的同事和我當前正在爲產品實現撤銷/重做功能。我們使用命令模式並在表'ProductHistory'中保存每個命令(例如,創建組件'myFancyComponent')作爲TableStorageEntry
。本表中的PartitionKey
是唯一的產品名稱,RowKey
是一個唯一的標識符。從Azure表中刪除數百個實體存儲
問題是如果產品被刪除,它也應該刪除表存儲中的整個歷史記錄。使用批量刪除會變得非常複雜,因爲有幾個限制: 100個實體或最大4 MB(無論是更小的)。這個問題有什麼最佳實踐嗎?或者是唯一的解決方案來查詢所有條目並檢查條目的大小,並批量刪除正確數量的條目?
我也發現這個相似的question,並考慮爲每個產品創建一個表。它似乎有這種做法的一些優點:
- 選擇應該會更快,因爲只有一個表將被查詢
- 刪除很容易,只需要刪除整個表
只有缺點我發現(在「Windows Azure的表」 - 白皮書):
- 需要注意的是,當一個表被刪除,同一個表名不能被重新創建至少30秒,而表被垃圾收集。
如果我創建幾百個表,是否還有其他(性能)問題?
你能詳細說明解決30秒限制的第二種方法嗎?您是否建議創建產品,但不建議使用表格,並在稍後刪除舊錶格時創建表格? – Robar 2012-03-28 11:47:59
實現規模的努力取決於停止「實時」操作。排隊創建新產品的請求,並在完成後直接向用戶發送消息。是的,我們習慣於即時滿足,但這種方法更具可擴展性,並且還可以解決您的30秒等待時間限制。 :) – BrentDaCodeMonkey 2012-03-28 17:05:58