30 Nisan 2014 Çarşamba

Flat File mi? Sql Server mi?

 Büyük datalar ile çalışıyorsanız ve çok fazla temp datanız varsa bir süre sonra sunucunun işlemcisini çok fazla meşgul etmeye başlar ve uygulamanızın çeşitli noktalarını aksatabilecek IO exceptionları alırsınız.

 Sql Server her ne kadar Windows un bir parçası gibi çalışıyor olsa da ne kadar iyi konfigure ederseniz edin şayet bulk insert işlemleri yoğun bir projede çalışıyorsanız, Sql Server external bir uygulama gibi algılanmadığı için windows tarafından herhangi bir işlem kısıtlaması getirilmeden sistem kaynaklarını sonuna kadar zorlayacaktır. Geçmişte bir projede buna benzer bir problem yaşamış ve çözüm üretmemiz istenmişti.

 NoSql çözümleri üzerinde araştırmalara başladık. Projeye entegrasyon zaman maliyetinin diğer seçeneklere göre oldukca düşük olması ve olası bug fixing aksiyonlarının daha kısa zamanda neticelenmesi gibi etkenlerden dolayı diğer seçenekleri eleyip flat file db üzerinde çalışmalara başladım. Yaklaşık 800.000 satırlık bir data üzerinde yaptığım performans analizlerinin sonuçları oldukça etkileyiciydi. Test sonuçlarında Sql Server e kıyasla %70  ile %90  arası bir performans artışı olmuştu, ve bu sonuçlar da uygulamanın çiçek gibi olacağı anlamına geliyordu (:

 Ancak ek bilgi olarak şunu da belirteyim. Eğer bulk insert sırasında performans ihtiyacınız read işleminden daha fazla ise dataları byte formatında kaydedin. Bu işlem byte i tekrar text datasına parse ederken kullanacağınız zamanı başka işlemlerde kullanabilirmeniz anlamına gelir. Ama her şekilde byte de kaydetseniz text formatında da kaydetseniz, write yada read olayının birinde parse edilecek o datalar (:  Onun için hangi bölümde manevra alanınız daha fazla bunu tespit edin.