Wpis z mikrobloga

Mircy z #programowanie podpowiedzcie proszę jak ugryźć temat :)

Piszę w #python skrypt, który ma za zadanie monitorować ceny konkurencji, ok 30k ofert w sumie, ceny będą sprawdzane każdego dnia.
No i tutaj pojawia się pytanie w jaki sposób trzymać te dane i w jaki sposób na nich pracować, np:

1. Czy trzymać to w bazie danych czy w jakimś pliku txt?
2. Jeśli baza, to jakiego typu bazy danych najlepiej użyć w tym przypadku? (nie mam za bardzo rozeznania)
3. Jak się rozwiązuje tego typu problemy "zgodnie ze sztuką"? Czy wpycha się do bazy zawsze wartość z danego dnia czy tylko te wartości, które uległy zmianie?
  • 19
@panjerzyduzomierzy ewentualnie można zapisywać datę pierwszego i ostatniego wystąpienia ceny jeśli jest to okres ciągły i robić nowy wiersz gdy cena się zmienia. Rozwiązań może być wiele.

@Dar_Q: Generalnie wiadomo, że lepiej mieć pełne dane, także jest to kwestia tego, czy możesz sobie pozwolić na taką redundancję danych. 30k wierszy dziennie to prawie milion miesięcznie, a więc nie tak mało.
Każda oszczędność w danych zwykle oznacza bardziej zawiłą strukturę danych i
@Dar_Q:
1. Baza dokumentów
2. CouchBase
3. To zależy już od Ciebie jak chcesz tymi danymi operować. Wrzucanie tylko zmian nie jest złe, ale leniwi wybiorą dodawanie codziennie (łatwiej potem pokazać na wykresie czy wygenerować cokolwiek). W zależności od tego jak wielkie są to liczby jeśli jesteś upierdliwym geekiem możesz zapisywać jedynie zmiany, a nie aktualną cenę. Czyli jeśli wyjściową ceną jest 1 0000, a zmieniło się na 1 0001 to
@Dar_Q:
1. Zdecydowanie w bazie, daje Ci to później dużą elastyczność w manipulacji.
2. W zasadzie dowolna, na początek sqlite wystarczy, jak później będziesz chciał zmienić to nie powinno stanowić problemu ( http://www.python.rk.edu.pl/w/p/sqlalchemy/ ).
3. Pytasz o strukturę swojej bazy, tu temat jest zależny od wielu czynników, z tego co napisałeś, to zrobiłbym 2 tabele: konkurenci i zapisy (z kluczem obcym do konkurentów). Nie baw się w trzymanie różnic, bo później
Dodatkowo powiedź co chcesz potem z tymi danymi robić bo możliwe, że CouchBase sam je obrobi tak jakbyś tego potrzebował.


@toshibaas: Nic wielkiego w sumie, cele są dwa:
1. Mieć jakiś ogólny pogląd na zmiany cen konkurencji, czyli mieć jakieś podstawowe statystyki zmian.
2. Pobierać dane o cenach kokurencji do innych moich skryptów, które na tej podstawie będą ustalały moją politykę cenową
@toshibaas: Ten Couch to darmowy jest jak widzę do takich małych zastosowań. Nie ma żadnych kruczków? No i czy jesteś w stanie odnieść go jakoś do Mongodb?
@Dar_Q: Darmowy dla dużych zastosować. Tylko, że nie wersja najnowsza ale jednego wydania mniej czyli teraz 4.1 jest darmowe dla dużych zastosować. Niema kruczków wykorzystujemy w firmie :) Mongo nie wykorzystywałem, ale tutaj chodzi bardziej o łatwość dla Ciebie jeśli mongo jest dla Ciebie lepsze to wykorzystuj mongo :)
Ad3) to kwestia tego, czy wolisz dużą złożoność obliczeniową ale żeby dane mało zajmowały, czy prostotę w obsłudze ale przy dużym rozmiarze bazy.

Jeśli nie masz ograniczeń co do rozmiaru bazy, to opcja druga będzie łatwiejsza w późniejszych zestawieniach.