我有存儲在BLOB存儲中的XML文件,我試圖弄清楚什麼是更新它們(和/或向它們添加一些元素)的最有效方式。在WebRole,我想出了這個:Azure - 在BLOB存儲中更新現有的xml文件
using (MemoryStream ms = new MemoryStream())
{
var blob = container.GetBlobReference("file.xml");
blob.DownloadToStream(msOriginal);
XDocument xDoc= XDocument.Load(ms);
// Do some updates/inserts using LINQ to XML.
blob.Delete();//Details about this later on.
using(MemoryStream msNew = new MemoryStream())
{
xDoc.Save(msNew);
msNew.Seek(0,SeekOrigin.Begin);
blob.UploadFromStream(msNew);
}
}
我在看這些參數考慮效率:
- BLOB 交易。
- 帶寬。 (不知道它是否被計算,因爲代碼在數據中心運行)
- 內存消耗在實例上。
有些事情要提:
我的XML文件是150-200左右KB。
我知道XDocument加載整個文件到 內存和工作在流(XmlWriter和XmlReader)可以解決這個問題。但我假設這將需要與BlobStream 合作,這可能導致事務處理方式效率較低(我認爲)。
關於blob.Delete(),沒有它,blob存儲中上傳的xml 似乎在其結尾處缺少一些結束標記。我假設 這是由與舊數據的碰撞造成的。我在這裏可能是 完全錯誤,但使用刪除解決它(雖然成本一個 更多的交易)。
我提供的代碼是一種很好的做法,或者考慮到我提到的參數可能存在更有效的方法?
這些文件經常改變。其實很經常。可能他們可能會改變很多次,比如說,一分鐘。 –
關於如何提高性能的任何想法? –