Çözüldü Binlerce çizgi grafiği verisi eklemek performansı etkiler mi?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Mucosoft

Megapat
Katılım
5 Mart 2014
Mesajlar
5.569
Makaleler
12
Çözümler
41
Öncelikle grafik sistemini veritabanından çektiğimi belirteyim fakat önbellek sistemi kullandığım için bir kez çekiyor, sonrasında önbelleği kullanıyor.

100, 1.000 veya daha fazla veriyi çizgi grafiğinde göstermek sunucu performansını veya kullanıcının cihazını etkiler mi?
 
Çözüm
100'e yakın veride akıcı çalışıyor. Sadece veritabanından çekerken gecikme oluyor. Önbellek anında yüklüyor.

MySQL kullanıyorum. Çizgi grafiğini bilirsin, bildiğimiz grafik ama çizgi hali. Bunun içinde bol bol veri var. Her veri aynı tabloda ama ayrı satırda. Veriyi SQL ile tek sorguda çekiyorum. Yani topluca alıyorum. Tüm veriyi bir anda çekiyorum. Zaten önbellek var, bir kez çekecek. Altyapı çok güçlü olmadığı için kullanıcı sayısı artarsa SQL işlemleri yavaşlar, zaten önbellek bunun için var.

100 olarak test yaptım, hızlı. Peki daha büyük olursa etkiler miydi?

Ben cizgi grafik dedigin zaman "line graph" anliyorum ama muhtemelen o degil kastettigin sey.

Pagination yapmayi deneyebilirsin, tam anlamadigim icin "cizgi grafigi" ve bunu nasil kullandigini cevaplayamiyorum.

Ornegin 1000 tane element cekmen gerekiyorsa bunu 10 batch icinde 100'er 100'er cekebilirsin, frontend ilk gelen 100 ile render eder, boylece kullaniciya hemen bir seyler sunarsin, sonrasinda arka planda cekmeye devam edersin.

"Chunked" transfer protokolunu de kullanabilirsin, datayi tek seferde donmektense stream edersin.


Pek cok yaklasim var bu problemi cozen.
Cizgi grafigi nedir? Nasil bir data structure da tutuyorsun?
DB olarak ne kullaniyorsun?
Indexlenmis sekilde mi duruyor tablo da full table scan mi yapiyor?
Tum veriyi bir anda mi cekiyorsun yoksa buffer/pagination var mi?
Ayni anda kac concurrent kullanici icin bu islem yapiliyor?

Ustteki sorularin cevabini bilmeden kesin bir sey soylenemez. Ama dogru muhendislikle kurgulanmissa sorun olmaz.

Frontend performansini kendin olcumleyebilirsin, var JS benchmarking yapmana olanak saglayan toollar.
 
Cizgi grafigi nedir? Nasil bir data structure da tutuyorsun?
DB olarak ne kullaniyorsun?
Indexlenmis sekilde mi duruyor tablo da full table scan mi yapiyor?
Tum veriyi bir anda mi cekiyorsun yoksa buffer/pagination var mi?
Ayni anda kac concurrent kullanici icin bu islem yapiliyor?

Ustteki sorularin cevabini bilmeden kesin bir sey soylenemez. Ama dogru muhendislikle kurgulanmissa sorun olmaz.

Frontend performansini kendin olcumleyebilirsin, var JS benchmarking yapmana olanak saglayan toollar.
100'e yakın veride akıcı çalışıyor. Sadece veritabanından çekerken gecikme oluyor. Önbellek anında yüklüyor.

MySQL kullanıyorum. Çizgi grafiğini bilirsin, bildiğimiz grafik ama çizgi hali. Bunun içinde bol bol veri var. Her veri aynı tabloda ama ayrı satırda. Veriyi SQL ile tek sorguda çekiyorum. Yani topluca alıyorum. Tüm veriyi bir anda çekiyorum. Zaten önbellek var, bir kez çekecek. Altyapı çok güçlü olmadığı için kullanıcı sayısı artarsa SQL işlemleri yavaşlar, zaten önbellek bunun için var.

100 olarak test yaptım, hızlı. Peki daha büyük olursa etkiler miydi?
 
100'e yakın veride akıcı çalışıyor. Sadece veritabanından çekerken gecikme oluyor. Önbellek anında yüklüyor.

MySQL kullanıyorum. Çizgi grafiğini bilirsin, bildiğimiz grafik ama çizgi hali. Bunun içinde bol bol veri var. Her veri aynı tabloda ama ayrı satırda. Veriyi SQL ile tek sorguda çekiyorum. Yani topluca alıyorum. Tüm veriyi bir anda çekiyorum. Zaten önbellek var, bir kez çekecek. Altyapı çok güçlü olmadığı için kullanıcı sayısı artarsa SQL işlemleri yavaşlar, zaten önbellek bunun için var.

100 olarak test yaptım, hızlı. Peki daha büyük olursa etkiler miydi?

Ben cizgi grafik dedigin zaman "line graph" anliyorum ama muhtemelen o degil kastettigin sey.

Pagination yapmayi deneyebilirsin, tam anlamadigim icin "cizgi grafigi" ve bunu nasil kullandigini cevaplayamiyorum.

Ornegin 1000 tane element cekmen gerekiyorsa bunu 10 batch icinde 100'er 100'er cekebilirsin, frontend ilk gelen 100 ile render eder, boylece kullaniciya hemen bir seyler sunarsin, sonrasinda arka planda cekmeye devam edersin.

"Chunked" transfer protokolunu de kullanabilirsin, datayi tek seferde donmektense stream edersin.


Pek cok yaklasim var bu problemi cozen.
 
Çözüm
Ben cizgi grafik dedigin zaman "line graph" anliyorum ama muhtemelen o degil kastettigin sey.

Pagination yapmayi deneyebilirsin, tam anlamadigim icin "cizgi grafigi" ve bunu nasil kullandigini cevaplayamiyorum.

Ornegin 1000 tane element cekmen gerekiyorsa bunu 10 batch icinde 100'er 100'er cekebilirsin, frontend ilk gelen 100 ile render eder, boylece kullaniciya hemen bir seyler sunarsin, sonrasinda arka planda cekmeye devam edersin.

"Chunked" transfer protokolunu de kullanabilirsin, datayi tek seferde donmektense stream edersin.


Pek cok yaklasim var bu problemi cozen.
Doğru anlamışsın. Zaten Google'a yazınca da görsellerde çıkıyor.
@bitwise, bu arada bu dediğin sistemi AJAX ile yapmak mantıklı mı yoksa öyle mi yapılıyor? Yani parça parça yükleme sistemi.
 
Son düzenleme:
Doğru anlamışsın. Zaten Google'a yazınca da görsellerde çıkıyor.
@bitwise, bu arada bu dediğin sistemi AJAX ile yapmak mantıklı mı yoksa öyle mi yapılıyor? Yani parça parça yükleme sistemi.

AJAX ile yapilabilir evet, backend ne kullaniyorsun bilmiyorum ama her framework destekler bu dedigimi.
"Pagination" keywordu ile implementasyonunu arastirabilirsin.

/get-points?page=0&size=100 seklinde istek atarsin, ilk 100 noktayi cekersin ve render edersin.
Sonrasinda /get-points/page=1&size=100 seklinde 2. chunk'i alirsin. Bu sekilde kabaca.

MySQL bu is icin aslinda uygun bir DB degil. Time-series icin optimize bir DB kullanabilirsin eger ciddi projeyse.

Snowflake gibi.
 

Yeni konular

Geri
Yukarı