Chcę zbudować aplikację, która korzysta z danych z kilku punktów końcowych.
Powiedzmy, że mam:
- JSON API do pobierania danych kinowych
- Eksport XML do pobierania danych o ???
- Kolejny JSON API do czegoś innego
- Plik CSV dla więcej gówna ...
W mojej aplikacji chcę zebrać wszystkie te dane i zbudować dla nich widoki i tak dalej ...
MÓJ pomysł polegał na stworzeniu bazy danych poprzez stworzenie schematów dla wszystkich tych źródeł danych, abym mógł zrobić coś w rodzaju „skryptów importu”, które mogę wywołać, kiedy chcę uzyskać najnowsze dane.
Pomyślałem o schematach, ponieważ chcę mieć możliwość łatwego dostosowania nowego interfejsu API do dowolnego schematu.
Proszę, wyjaśnij mi możliwości i najlepsze praktyki (teoria i praktyka, jeśli to możliwe: P)
Odpowiedzi:
0 dla odpowiedzi № 1Masz całkowitą rację co do tworzenia bazy danych. Ale prawdziwym problemem prawdopodobnie nie będzie sposób przechowywania danych. To będzie jak to dopasować logicznie i semantycznie.
Proponuję, abyś najpierw dobrze się przyjrzał, jaki jest twójenpoints może zapewnić. Pobierz kilka próbek z każdego źródła i przeanalizuj je, jeśli możesz. Skąd będziesz wiedzieć, które dane są nowe? Jak możesz porównać to z istniejącymi danymi i danymi z innych źródeł? Jeśli istniejące dane zmienią się lub zostaną usunięte, jak to wykryjesz i sobie z tym poradzisz? A jeśli źródła się na coś nie zgadzają? Jak i kiedy należy przeprowadzić synchronizację? Co zrobisz, jeśli jedno z Twoich źródeł ulegnie awarii? Itp.
Ujednolicenie danych jest niezwykle trudnejeśli Twoje źródła danych nie są. Z reguły jeśli źródła są różne, nie są one spójne. Stąd przysłowie „śmieci na wejściu, śmieci na zewnątrz”. My, ludzie, nie mamy problemu z drobnymi niespójnościami, ale algorytmy nie mogą działać poprawnie, jeśli występują rozbieżności. Nawet jeśli wszystko pasuje do siebie na papierze, zwykle zapomina się, że dane mogą się zmieniać w czasie ...
Przynajmniej takie jest moje doświadczenie w takich przypadkach.
0 dla odpowiedzi nr 2
Nie jestem pewien, czy w aplikacji chceszwyświetl wszystkie dane w tym samym widoku lub jeśli zamierzasz tworzyć różne widoki dla każdego źródła. Jeśli chcesz wyświetlić dane w tym samym widoku, np. Siatce, polecam użycie dziedziczenia lub interfejsu w zależności od danych i potrzeb. Poleciłbym również ustawienie tej struktury w bazie danych przy użyciu różnych tabel dla różnych źródeł i powiązanej z nimi tabeli nadrzędnej, z którą jest powiązany typ.
Oto dobry wątek z dyskusją na temat wyboru interfejsu lub dziedziczenia. Dziedziczenie a interfejs w C #
A oto kilka przykładów reprezentacji dziedziczenia w bazie danych. Jak możesz przedstawić dziedziczenie w bazie danych?