6 Comments

  1. Ideea este intr-adevar interesanta si imi pot imagina citeva scenarii in care sa se dovedeasca utila.

    Sunt insa multe aplicatii in care lantul decizional este extrem de complex si din acest motiv aplicarea acestui algoritm poate conduce la pregatirea unui set de date gresit sau pregatirea unui set de date prea mare sau pregatirea unui set de date prea mic. Toate aceste scenarii inseamna consum inutil de resurse (CPU/disk IO/bandwidth). Daca adaugi si alte elemente de complexitate (validitatea datelor pregatite, expirarea datelor pregatite, etc), cred ca din pacate numarul de scenarii in care poate fi aplicata scade destul de mult.

    Optiunea pe care as studia-o eu ar fi posibilitatea executarii acestor operatiuni in paralel, i.e. daca momentul X necesita setul de date A, B, C, D, care dintre aceste sunt independente si pot fi regasite in paralel astfel incit viteza de pregatire a rezultatului sa nu mai fie time(A) + time(B) + time(C) + time(D), ci un max(time(secventa-de-date)…).

  2. Daniel Buca

    Numarul de scenarii este limitat de tipul aplicatiilor dezvoltate si de modul in care sunt dezvoltate.

    Bineinteles ca la o aplicatie unde trebuie sa lucrez cu date real time nu pot aplica o astfel de metoda.
    La majoritatea aplicatiilor web, insa, putem stii ce tipuri de date au o dinamica atat de mare incat sa nu putem implementa un sistem predictiv.

    Sistemul de predictive loading la nivel de aplicatie merge foarte bine in situatiile in care avem citire de date si nu neaparat prelucrari.

    Referitor la sugestia ta: bineinteles ca time(A) + time(B) + time(C) + time(D) > max(time(secventa)), exact asta este predictive loading la nivel de request dar uite ce ziceam eu: lansez B, C, D in background (3 threaduri noi) si eu execut normal A si incep sa lucrez cu el si fac output catre cliebt. In momentul in care am terminat cu A sunt gata si B C si D.
    Altfel ar trebui sa astept sa treaca timpul max(time(secventa)), perioada in care aplicatia nu ar face nimic, ar trebui sa astepte.

    Ce parere ai?

  3. Cred ca diferenta majora dintre cele 2 abordari este momentul aplicarii lor. Propunerea mea se refera la regasirea/pregatirea datelor pentru momentul t, pe cind algoritmul descris de tine se refera la regasirea/pregatirea datelor pentru momentul t + 1 (cel putin asta e intelegerea mea). Daca vrei algoritmul meu se refera la paralelizare, pe cind cel propus de tine se refera la predictie + paralelizare.

    Acum ca aplicabilitate: algoritmul propus de mine se potriveste cu orice scenariu care necesita seturi de date multiple semi-independente (fara nici o alta restrictie). Din cite am inteles eu, algoritmul propus de tine poate fi aplicat in scenarii in care la momentul t se stie ca va exista un pas aditional la t + 1 care este sigur/are o probabilitate mare.

  4. Daniel Buca

    Da, ai inteles corect.
    Acum recunosc ca pot fi subiectiv dar ma gandesc ca avantajul oferit de sistemul predictiv este faptul ca poate invata singur din activitatea userilor.

    In alta ordine de idei: ambele sisteme pot functiona foarte bine, implementate chiar in aceeasi aplicatie, se pot completa unul pe celalalt. Nu crezi?

Leave a Reply