Jak obsługiwać dane w czasie rzeczywistym z perspektywy bazy danych?

14

Mam na myśli pomysł, ale nadal myli mnie obszar bazy danych .

Wyobraź sobie, że chcę wyświetlać dane w czasie rzeczywistym , a przy użyciu jednej z najnowszych technologii przeglądarki ( gniazd sieciowych - nawet przy użyciu starszych przeglądarek ) bardzo łatwo jest pokazać wszystkim obserwowalnym (przeglądarce użytkownika), co wszyscy robią.

Remy Sharp ma przykład na temat prostoty w tym zakresie.

Ale nadal nie dostaję części do bazy danych, jak mam ją karmić , wyobraźmy sobie (używając Remy game Tron), że chcę zapisać ścieżkę dla każdego podłączonego użytkownika w bazie danych i jeśli klient chce zobaczyć, co się dzieje z opóźnienie 5 sekund , będzie widział, że nie tylko 5 sekund aż do tej chwili, ale na utrzymanie w czasie ...

jak mogę zapytać o taką bazę danych?

SELECT x, y FROM run WHERE time >= DATEADD(second, -5, rundate);

nie jest zalecaną ścieżką, prawda?

i ciągnięcie tego x w czasie x ... to nie jest prawdziwy plik danych, prawda?

Jeśli ktoś mógłby mi pomóc zrozumieć punkt widzenia bazy danych, byłbym bardzo wdzięczny.

balexandre
źródło

Odpowiedzi:

7

Relacyjne bazy danych są zoptymalizowane pod kątem relacji. Bazy danych szeregów czasowych są zoptymalizowane do przechowywania i pracy z szeregiem wartości, które zmieniają się w czasie. W świecie przemysłowym nazywają się „historykami”. Prawdopodobnie najbardziej znanym jest PI OSI .

Możesz przeszukiwać zestaw sygnałów dla danego punktu w czasie, nawet jeśli nie zachował wartości dla tego konkretnego punktu (może interpolować między znanymi punktami).

Jednak każde zapytanie daje tylko jeden punkt w czasie. Nadal musisz sondować.

Kontynuując temat bazy danych szeregów czasowych, sprawdź openPDC (koncentrator danych Phasor jest specyficzny dla sieci elektrycznej, ale jest historykiem szeregów czasowych). W szczególności ten cytat:

narzędzie do odtwarzania strumieniowego, którego można użyć do odtworzenia zdarzeń z lokalnego archiwum historyków i wyodrębnienia dużych zbiorów danych

Właśnie tego chcesz ... jakiś mechanizm odtwarzania.

Nie sądzę, że naprawdę chcesz bazy danych. Chcesz kilka FIFO.

Scott Whitlock
źródło
7

Czas rzeczywisty i baza danych nie mają ze sobą nic wspólnego.

Kiedy tworzyłem radary (i pompy ciepła oraz systemy sterowania statkiem), dowiedziałem się, że dane w czasie rzeczywistym żyją całkowicie w buforach i pamięci wspólnej.

Dane mogą być również wysyłane do bazy danych w celu późniejszej analizy i wyszukiwania. Wolumin musi być mały, więc jego podsumowania, streszczenia lub próbki danych trafiają do trwałego magazynu.

Rzeczywiste dane w czasie rzeczywistym przepływają jednak przez sieć za pośrednictwem kolejek wiadomości w celu zapewnienia niezawodności lub pakietów UDP w celu natychmiastowego (ale prawdopodobnie delikatnego) powiadomienia.

S.Lott
źródło
4

Natknąwszy się na to pytanie, myślę, że myślisz o tym złym, a inne odpowiedzi tak naprawdę nie podkreślają problemu.

Wbijanie bazy danych nie jest dobrym pomysłem. Chociaż jestem pewien, że zdałeś sobie z tego sprawę, inni mogą tego nie mieć. Pamiętam, że mój przyjaciel próbował użyć skryptu php i funkcji JavaScript AJAX w pętli do gry w pół-czasie rzeczywistym. Bardzo szybko zdał sobie sprawę, że wydajność spadła, gdy dołączyło więcej osób, po prostu dlatego, że wykonywał masę zapytań na sekundę, co spowodowało uszkodzenie bazy danych.

Z mojego punktu widzenia potrzebna jest długo działająca aplikacja między użytkownikiem a bazą danych. Użytkownicy łączą się bezpośrednio z tą aplikacją i przekazują wszystkie jej informacje do aplikacji. Ta aplikacja natychmiast kopiuje informacje do wszystkich podłączonych do niej. Spowoduje to załadowanie bardzo lekkiej aplikacji, małego ruchu i bardzo czasu rzeczywistego.

Jeśli musisz użyć bazy danych, aplikacja musi obsłużyć ją w kolejce aktualizacji w tle. Oczywiście musisz wybrać i zapisać to, co oszczędzasz, ponieważ nie chcesz wbijać bazy danych w ścianę małych fragmentów informacji (takich jak aktualna pozycja użytkownika w grze), co przywraca ci ten sam problem, który zacząłeś z. Zamiast pozycji odległość w sklepie przebyła w ciągu 5 sekund lub inne bardziej znaczące fragmenty informacji

TheLQ
źródło
1

Ta strona ma funkcje „w czasie rzeczywistym”. Przekonasz się, że wiele witryn o dużym ruchu ma wiele zabawek między serwerem internetowym a bazą danych. Redis to coś, czego można użyć do przechowywania danych w pamięci. Jestem pewien, że istnieją inne dla różnych stosów.

Myślę, że Firebase.com to świetna usługa danych w czasie rzeczywistym (Nie jestem pewien, co robią dla faktycznego zaplecza bazy danych, ale ponieważ obsługują ją, nie jestem pewien, czy naprawdę zależy mi na ciekawości.)

JeffO
źródło