Czym zastąpić GetAll w repozytorium?

Czym zastąpić GetAll w repozytorium?
bakunet
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 1681
0

Hej, w którymś wątku dzisiaj przewinął mi się dzisiaj temat korzystania z baz danych i tworzenia repozytoriów. Bodajże @somekind wspominał o tym, że bez sensu jest ładowanie wszystkich rekordów do pamięci, szczególnie jeśli ma się do czynienia z setkami tysięcy, albo milionami rekordów, i trudno się z tym nie zgodzić.

Jako że do tej pory nigdy nie miałem do czynienia z większymi bazami, to zdecydowałem się dopiero teraz dokształcić jak najoszczędniej pobierać dane z bazy lub innego źródła. Czy polecicie jakieś wzorce albo techniki?

Na razie wygrzebałem taki przykład z EF Core.

A może Lazy Loading?

Albo coś innego?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2

Tak, jeśli chodzi o wyświetlanie wielu rekordów użytkownikowi, to stronicowanie (pagination) jest chyba oczywistym rozwiązaniem. Przykład z linka też fajny, bo jest prosty i nie zawiera elementów udających cokolwiek.

Lazy loading służy do czegoś zupełnie innego; do dynamicznego wczytywania powiązanych obiektów podczas nawigowania po właściwościach. Używanie tego podczas wyświetlania danych użytkownikowi to generalnie sposób na zabójstwo wydajnościowe aplikacji.

bakunet
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 1681
0

Znalazłem też taki przykład na SO, który chyba wyraźniej do mnie przemawia, ale ok, chyba już rozumiem koncepcję korzystania z paginacji, która się opiera na wyszukanych query/LINQ do bazy. Dzięki.

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
1

@bakunet

Zastanawiam się jakie argumenty stoją za tym, że przefiltrowanie danych najpierw to herezja?

Jemu chodzi o zastosowanie SQLowego VIEW, a nie o przefiltrowanie danych.

No generalnie to raczej jest taki kompromis - albo masz 0 logiki w bazie i łatwo się wszystko testuje, albo robisz sobie jakiegoś vendor/dbengine-locka, ale za to żyłujesz performance?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Tuning bez zmierzenia wydajności to nie herezja tylko utrudnianie sobie życia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.