odczyt danych z pliku binarnego

Odpowiedz Nowy wątek
2006-11-01 00:38
bubu11
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

Pozostało 580 znaków

2006-11-01 03:57
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 [php] w temacie bo poleci...


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-11-01 04:31
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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-01 11:05
bubu11
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

Pozostało 580 znaków

2006-11-01 13:35
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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-02 00:09
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.


Stopki brak.

Pozostało 580 znaków

2006-11-02 00:39
0

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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-04 01:55
0

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


Stopki brak.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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