eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Optymalizacja
Ilość wypowiedzi w tym wątku: 14

  • 1. Data: 2011-05-13 07:34:37
    Temat: Optymalizacja
    Od: MoonWolf <m...@p...com>

    Mamy w firmie różnice zdań i chciałem się zorientować w pewnej kwestii.

    Baza danych będzie prosta - rekord z 'nazwą' danej, jej wartością i
    datą zapisania (każda dana to jeden rekord, danych będzie kilkanaście,
    zapis co 10sek 24h/7/365. Źródeł tych danych będzie więcej, dla każdego
    przewidziana jest osobna tabela, będzie tego nieokreślona liczba - na
    pewno będą przybywać).

    Pytanie jest takie: czy warto (a jeśli tak to w jakich okolicznościach)
    'upakowywać' dane składowane w bazie - na takiej zasadzie, że jeśli
    dana się nie zmieniła to robimy update rekordu zmieniając datę na
    aktualną (czyli w skrajnym wypadku w bazie będzie jeden rekord
    dotyczący danej, która nigdy się nie zmieniła). Dane będą różne - ale
    zawsze zdarzą się serie powtarzających się wartości.

    Z danych tych będą sporządzane wykresy (raczej dla każdego źródła
    osobno - czyli zapytania w obrębie jednej tabeli) - tutaj właśnie
    powstała różnica zdań. Niektórzy boją się dużej liczby danych do
    obrobienia (po kilku latach) i długiego czasu generowania wykresu.
    Przeciwnicy twierdzą, że po to jest baza danych, żeby składować dane a
    takie kombinacje w kodzie aplikacji zniweczą oszczędności. I w ogóle
    pachnie to 'premature optimization'.

    Dodatkowe pytanie - czy język programowania lub silnik bazy danych może
    mieć wpływ na odpowiedź na to pytanie (celowo nie wspomniałem w czym to
    jest robione)?

    [FUT na pl.comp.programming bo to chyba jednak bardziej programowania
    się tyczy - choć w sumie to nie wiem]

    --
    <:> Roger, MoonWolf Out <:>|Victims falling under chains
    (::) (::)|
    (:) JID:m...@j...org(:)| http://karakkhaz.prv.pl


  • 2. Data: 2011-05-13 07:54:08
    Temat: Re: Optymalizacja
    Od: Krzysztof Jodłowski <b...@p...onet.pl>

    > Pytanie jest takie: czy warto (a jeśli tak to w jakich okolicznościach)
    > 'upakowywać' dane składowane w bazie - na takiej zasadzie, że jeśli
    > dana się nie zmieniła to robimy update rekordu zmieniając datę na
    > aktualną (czyli w skrajnym wypadku w bazie będzie jeden rekord
    > dotyczący danej, która nigdy się nie zmieniła). Dane będą różne - ale
    > zawsze zdarzą się serie powtarzających się wartości.

    Tu trzeba by wiedzieć jakie będą rzeczywiste dane.
    Jeśli naprawdę będą się bardzo rzadko zmieniać (np. skan co 10 s ale
    zmiana co godzinę), to wg mnie lepiej jest "upakowywać". Jeśli dane
    zmieniają się częściej niż co 300-500 skanów (może rzadziej), to sądzę,
    że lepiej wpisywać dane po każdym skanie.
    Rocznie będziesz miał 365*24*60*6 = 3 153 600 wpisów. To nie jest dużo i
    generowanie zakresów danych do wykresów będzie łatwe i szybkie.

    Zastanowił bym się czy robić osobną tabelę dla innej zmiennej. Raczej
    nie. Zwłaszcza, że "będzie tego nieokreślona liczba - na pewno będą
    przybywać". Dołóż jedną kolumnę "nazwa zmiennej" i trzymaj wszystko w
    jednej tabeli.

    --
    pozdrawiam
    Krzysztof Jodłowski

    WYSYŁKOWO.PL - Sklep Internetowy
    http://www.wysylkowo.pl


  • 3. Data: 2011-05-13 08:01:14
    Temat: Re: Optymalizacja
    Od: MoonWolf <m...@p...com>

    Krzysztof Jodłowski denied rebel lies:

    > Tu trzeba by wiedzieć jakie będą rzeczywiste dane.
    > Jeśli naprawdę będą się bardzo rzadko zmieniać (np. skan co 10 s ale
    > zmiana co godzinę), to wg mnie lepiej jest "upakowywać". Jeśli dane
    > zmieniają się częściej niż co 300-500 skanów (może rzadziej), to
    > sądzę, że lepiej wpisywać dane po każdym skanie.

    Różnie. Niektóre będa się zmieniać praktycznie za każdym razem,
    niektóre prawie wcale.

    > Rocznie będziesz miał 365*24*60*6 = 3 153 600 wpisów. To nie jest
    > dużo i generowanie zakresów danych do wykresów będzie łatwe i
    > szybkie.

    Jeszcze trzeba pomnożyć przez liczbę danych z jednego źródła (kilka -
    kilkanaście) i ewentualnie liczbę źródeł (powoli rosnącą).

    > Zastanowił bym się czy robić osobną tabelę dla innej zmiennej. Raczej
    > nie. Zwłaszcza, że "będzie tego nieokreślona liczba - na pewno będą
    > przybywać". Dołóż jedną kolumnę "nazwa zmiennej" i trzymaj wszystko w
    > jednej tabeli.

    Może nieprecyzyjnie się wyraziłem - tak właśnie będzie. Każda tabela
    będzie miała wiele danych, ale pochodzących z jednego źródła. Źródeł
    będzie wiele (konkretniej - to są parametry urządzeń, jedna tabela na
    urządzenie).

    --
    <:> Roger, MoonWolf Out <:>|I don't understand. It
    (::) (::)|should be dead by now.
    (:) JID:m...@j...org(:)| http://karakkhaz.prv.pl


  • 4. Data: 2011-05-13 08:35:08
    Temat: Re: Optymalizacja
    Od: Michoo <m...@v...pl>

    W dniu 13.05.2011 09:34, MoonWolf pisze:
    > Pytanie jest takie: czy warto (a jeśli tak to w jakich okolicznościach)
    > 'upakowywać' dane składowane w bazie
    Warto, w sytuacji gdy różnica to np. 1 a 100 GB danych rocznie.

    Warto pomyśleć też czy RRD nie będzie lepszym rozwiązaniem.

    > Z danych tych będą sporządzane wykresy (raczej dla każdego źródła
    > osobno - czyli zapytania w obrębie jednej tabeli) - tutaj właśnie
    > powstała różnica zdań. Niektórzy boją się dużej liczby danych do
    > obrobienia (po kilku latach) i długiego czasu generowania wykresu.
    Tutaj uwaga - jeżeli generujesz wykres z wielu lat to nawet gdy masz
    miliony rekordów to potrzebujesz w jednej chwili max tysiąca. Dobrze
    napisane widoki w bazie pozwolą policzyć średnie na miejscu i przesłać z
    bazy do aplikacji tylko te dane, które są potrzebne.

    > I w ogóle
    > pachnie to 'premature optimization'.
    Tak.

    > Dodatkowe pytanie - czy język programowania lub silnik bazy danych może
    > mieć wpływ na odpowiedź na to pytanie (celowo nie wspomniałem w czym to
    > jest robione)?
    Tak. Użycie SQLITE może być złym pomysłem jeżeli sumarycznie będzie
    wiele zapisów na sekundę. Użycie postgresa może być dobrym pomysłem. To
    się nazywa "analiza wymagań" i za darmo jej za Ciebie robić nie będę.

    --
    Pozdrawiam
    Michoo


  • 5. Data: 2011-05-13 08:47:14
    Temat: Re: Optymalizacja
    Od: Daniel Podlejski <u...@u...eu.org>

    MoonWolf napisał(a):
    > Mamy w firmie różnice zdań i chciałem się zorientować w pewnej kwestii.
    >
    > Baza danych będzie prosta - rekord z 'nazwą' danej, jej wartością i
    > datą zapisania (każda dana to jeden rekord, danych będzie kilkanaście,
    > zapis co 10sek 24h/7/365. Źródeł tych danych będzie więcej, dla każdego
    > przewidziana jest osobna tabela, będzie tego nieokreślona liczba - na
    > pewno będą przybywać).

    SQL Antipatterns, Metadata Tribbles

    http://www.slideshare.net/billkarwin/sql-antipattern
    s-strike-back
    slajdy 5 do 16

    > Przeciwnicy twierdzą, że po to jest baza danych, żeby składować dane a
    > takie kombinacje w kodzie aplikacji zniweczą oszczędności. I w ogóle
    > pachnie to 'premature optimization'.

    IMHO mają rację.

    > Dodatkowe pytanie - czy język programowania lub silnik bazy danych może
    > mieć wpływ na odpowiedź na to pytanie (celowo nie wspomniałem w czym to
    > jest robione)?

    Tak. Być może nie potrzebujesz SQLa, tylko RRD. A jeśli potrzebujesz
    SQLa, to warto wybrać RDBMS umożliwiającego partycjonowanie danych i
    tworzenie indeksów częściowych (http://en.wikipedia.org/wiki/Partial_index)

    > [FUT na pl.comp.programming bo to chyba jednak bardziej programowania
    > się tyczy - choć w sumie to nie wiem]

    Nie czytam, ale jak uważasz ;) FUT respektuję.

    --
    Daniel Podlejski


  • 6. Data: 2011-05-13 08:48:51
    Temat: Re: Optymalizacja
    Od: MoonWolf <m...@p...com>

    Michoo denied rebel lies:

    >> Dodatkowe pytanie - czy język programowania lub silnik bazy danych
    >> może mieć wpływ na odpowiedź na to pytanie (celowo nie wspomniałem w
    >> czym to jest robione)?
    > Tak. Użycie SQLITE może być złym pomysłem jeżeli sumarycznie będzie
    > wiele zapisów na sekundę. Użycie postgresa może być dobrym pomysłem.
    > To się nazywa "analiza wymagań" i za darmo jej za Ciebie robić nie
    > będę.

    Tego nie oczekuję - wystarczy 'Tak'. Dziękuję.

    --
    <:> Roger, MoonWolf Out <:>|And now, Princess, we will
    (::) (::)|discuss the location of the
    (:) JID:m...@j...org(:)|hidden Rebel Base


  • 7. Data: 2011-05-13 08:53:01
    Temat: Re: Optymalizacja
    Od: Krzysztof Jodłowski <b...@p...onet.pl>

    >> Rocznie będziesz miał 365*24*60*6 = 3 153 600 wpisów. To nie jest
    >> dużo i generowanie zakresów danych do wykresów będzie łatwe i
    >> szybkie.
    >
    > Jeszcze trzeba pomnożyć przez liczbę danych z jednego źródła (kilka -
    > kilkanaście) i ewentualnie liczbę źródeł (powoli rosnącą).

    Przyjmijmy:
    Liczba danych z jednego źródła = np. 10 i liczba źródeł na początek = 20.
    To daje 3153600 * 10 * 20 = 360 mln na rok. To dalej nie jest duża
    liczna biorąc pod uwagę ilość kolumn i (chyba) wielkość pola dane".
    Wyjdzie tego np. 4-5 GB na rok.

    >> Zastanowił bym się czy robić osobną tabelę dla innej zmiennej. Raczej
    >> nie. Zwłaszcza, że "będzie tego nieokreślona liczba - na pewno będą
    >> przybywać". Dołóż jedną kolumnę "nazwa zmiennej" i trzymaj wszystko w
    >> jednej tabeli.
    >
    > Może nieprecyzyjnie się wyraziłem - tak właśnie będzie. Każda tabela
    > będzie miała wiele danych, ale pochodzących z jednego źródła. Źródeł
    > będzie wiele (konkretniej - to są parametry urządzeń, jedna tabela na
    > urządzenie).

    Czyli dalej podtrzymuje. Kolumny: Data, Id zmiennej, Wartosc, Id źródła.

    Resztę chyba opisali Michoo i Daniel. Partycjonowanie, jakieś indeksiki
    i parę innych błahostek :)


    --
    pozdrawiam
    Krzysztof Jodłowski

    WYSYŁKOWO.PL - Sklep Internetowy
    http://www.wysylkowo.pl



  • 8. Data: 2011-05-13 08:56:48
    Temat: Re: Optymalizacja
    Od: Michal Kleczek <k...@g...com>

    MoonWolf wrote:

    > Mamy w firmie różnice zdań i chciałem się zorientować w pewnej kwestii.
    >
    > Baza danych będzie prosta - rekord z 'nazwą' danej, jej wartością i
    > datą zapisania (każda dana to jeden rekord, danych będzie kilkanaście,
    > zapis co 10sek 24h/7/365. Źródeł tych danych będzie więcej, dla każdego
    > przewidziana jest osobna tabela, będzie tego nieokreślona liczba - na
    > pewno będą przybywać).
    >

    A dlaczego tak?
    To mi pachnie modelem EAV - nie lepiej dla kazdej "danej" oddzielna relacje
    (tabele)?

    > Pytanie jest takie: czy warto (a jeśli tak to w jakich okolicznościach)
    > 'upakowywać' dane składowane w bazie - na takiej zasadzie, że jeśli
    > dana się nie zmieniła to robimy update rekordu zmieniając datę na
    > aktualną (czyli w skrajnym wypadku w bazie będzie jeden rekord
    > dotyczący danej, która nigdy się nie zmieniła). Dane będą różne - ale
    > zawsze zdarzą się serie powtarzających się wartości.

    To zalezy od wymagan funkcjonalnych.
    Nie wiem dlaczego kolejne odczyty z urzadzen sa nieistotne jezeli ich
    wartosc sie nie zmienila w stosunku do poprzedniego, ale sa istotne jezeli
    sie zmienila. Dodatkowo istotna jest jeszcze informacja o czasie ostatniego
    odczytu.
    (Powyzsze jest tylko wnioskiem z tego, ze istnieje mozliwosc "upakowania")
    Jezeli istotny jest fakt, ze nastapila _zmiana_ wartosci (a nie wartosc sama
    w sobie) to moze w ogole inny model jest potrzebny?

    >
    > Z danych tych będą sporządzane wykresy

    LOL - no jasne ze beda jakies zestawienia (byc moze w postaci wykresow) - w
    koncu po cos te dane sa przechowywane.

    A tak powaznie - w zaleznosci od tego jakie te wykresy (czyli co z bazy
    chcesz wyciagnac), model danych bedzie inny.

    > (raczej dla każdego źródła
    > osobno - czyli zapytania w obrębie jednej tabeli) - tutaj właśnie
    > powstała różnica zdań. Niektórzy boją się dużej liczby danych do
    > obrobienia (po kilku latach) i długiego czasu generowania wykresu.
    > Przeciwnicy twierdzą, że po to jest baza danych, żeby składować dane a
    > takie kombinacje w kodzie aplikacji zniweczą oszczędności. I w ogóle
    > pachnie to 'premature optimization'.

    Tak.

    >
    > Dodatkowe pytanie - czy język programowania lub silnik bazy danych może
    > mieć wpływ na odpowiedź na to pytanie (celowo nie wspomniałem w czym to
    > jest robione)?

    Oczywiscie.

    --
    Michal


  • 9. Data: 2011-05-13 09:20:59
    Temat: Re: Optymalizacja
    Od: MoonWolf <m...@p...com>

    Michal Kleczek denied rebel lies:

    > A dlaczego tak?
    > To mi pachnie modelem EAV - nie lepiej dla kazdej "danej" oddzielna
    > relacje (tabele)?

    To też rozważamy (całość jest na etapie projektu, chociaż jak zwykle
    trzeba na szybko robić coś działającego).

    >> jeden rekord dotyczący danej, która nigdy się nie zmieniła). Dane
    >> będą różne - ale zawsze zdarzą się serie powtarzających się
    >> wartości.
    > To zalezy od wymagan funkcjonalnych.
    > Nie wiem dlaczego kolejne odczyty z urzadzen sa nieistotne jezeli ich
    > wartosc sie nie zmienila w stosunku do poprzedniego, ale sa istotne
    > jezeli sie zmienila.

    Bo wtedy można te wartości odtworzyć (poza bazą danych) mając daty
    zmian.

    --
    <:> Roger, MoonWolf Out <:>|Do undo others as they have
    (::) (::)|done to you
    (:) JID:m...@j...org(:)| http://karakkhaz.prv.pl


  • 10. Data: 2011-05-13 09:26:28
    Temat: Re: Optymalizacja
    Od: Krzysztof Jodłowski <b...@p...onet.pl>

    > Bo wtedy można te wartości odtworzyć (poza bazą danych) mając daty
    > zmian.

    Tracimy tylko informację, czy zapisy w ogóle były, czy też była np.
    awaria i nie było zapisów. Ale to szczegół i można go obejść wpisując w
    przypadku awarii dane charakterystyczne (kwestia skryptu zbierającego dane).

    --
    Krzysztof

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: