2015-09-01 12 views
7

Pracuję z Ember Data i staram się zrozumieć niektóre koncepcje. Mam dość ciężką aplikację intensywnie korzystającą z danych, mój back-end ma punkty końcowe, które zwracają wiele rekordów.W jaki sposób Ember Data zarządza dużą ilością rekordów?

Tak więc, w zasadzie mam Trasy, które mają coś w rodzaju this.store.findAll('places'), które mogą zwracać tysiące miejsc, z których każdy ma kilka intensywnych pól tekstowych, takich jak services lub description. To tylko jeden z zasobów, jest jeszcze kilka takich, które obsługują tę ilość danych.

Moją główną obawą jest to, że aplikacja osiąga pewien limit lub przestaje odpowiadać. Moje pytanie brzmi: w jaki sposób Ember Data zarządza dużą ilością rekordów? Czy istnieje jakaś najlepsza praktyka radzenia sobie z tego rodzaju scenariuszami?

+3

Odpowiedź na to pytanie jest odpowiedzią na każde pytanie dotyczące tego, co zrobić z dużymi zbiorami danych na kliencie : paginacja danych. –

+1

@GregBurghardt Zakładając, że klient i serwer działają na tym samym hoście (może elektronowa aplikacja desktopowa z bazą danych sqlite), więc przepustowość nie jest problemem i może nie potrzebuję paginacji, czy ember ma jakieś sztywne ograniczenie przechowywanie dużych ilości rekordów? –

Odpowiedz

3

W jaki sposób Ember Data zarządza dużą ilością rekordów?

W ten sam sposób, w jaki obsługuje niewielką liczbę rekordów. Nie zrobi nic specjalnego dla wydajności, jeśli spróbujesz załadować/pobrać dużą liczbę rekordów. Musisz sobie z tym poradzić.

Czy istnieje jakaś sprawdzona metoda radzenia sobie z takimi scenariuszami?

Niestety, nie. Jakaś paginacja jest naprawdę jedynym sposobem, aby to osiągnąć. Ale jak widać w this thread, jest sporo dyskusji o "najlepszym" sposobie na zrobienie tego. Dostępne są adaptery i wtyczki do obsługi tego scenariusza, a także serwerowa strona główna, zaprojektowana w celu ułatwienia. Ale tak naprawdę nie ma kanonicznego sposobu robienia stronicowania z Ember Data.

Moim zdaniem, najlepszym sposobem na obsługę dużych ilości danych jest zaprojektowanie punktu końcowego kwerendy i zaimplementowanie go na serwerze, obsługując wszystko samodzielnie. To będzie najbardziej dopasowane do twojej aplikacji i najłatwiejsze do zrozumienia. Jeśli brzmi to skomplikowanie, to dlatego, że tak jest. Segmentacja/podział na segmenty danych nie jest prostym problemem do rozwiązania, na pewno napotkasz problemy po drodze. Dlatego nie ma jeszcze uzgodnionej najlepszej praktyki.

Aktualizacja: Javier Cadiz wspomniał o JSON API w komentarzach, więc pomyślałem, że o tym wspomnę. Interfejs JSON API wydaje się być nowym standardem defacto dla Ember Data i ma metodę specifiy a pagination. Jednak interfejs API JSON jest dość nowy i nie jest jeszcze powszechnie przyjęty. Wydaje mi się, że dopiero niedawno Ember Data przełączył się na adapter JSON API jako domyślny. Korzystanie z tej strony prawdopodobnie wymagałoby dopasowania do całego interfejsu API, a nie tylko aspektu stronicowania. (Chociaż zawsze możesz wykraść z niego pewne pomysły.) Z tego powodu nie jestem pewien, czy nazwałbym to jeszcze najlepszą praktyką.

Podsumowanie: sposób podziału na strony JSON API może być sposobem na przyszłość, ale obecnie nie jest zbyt popularny. (Chociaż to tylko moja opinia oparta na tym, co widzę/czytam. Nie ma mowy o tym, ile osób korzysta z niej prywatnie.)

+0

Czy specyfikacja interfejsu API JSON pomaga w rozwiązaniu tego problemu? –

+0

To dobry punkt wyjścia. Zaktualizuję moją odpowiedź. – GJK

+0

bardzo dobrze wyjaśnione, dzięki –

Powiązane problemy