我有保存在Azure Blob存儲中的文件,並且我有一個保存這些文件的URI的數據庫。有沒有任何標準的方法來同步它們?我的意思是,應該沒有辦法刪除文件而不刪除數據庫中的記錄,反之亦然。如何將Azure SQL與Azure BLOB存儲同步?
回答
這樣做沒有開箱即用的方式,所以你需要編寫自己的。我發現這個文件監視器的例子很有用:http://ben.onfabrik.com/posts/monitoring-files-in-azure-blob-storage
沒有工具可以確保數據庫記錄和Azure Blob存儲之間的參照完整性。
作爲一種替代方案,您可以有一個工作人員角色來保持文件與數據庫同步(但您會在這裏拖延)。
另一個有爭議的乾淨方法是隻有一個入口點來添加/刪除blob文件,並處理與該地點的數據庫同步。
我scripni同意,你也可以投票了以下要求:
如果Blob存儲有活動,你可以在一個被插入知道,然後更新數據庫。你也可以有一個工作者角色,或者只是內部部署的cron job,每隔一段時間就會查詢blob存儲並相應地更新SQL。
在Azure平臺上實現事務的一種方法是使用隊列。 在隊列中放置消息,並且只有在消息成功處理後才刪除消息。
這樣,如果有任何操作失敗,您可以嘗試糾正這種情況,下次看到消息時。
我的解決方案是有一個像scripni建議的單入口點,並添加到它像交易方法。
我使用數據庫作爲整個事務的預寫日誌。
1)將數據庫記錄標記爲「shouldBeDeleted」= true。
2)嘗試刪除斑點。 3)如果出現錯誤並且未刪除斑點,則仍然有記錄,並且您知道它們指向的斑點應該被刪除。並且您可以嘗試稍後再次刪除它們,更重要的是,您可以忽略讀取查詢中的記錄,就像使用軟刪除方法時一樣。
4)如果blob被刪除,現在可以刪除記錄。 5)如果失敗,記錄仍被標記爲「shouldBeDeleted」,讓你忽略它們並在以後清理它們。
對我來說,主要好處是我不必爲此目的創建一個工作人員,而且這種更改是即時的,而不是依賴同步週期,當記錄未同步時留下一個窗口。
您可以以幾乎相同的方式實現插入/更新的相同想法。
*有點晚了,但我相信問題仍然存在,其他人也會遇到這個問題。
這與我所做的非常接近。 – 2014-05-30 10:25:31
- 1. Azure DocumentDB和Azure Blob存儲
- 2. CNAME與Azure Blob存儲
- 3. ImageResizer與Azure Blob存儲Azurewebsites
- 4. Azure Blob存儲列表Blob
- 5. Azure blob存儲 - blob策略
- 6. Azure blob存儲SAS
- 7. node.js azure存儲blob
- 8. Azure的Blob存儲
- 9. 如何將Azure Blob文件複製到Azure本地存儲
- 10. 與Azure表存儲的本地同步
- 11. 如何存檔Azure blob存儲內容?
- 12. 存儲圖像 - SQL DB與Azure Blob存儲
- 13. 在Blob存儲在Azure的SQL(不Azure的SQL DW)外部表
- 14. Azure Blob存儲和Azure驅動器
- 15. Azure Blob不存儲PDF
- 16. 在Azure的Blob存儲
- 17. Azure的Blob存儲下載
- 18. Interupting從Azure的Blob存儲
- 19. 上傳到azure blob存儲
- 20. asp.net的Windows Azure Blob存儲
- 21. Azure存儲Blob -com.microsoft.azure.storage.core.Utility錯誤
- 22. Azure blob存儲和安全
- 23. Appassure和Azure Blob存儲
- 24. 流星和Azure Blob存儲
- 25. Azure blob存儲;派生列
- 26. Azure blob存儲和CDN
- 27. BLOB如何存儲在Azure中?
- 28. 如何備份Azure Blob存儲?
- 29. 如何索引Azure中的Blob存儲?
- 30. 如何清潔Azure存儲Blob容器?
創建一個輔助角色並完成單個事務範圍內的所有文件和數據庫操作。 http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx – Lloyd 2012-03-20 14:39:42
謝謝!我認爲這將工作 – 2012-03-20 15:27:45
我有一個類似的問題,這就是我們如何解決它,首先刪除數據庫記錄,然後文件,如果文件不會刪除,然後回滾數據庫事務。小心服務之間的開放連接 – Lloyd 2012-03-20 15:30:22