Veritabanı Asenkron Sorgu
-
Şöyle bir şey yapmak istiyorum. Programlama dillerinden bağımsız olarak (Veritabanı dillerindne bahsetmiyorum) asenkron bir işlem yapmak istiyorum veya Veritabanı kendisi asenkron olarak bunu çalıştırıyor mu ?
Şöyle ki
Select * from x union all select * from y union all select * z
Şeklinde x y z select sorgularını asenkron olarak çalıştırıp en son hepsi cevap verdiğinde bunları birleştirip basmak istiyorum. Bu mümkün müdür?
Şuan kullandığım db mysql.
-
mesajları mq'a yazdırıp sonra oradan çekebilirsin
-
sandman bunu yazdı
mesajları mq'a yazdırıp sonra oradan çekebilirsin
MQ dediğiniz nedir hocam ?
-
msmq (microsoft)
rabbitmq (linux)
-
benim bildigim database tek bir file'da tutuluyor.bu yuzden asenkron calistirsan bile bir islem bitmeden diger islem baslayamayacak database file'i locked durumda oldugu icin. yaniliyorsam duzeltin.
-
Demek istediğini yanliş anamadı isem sorgunun db tarafinda farkli thread 'ler ile gelip sonucun unionlanip sana donmesinden bahsediyorsan:
Database'e gore değişir. Orneğin oracle 'da bunun ile ilgili bir özellik oldugunu biliyorum parallel query idi yanliş hatirlamiyorsam.
Eğer soylediğin ben tetikliyim sonuc oluştugunda o bir call back fonksionu, event gibi bir sey oluştursun ise o konuda yazilim dili üzerinde farkliliklar vardir.
C# için boyle bir fonksion yazmıştim. yeni bir thread oluşturup sorguyu derliyip işlem bittiğinde bir event tetikliyor. bu sayede ben sonucu kontrol edip recursive olarak fonksiyonu cağirirken arka planda kendi işlemlerimi tamamlayip o gelen resulttaki kayitlara sms vs gonderiyordum.
-
Böyle bir şey mümkünse çok işime yarar.
Yani 3 tane union sorguyu paralel olarak çalıştırıp sonunda table donen bir sp örneği olan varsa elinde varya o elleri öperim agalar.
Noy: MsSql server kullanıyorum
-
@rakkoc , abi dediğin gibi tam da Threadler ile Multitasking gibi düşünebilirsin .Fakat her programlama dili Multi threading desteklemiyor. Ben direkt olarak bunu VT de çözmek istedim .
Şu rabbitmq ya bakayım.
-
db ile bunu yapacağın vakitte paralel programlayarak 2 3 kere baştan yazarsın.
yok illa öyle yapacam diyorsanşurda bir örnek var.
http://rusanu.com/2009/08/05/asynchronous-procedure-execution/