私はBLOBストレージにXMLファイルを格納していますが、それらを更新する(および/またはそれらにいくつかの要素を追加する)最も効率的な方法を理解しようとしています。Azure - BLOBストレージ内の既存のxmlファイルを更新する
- 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); } }
:WebRoleでは、私はこれを思い付きました。
- 帯域幅。 (コードがデータセンターで実行されているため、カウントされているかどうかはわかりません)
- メモリ消費量がインスタンス上にあります。
いくつかのものはもちろんのこと:
私のxmlファイルは約150〜200キロバイトです。
私はXDocumentが メモリにファイル全体を読み込み、およびストリーム(たXmlWriterとしたXmlReader)内で作業をする これを解決できるという事実を認識しています。しかし、これはBlobStream を使って作業する必要があると仮定します。これは、トランザクション効率が低下する可能性があります(私は思っています)。
blob.Delete()について、ブロブストレージ にアップロードされたxmlは、その末尾にいくつかの終了タグがないようです。私は と仮定しましたが、これは古いデータとの衝突が原因です。私はここで完全に間違って することができますが、それを解決して使用して(それ以上のトランザクション コストがかかります)それを解決。
私が提供したコードは良い練習ですか、あるいは私が言及したパラメータを考慮してもっと効率的な方法が存在しますか?
文書は頻繁に変更されます。実際は非常に頻繁に。潜在的にそれらは1分と言い換えて何度も変更することができます。 –
パフォーマンスを向上させる方法についてのご意見はありますか? –