Senaryo: Veri, zaman damgalarıyla birlikte veritabanına yazılır ve yazılır. Ham verileri, zaman damgasına göre alınan sıraya göre işlemek ve veritabanına, farklı tabloya geri yazıp, zaman damgasını temel alarak siparişi sürdürmem gerekiyor.Paralel veri işlemede kullanılacak sıra türü - C# - .NET 4
Aşağıdaki tasarıma geldim: Biri veritabanından ham veri depolamak için, diğeri DB'ye yazılmadan önce işlenmiş verileri depolamak için iki tane kuyruk oluşturuldu. İki iş parçacığım var; biri İlk sırasına göre okuyor ve Sonuç kuyruğundan başka bir okuma yapıyorum. Aralarında ilk sıradaki verileri işlemek ve Sonuç kuyruğuna yazmak için birden fazla iş parçacığı üretiyorum.
SortedList (el ile kilitleme) ve BlockingCollection ile denemeler yaptım. Paralel olarak işlemek için iki yaklaşım kullandım: Parallel.For (ForEach) ve TaskFactory.Task.StartNew. Her bir birim veri, birkaç faktöre bağlı olarak işlemek için değişken bir süre alabilir. Bir iş parçacığı yine de ilk veri noktasını işleyebilirken, diğer iş parçacıkları her biri üç veya dört veri noktasıyla yapılır, zaman damgası sırasını karıştırır.
Son zamanlarda OrderingPartitioner hakkında bilgi edindim ve sorunun çözüleceğini düşündüm, ancak MSDNs örneğini izledikten sonra, alttaki koleksiyonu da ayırmadığını görebiliyorum. Karmaşık veri türleri koleksiyonumu sipariş etmek için özel bölümleyici kullanmam gerekebilir mi? veya problemi çözmenin daha iyi bir yolu olabilir mi?
Benzer sorunu tartışan makalelere yönelik herhangi bir öneri ve/veya bağlantı çok takdir edilmektedir.
Bazı kodları ekleyebilir misiniz? – flesh