Archívum - Jan 8, 2022 - Fórum téma
Nagy mennyiségű adat szűrése + lapozgatás?
Próbálom röviden, de így is hosszú lesz :)
Nagy tömegű adatból kell lekérdezést csinálni, lapokra osztva az eredményt.
A gond ott kezdődik, hogy regex alapú szűrést akarok végezni az adatokon.
Postgres esetében ez nem gond, de ha az a vágyam, hogy a program ne legyen driver függő, akkor azt hiszem, az adatbázis szerverek spéci szolgáltatásaira nem számíthatok.
Amíg mindent intézhetek adatbázis oldalon, addig no problem, a megcélzott keretrendszer (flask+sqlachemy) nyújt lapozós szolgáltatást egy paginate nevű függvény formájában.
De mi a bánatot lehet csinálni, ha olyan válogatást kell végezni, amire az adatbázis nem képes? A meglévő 5-6 millió sor betöltése kifekteti a szervert és a klienst is, részben timeout, részben out of memory képében.
Van erre valami megszokott, elfogadott algoritmus, hogy lehessen könnyen, gyorsan lapozgatni a találatok közt és ne bolonduljon meg az oldalszámozás?
Mert az még O.K., hogy az első lapot megjelenítem úgy, hogy addig olvasom a sorokat, amíg be nem jön egy oldalnyi a szűrésre illeszkedő sor.
De az utolsó (tehát nem a 123. oldalra, hanem általánosságban az utolsó) oldalra csak úgy tudnék lépni, ha végigolvasom a teljes táblát, ami iszonyat lassú.
Caching nem igazán jöhet szóba, mert ahhoz is kellene előbb egy teljes olvasás és ugyanott tartok.
De akkor hogy?
■ Nagy tömegű adatból kell lekérdezést csinálni, lapokra osztva az eredményt.
A gond ott kezdődik, hogy regex alapú szűrést akarok végezni az adatokon.
Postgres esetében ez nem gond, de ha az a vágyam, hogy a program ne legyen driver függő, akkor azt hiszem, az adatbázis szerverek spéci szolgáltatásaira nem számíthatok.
Amíg mindent intézhetek adatbázis oldalon, addig no problem, a megcélzott keretrendszer (flask+sqlachemy) nyújt lapozós szolgáltatást egy paginate nevű függvény formájában.
De mi a bánatot lehet csinálni, ha olyan válogatást kell végezni, amire az adatbázis nem képes? A meglévő 5-6 millió sor betöltése kifekteti a szervert és a klienst is, részben timeout, részben out of memory képében.
Van erre valami megszokott, elfogadott algoritmus, hogy lehessen könnyen, gyorsan lapozgatni a találatok közt és ne bolonduljon meg az oldalszámozás?
Mert az még O.K., hogy az első lapot megjelenítem úgy, hogy addig olvasom a sorokat, amíg be nem jön egy oldalnyi a szűrésre illeszkedő sor.
De az utolsó (tehát nem a 123. oldalra, hanem általánosságban az utolsó) oldalra csak úgy tudnék lépni, ha végigolvasom a teljes táblát, ami iszonyat lassú.
Caching nem igazán jöhet szóba, mert ahhoz is kellene előbb egy teljes olvasás és ugyanott tartok.
De akkor hogy?