Tôi có tệp XML được lưu trữ trong bộ nhớ BLOB và tôi đang cố gắng tìm ra cách hiệu quả nhất để cập nhật chúng (và/hoặc thêm một số yếu tố cho chúng). Trong một WebRole, tôi đến với điều này:Azure - Cập nhật tệp xml hiện có trong bộ nhớ BLOB
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);
}
}
tôi đang xem xét các thông số này xem xét tính hiệu quả:
- BLOB Giao dịch.
- Băng thông. (Không chắc liệu nó có được tính hay không, vì mã chạy trong trung tâm dữ liệu)
- Bộ nhớ tiêu thụ trên ví dụ.
Một số điều cần đề cập đến:
file xml của tôi là khoảng 150-200 KB.
Tôi nhận thức được thực tế là XDocument tải toàn bộ tập tin vào bộ nhớ , và làm việc tại suối (XmlWriter và XmlReader) có thể giải quyết này. Nhưng tôi Giả sử điều này sẽ yêu cầu làm việc với BlobStream có thể dẫn đến ít giao dịch hiệu quả hơn (tôi nghĩ).
Giới thiệu blob.Delete(), không có nó, xml đã tải lên trong bộ nhớ blob dường như thiếu một số thẻ đóng ở cuối thẻ. Tôi giả định điều này là do va chạm với dữ liệu cũ. Tôi có thể là hoàn toàn sai ở đây, nhưng bằng cách sử dụng xóa đã giải quyết nó (chi phí một giao dịch nhiều hơn mặc dù).
Mã tôi cung cấp là phương pháp hay hoặc có thể là cách hiệu quả hơn khi xem xét các thông số tôi đã đề cập?
Tài liệu thường xuyên thay đổi. Trên thực tế rất thường xuyên. Có khả năng chúng có thể thay đổi nhiều lần, giả sử, một phút. –
Bất kỳ ý tưởng nào về cách cải thiện hiệu suất? –