Aktywne Wpisy
jfrost +245
snickers111a +172
Kiedyś myślałem, że tylko u mnie w mieście takie coś jest, a to w całej Polsce spotkać można takie budynki #polishcore
Skopiuj link
Skopiuj linkWykop.pl
Podróże
Gospodarka
Ukraina
Technologia
Motoryzacja
Sport
Rozrywka
Informacje
Ciekawostki
String departureAirport
String destinationAirport
Float price
Date date
Jak mozecie zauwazyc mamy tutaj loty tylko w jedna strone.
Głównym celem mojego projektu jest wyszukiwanie lotów w dwie strony z określonego lotniska wylotu do listy lotnisk docelowych, moje obecne rozwiązanie wyglada nastepujaco. Użyłem MongoDB jako magazynu bazy danych. Każdy lot przechowuję niezależnie. Kiedy mam request o wyszukanie, najpierw szukam lotu w pierwszą stronę według podanych kryteriów, a następnie iteruje po liscie znalezionych lotów w pierwszą stronę. Dla każdego znalezionego lotu muszę wykonać niezależne zapytanie do Mongo, aby znaleźć lot powrotny. Niestety to generuje bardzo dużo żądań i cała operacja trwa naprawdę długo. Może macie inne pomysły, jak mógłbym to rozwiązać? Może powinienem użyć relacyjnej bazy danych lub bazy danych grafów? Może powinienem przechowywać wszystkie loty dla jednego połączenia w jednym rekordzie/dokumencie?
Post scriptum: Kiedy pisałem ten post, wpadłem na nowy pomysł. Może powinienem zagregować wszystkie loty w pierwszą stronę i zrobić jedno zapytanie Mongo, a później przefiltrować je w Javie, co byłoby zdecydowanie szybsze, ale z drugiej strony pochłonie znacznie więcej pamięci.
#programowanie #bazadanych #bazydanych
2. Jeśli ktoś szuka lotów A->B
-- to możesz dodatkowo założyć sobie index A,B albo samo B (trochę przyspieszy i baza taniej wypluje loy A-B_
3. Teraz jak szukasz lotów powrotnych to robisz jeden strzał do bazy o loty B->A (zindexowane) i możesz to jakoś ograniczyć czasowo jesli potrzebujesz tego ograniczenia.
4.
Bo wiesz - jeśli baza ma 400MB to mógłbyś w trakcie requesta po prostu ładować dane z pliku robiąc pierwsze filtrowanie, a potem z górki.
Takie coś pozwoliło by Ci to opędzić nawet jako lambda/serverless funkcje gdzieś w cloudzie.
Druga sprawa - jeśli to jest statyczna mapa lotów i te 400MB nie urośnie
@obieq jaki tech stack? może połączymy siły :D
@Krolik Jesli juz to bym je zaladowal raz, trzymał w pamięci i aktualizowal w momencie kiedy pobiore aktualne dane lotów