lostyazilim
tr.link

SQL Func veya C++ Call Func Bunun Cözüm yolu nedir ?

5 Mesajlar 1.252 Okunma
acebozum
tr.link

THEX3T4R THEX3T4R @Back-End Developer. Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek @Back-End Developer.
  • Konum Diğer
  • Ad Soyad R** E**
  • Mesajlar 693
  • Beğeniler 24 / 200
  • Ticaret 1, (%100)
Merhabalar Dostlar , :)

Bu aralar geliştirdiğim bir uygulama mevcut bunun için bir yerde takıldım yardımcı olur iseniz sevinirim. :)

C++ ile geliştirdiğim uygulamada bir bölümde son 1 dakika içinde online olanlar gibi bir bölüm mevcut.
Şuanda SQL bir tablo online diye hiç bir func olmayan bir tabloda standart int sayı olarak cekiyor ama ben bu tablodaki int sayıya nasıl olurda son 1 dakika içinde giriş yapan sayısını verebilirimki her veri cekildiğinde kac kişi olduğu yazılsın.

Şöyle bir Func yazdım ve bunun Execute yaptığımda bu sayıyı vermekte



ama işte mevzu şu ki ben bu veriyi sürekli nasıl alabilirim bu uygulamada bazı secenekler mevcut
C++ ile Bu func Call ederek kac tane tablo var sayısını yazdırma (nasıl Call edileceği konusunda bilgim yok C++'da)
Yada bu hiç bir özelliği olmayan Online adındaki tabloya nasıl 1 dakikada bir oto kendini güncellemesini ve bu veriyi almasını nasıl sağlaya bilirim.

Kısacası Uygulamanın bir bölümünde son 1 dakika içerisinde giriş yapan sayısını yazdırmak istiyorum nasıl yapabilirim yazılımsal olarak yardımcı olur iseniz sevinirim. :)
nGinY

kişi bu mesajı beğendi.

elektronikssl
webimgo

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
İki şekilde olabilir.

1 - Client bunu dakikda bir datayı sorgular
- C++ -> https://github.com/Bosma/Scheduler gibi bir kütüphane ile scheduler edip, dakikada bir client üzerinde db'ye ilgili fonksiyon/ sorguyu çalıştırıp veriyi getirir.
2 - Data, client'a push edilir.
- Database (RDBMS) üzerinde scheduler job'lar oluşturulabilir. Dakikada bir çalıştırılacak şekilde ayarlanır ve içerisinden ilgili uygulama tetiklenebilir.

1. seçenek daha rahat görünüyor.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

THEX3T4R THEX3T4R @Back-End Developer. Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek @Back-End Developer.
  • Konum Diğer
  • Ad Soyad R** E**
  • Mesajlar 693
  • Beğeniler 24 / 200
  • Ticaret 1, (%100)
YazılımMimarı Peki ya SQL Job ile func her 30 saniyede bir çağırıp o online tablosuna yazdırmam ne kadar mantıklı oluru varmıdır ?
ek olarak 15-20 sn gibi bir sürede çağırılsa bu funcki on binlerce kayıt içinden ayıklama yapacak sistemi ne kadar yorar ?
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)

THEX3T4R adlı üyeden alıntı

YazılımMimarı Peki ya SQL Job ile func her 30 saniyede bir çağırıp o online tablosuna yazdırmam ne kadar mantıklı oluru varmıdır ?
ek olarak 15-20 sn gibi bir sürede çağırılsa bu funcki on binlerce kayıt içinden ayıklama yapacak sistemi ne kadar yorar ?


Tablodaki kayıt sayısı ne kadar? RDBMS nedir(SQL Server, Oracle, MySQL)? + SQL Sorgunu paylaşır mısın?

--

Temel olarak kayıt sayısı milyar seviyesinde değilse, olsa dahi atılan sorgu çok komplekse değilse, ve tablo yapısıda devasa(sutun sayısı) değilse inan hiç bir sıkıntı yaratmaz ;)
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
wmaraci

THEX3T4R THEX3T4R @Back-End Developer. Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek @Back-End Developer.
  • Konum Diğer
  • Ad Soyad R** E**
  • Mesajlar 693
  • Beğeniler 24 / 200
  • Ticaret 1, (%100)
Şu yöntem ile cözüme ulaştım arkadaşlar :)

UPDATE Players_Online SET OnlinePlayers = (select count(uc.CustomerID) from UsersChars uc JOIN UserData ud ON ud.CustomerID = uc.CustomerID WHERE DATEDIFF(MINUTE, uc.LastUpdateDate, GETDATE()) <= 1) WHERE id = 1;
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al