2013-09-26 59 views
0

我們在所有項目中都使用Azure Blob存儲。通過項目的生命週期,Azure中文件的命名約定會發生變化:有時候我們想重命名容器,刪除額外的文件夾和其他清理操作。 但Azure不容易重命名的東西,我們必須做拷貝刪除。Azure Blob存儲的自動遷移。這是否存在?

此外,我們可以在開發過程中在本地更改命名約定。但是當我們部署新版本時,我們需要記住在生產存儲上做的確切操作。

同時我們使用Entity Framework遷移:我們更新了數據庫,創建了遷移腳本。然後我們運行「update-database」並更新數據庫。部署腳本自動運行:檢查生產數據庫是否需要更新,如果需要更新。

如果我們可以爲Azure存儲執行相同的遷移優點,那麼最好是:檢查是否已應用所有遷移腳本,爲缺少的腳本執行過程。容器中的某處保留對最新執行的腳本的引用。

這樣的事情是否存在?或者我應該繼續努力並嘗試自己實現某些東西。

回答

2

不,這樣的功能/行爲不存在。請記住EF遷移支持並且是EF本身的一部分,而不是數據庫!所以,當你談論Azure Blob存儲 - 它作爲一項服務不提供這樣的功能,就像SQL Server本身不這樣做。

問題是否存在這樣的庫/代碼 - 沒有沒有。

雖然你正在提出一個非常有趣的問題!

我個人不是「遷徙」的忠實粉絲。您可以在開發生命週期的早期階段執行此操作。但是一旦你擊中GA/Production,你必須非常小心你在做什麼。即使EF遷移對於小型數據庫大小也可能很好,但是您是否願意在具有包含數百萬條記錄生產數據的表的數據庫上運行遷移?與blob一樣。如果你有100個或1000個斑點可能沒問題。 2M斑點怎麼樣?你是否真的願意將一些代碼通過2M實體並對其進行一些操作,並將這些代碼作爲構建/部署過程的一部分來運行?我不會。

+0

是的,我知道SQL Server不支持遷移。 EF提供腳本和版本檢查。我希望找到可以幫助解決這個問題的圖書館。而隨着產量的增加,我寧願編寫一個腳本來爲2M blob進行自動遷移(並且測試一下它),而不是手動完成。但是,作爲部署過程的一部分,不能真正自動運行它。 – trailmax

+0

我寧願專注於版本控制策略,而不是遷移2M blob(可能是2T,那麼是什麼?)。只是想推測一下 - 可能是一個元數據,如「版本」,將有助於我的圖書館確定具體的BLOB的具體命名約定。更重要的是,我會將blob絕對URI保存在相關的存儲中以便於使用,而不是依靠命名約定來找出blob的實際名稱/位置。更不用說Azure上的大型系統通常與多個存儲帳戶一起工作,這將極大地增加腳本的複雜性。 – astaykov

+1

這是關於版本控制的一個有趣的觀點。我們已經嘗試在DB中保留網站的blob,結果對我們的目的不是那麼好。但我明白你的觀點,不需要浪費時間在這樣的遷移庫中 - 它可能不會被使用。 – trailmax