Wpis z mikrobloga

Piszę sobie na boku aplikację w oparciu o Symfony do tej pory dane miałem w swojej bazie danych, ale chciałbym to zmienić. W jaki sposób mógłbym zrobić sensowne rozwiązanie dla przypadku w którym mam kilka, a przynajmniej dwa zewnętrzne różne źródła danych (powiedzmy, że w formacie xml lub json) i chce dać dla użytkownika możliwość wyszukiwania. Po naciśnięciu przycisku szukaj, aplikacja powinna przeorać dostępne dane z tych dwóch źródeł. Wiem, że mógłbym na odczepnego zrobić to w taki sposób, że najpierw szukam w jednym źródle, później w drugim. Jednak wydaje mi się to nieefektywne, chciałbym sobie złączyć dostępne źródła w jeden obiekt i wyświetlić je wykonując tylko jedno zapytanie.

Szukałem czegoś w googlach pod zapytaniami 'multiple data sources', ale albo już jestem zbyt zakręcony i zabrnąłem w ślepy zaułek, albo źle szukam.

Spotkaliście się z podobnym problemem? Z jakich rozwiązań korzystacie?

#pytanie #webdev #programowanie #symfony #php
  • 7
@KawaCzibo: W moim przypadku w 99.9% w obu źródłach będą pasujące wyniki dla zapytania użytkownika. Żeby to jakoś zobrazować wyobraźmy sobie dwa cenniki jedzenia z dwóch różnych restauracji. Wpisujesz w wyszukiwarkę "zupa" w obu źródłach możesz je znaleźć, dlatego zależałby mi na złączeniu tego, bo mimo że pozornie rekordy pasują do tego samego zapytania to są zupełnie różne.
@PabloTomello: Ja bym to zrobił tak - klasa SourceParser, dwie metody prywatne fetchSource1() i fetchSource2() zwracające tablice obiektów po których chcesz wyszukiwać i jedna metoda getResults() która uruchamia dwie powyższe metody, łączy dwie tablice wynikowe, wywala duplikaty (o ile istnieją) i zwraca posortowaną tablicę unikalnych obiektów z dwóch źródeł.

Chociaż wszystko zależy od tego, jakie to są źródła danych i czy da się je znormalizować do jednego obiektu.