Moje słowa: "Jeśli ilość jednocześnie czytanych rekordów będzie rozsądna" - 100 k rekordów to daleko poza wszelkim rozsądkiem jeśli chodzi o grida przez internet, szczerze to nawet lokalnie jest to mocne obciążanie silnika bazodanowego ale w to nie wnikam, widocznie jest taka potrzeba :).
Generalnie się z Tobą zgadzam, ale widziałem wymaganie, żeby załadować do grida 1mln rekordów.
Tu mi po prostu szczęka opadła...
Założę się, że nie takie było wymaganie.
Tak ono zostało przedstawione przez leniwych programistów ;-)
User po prostu chce wiedzieć wszystkie dane i w nosie ma czy jest tego 10 czy 10 mln.
A programiście się nie chce oprogramować stronicowania danych, wirtualnego scrolla lub server mode - zwał jak zwał, ale zawsze chodzi o jedno.
O pobieranie i pokazywanie tej paczki danych, która aktualnie user ogląda.
I nie chodzi tu o przyrostowe pobieranie danych z serwera, bo to mija się z celem np. przy naciśnięciu CTRL+END na gridzie.
Domyślnie u siebie ładuję tylko tyle ile widać w gridzie. Jednak mamy nawigację klawiaturą po gridzie i jednym ze skrótów jest Ctrl+End który to skacze na koniec query. Jak mamy dużo danych to sobie można poczekać :)
No właśnie dokładnie o tym piszę powyżej...
Twoje słowa: "scrollowanie grida pokazywało odczuwalne opóźnienia" - no jasne że tak będzie, jednak medium jest zdecydowanie wolniejsze (chociaż to przecież zależy). Dlatego właśnie aplikacje webowe wczytują dane po paręnaście rekordów i to dopiero jest hardcore.
Dlaczego?
Jeżeli jest to zaimplementowane poprawnie, to działa całkiem sprawnie.
Przy pracy przez internet musisz mocno przemyśleć organizację danych w gridach. Stosuj filtrowanie, nie pozwalaj na zbyt duże zakresy pobieranych danych. Użytkownicy którzy nie tworzą zestawień nie muszą widzieć rekordów z dużego okresu (czasami w ogóle nie muszą ich widzieć). Ja zezwalam na większy zakres tylko użytkownikom o dużych uprawnieniach - czyli z założenia wiedzących co robią.
Tak, to prawda, tylko nie za bardzo widzę czasami możliwość ograniczenia danych (chociażby wyżej wspomniana kartoteka kontrahentów, w dużej firmie 100k jest całkiem realną wielkością kartoteki, w przypadku systemów produkcyjnych kartoteka towarowa też łatwo osiąga te wielkości).
Wiadomo, że nie ładuję od razu wszystkich rekordów do pamięci, jednak czasami po prostu nie da się ograniczyć danych które zwróci zapytanie.
Ale dane zawsze można stronicować.
Nie zawsze jest to proste, trudno znaleźć ogólne rozwiązanie, ale jak najbardziej możliwe.
Czasami użytkownicy chcą widzieć po prostu wszystkie dane i poprzeglądać je sobie (nie wnikam, czasami nasz klient, nasz Pan i nic się z tym nie da zrobić).
Od tego jest właśnie stronicowanie i/lub tzw. virtual mode
.
Co ciekawe, FireDAC obsługuje coś takiego by-design (tzw. LiveData Window), ale ma to swoje ograniczenia.
Osobiście nie pracuję nigdy poprzez internet, jeśli jest wymaganie aby system pracował z odległej lokalizacji, polecam RDP i wszystko gra.
Niby tak, ale... to jest trochę takie "nie chce mi się" ;-)