Çok ilginç bir soru! @Brian Reischl yanıtını genişletme (ve bir sürü :) bu yüzden bana sabırlı olmanızı rica ederiz sesli düşünerek edilir)
Varsayımları:
- Kişisel varlıklar bazı şekil veya form seri hale getirilebilir. XML formatında ham veri alacağınızı varsayardım.
- Tüm varlık okumasını yapan ayrı bir çalışan rolünüz var.
- Değiştirilmiş öğeler yazmak için kaç tane işçi rolüne ihtiyaç duyulur biliyorsunuz.Tartışma uğruna, bahsettiğin gibi 20 olduğunu varsayalım.
Olası Çözüm:
Önce 20 damla kapları yaratacaktır. Onlara konteyner-00, konteyner-01, ... konteyner-19 adını verelim. Bir seferde 1000 -
Sonra varlıkları okumaya başlayın. XML formatındaki ham verileri masa deposundan çıkardığınız için, bir XML dosyası oluşturursunuz ve bu 1000 varlığı konteyner-00'da saklarsınız. Sonraki varlıklar kümesini getirip konteyner-01'de XML biçiminde kaydedip, 19'a kadar kazandığınız zamana kadar. Sonra bir sonraki varlıklar konteyner-00'a gider. Bu şekilde, varlıklarınızı tüm 20 konteynere eşit olarak dağıtıyorsunuz. Bütün varlıklar yazılır sonra
, bu varlıkları üzerinde işlem yapmak üzere işçi rol resmin içine gelirdi. Biz, Windows Azure örnekleri sıralı olarak sıralanır biliyoruz olduğundan, vb ... WorkerRole_IN_0, WorkerRole_IN_1 gibi örnek adlarını almak ve.
Yapacağınız şey, örnek adını almak, "0", "1" sayısını almaktır. Buna bağlı olarak, hangi işçi bloğu örneğinin hangi blob kutusundan okunacağını belirlersiniz ... WorkerRole_IN_0, dosyaları okunacak container-00, WorkerRole_IN_1, konteyner-01'deki dosyaları vb. okuyacaktır.
Şimdi, bu XML dosyasından varlıkları oluşturmak, XML dosyasını okumak bu varlıkları güncelleme ve masa depoya geri kazandıracak bireysel işçi rol örneği. Bu işlem yapıldıktan sonra, XML dosyasını sildiniz ve o kapsayıcıdaki bir sonraki dosyaya geçersiniz. Tüm dosyalar okunduktan ve işlendikten sonra, kabı silebilirsiniz.
Daha önce de söylediğim gibi, bu türde bir çözüm "sesli düşünerek" bir çok şey var ve bazı şeyler "okuyucu" işçi rolü aşağı ve diğer şeyler gittiğinde ne olur gibi düşünülmelidir.
FWIW, sadece şimdi ben hiç asenkronisi ile bir işçinin üzerinde bir iş parçacığı kullanarak bir SQL veritabanına 5.35M masa varlıkları çıkarılan. 75 dakika sürdü ve bence SQL bu durumda darboğazdı. –