odczyt danych z pliku binarnego

0

witam,
najpierw przedstawie istniejaca sytuacje a pozniej poprosze o pomoc, no wiec wyglada to tak:
mamy sobie w sieci serwerek na ktorym lezy sobie [b]plik binarny[/b]. Do tego pliku wczytywane sa wartosci czujnikow w kopalni (wstrzasy czy jakies cisnienie) - wpis obejmuje czas oraz wartosc z czujnika. Nasz plik binarny zawiera [b]bardzo duzo[/b] wpisow i jest aktualizowany - dodawane sa kolejne wpisy do juz istniejacych - co 2 sekundy. Na innym komputerze ma powstac aplikacja pozwalajaca na przegladanie naszego pliku binarnego, no i wlasnie tutaj zwracam sie do Was - jak zrobic to najefektywniej, biorac pod uwage ze danych jest naprawde duzo. Ja zastanawialem sie juz nad takimi podejsciami:

  1. przeslanie wszystkich danych - bez sensu troche bo jelsi dnaych jest duzo to zapchamy siec i nic nie bedzie sie tam dzialo poza przesylaniem danych, a przeciez klient w skrajnym przypadku moze zapytac o jedej rekord
  2. wsadzic nasz plik binarny w XMLa - wtedy mozna parsowac ten plik XML i wysyalc juz tylko to co nam potrzeba
  3. moze jakies bufrowanie tych danych, ale nie bardzo mma pomysl jak to rozwinac:/

bede wdzieczny za wszelkie sugestie i pomysly
pozdrawiam

0

Proponuję napisać aplikację generującą wykres dla danej jednostki czasu np 2h, 6h, 12h, 1dzien, 2, 4, tydzien, 2tyg, miesiac, 2, 4 , 6, rok, 2 itd. Każdy wykres wyświetlać na podstawie 60 punktów, które będą średnimi wyliczonymi z wartości wpisów np dla wykresu rocznego będą to średnie z każdych kolejnych sześciu dni. Nie pobierać za każdym razem wszystkich wpisów tylko potrzebną część, dla ostatnich 2godzin ostatnie 60wpisów, dla 6godzin 180wpisów, a z każdej trójki wyliczyć średnią i zapisać ją. W ten sposób przy kolejnym zapytaniu o ostatnie 6godzin czas wykonania skróci się 3-krotnie. Przy pierwszym zapytaniu o rok czas wykoniania będzie ogromny jednak przy następnym zapytaniu skróci się on
4380-krotnie [!!!]
:-)

Wpisz prefix w temacie bo poleci...

0

Najlepiej byloby wykorzystac ten plik do stworzenia bazy danych, a pozniej odpytywac ja juz sql'em. Mozesz sobie napisac aplikacje, ktora pobiera dane np. co godzine od ostatniego pobrania i wstawia odpowiednio do tabeli. A twoja glowna aplikacja korzysta bezproblemowo z bazy. Wtedy dosc sporo masz z glowy.

pozdrawiam
johny

0

dziekuje bardzo za odpoweidz,
@johny_bravo
jesli chodzi o rozwiazanie z przepisaniem danych z pliku do bazy danych i odpytywanie pozniej zwyczajnie poleceniami sql, to przyznam ze tez rozwazalem taka mozliwosc tyle tylko ze nie ma mozliwosci zainstaowana na tym serwerze dodatkowej bazy - taki wymysl zleceniodawcy:/ - chociaz przyznam ze bede musial jeszcze pogadac na ten temat bo tak jak mowisz bedzie to chyba najlepszy sposob.
@ciapek888
niestety usrednienie danych na 100% nie wchodzi w gre - te dane pochodza z czujnikow w kopalniach (wstrzasy czy metan) i nie ma opcji ich usredniania - no chyba ze zle Cie zrozumialem

dziekuje za odpowiedz i czekam na kopejne wypowiedzie w tym temacie
pozdrawiam
bubu11

0

No to w takim razie podepnij sie do bazy na innym serwerze. Zaloz jakies konto bazodanowe i po klopocie. Tu bym sie tylko zastanowil czy np. klasyczne z mysql'em wystarczy - skoro plik jest duzy i dane co 2s, to pewnie bedzie ich calkiem sporo. Bo jesli baza nie wytrzyma to mozesz miec klopot.
Fakt, ze najlepsze bylo by na tym samym kompie, ale najdluzsza bedzie i tak tylko ta pierwsza aktualizacja tabeli. Co godzine daje Ci 1800 zczytan lacznie, wiec zaktualizowanie bazy taka iloscia rekordow na raz nie powinno byc jakos super obciazajace.

pozdrawiam
johny

0

no cóż z tym podpinaniem się do bazy to różnie bywa, bo wysyłanie kwerendy mysql co 2 sekundy przez internet to niezbyt dobry pomysł(próbowałem już! Łącze się zapycha :/)

Możesz też kombinować z komendami:

fputs fopen fclose file

przy czym co 10 minut skrypt robiłby nowy plik z danymi. To jest wydajne rozwiązanie, bo później bardzo łatwo to wykorzystać przy tworzeniu aplikacji, która by to kontrolowała i wyświetlała w formie czytelnych danych.

0

Ja pisalem o okresie godzinnym, zeby wlasnie nie zarznac serwera i lacza :)

0

fakt, nie zrozumiałem twojej wypowiedzi :P
(i to jest wada odpisywania po godzinie drugiej :D)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0