PDA

Pogčedajte punu verziju : 3k i vise entrija na ~ svaka 2 minuta


mangia
31. 10. 2007., 00:05
Jedno pitanjce...

Nisam neki extra programer i baze poznajem onoliko koliko mi je bilo potrebno. Sad cackam nesto ozbiljnije pa imam jednu nedoumicu...

Na svaka 2-3 minuta se generise fajl sa nekih 2-3k linija... ideja je da to trpam u bazu radi kasnijeg cackanja...

podaci u fajlu su tipa

IP adresa - IP adresa - broj (pri cemu je broj ne veci od x xxx xxx)

E sad ideja je da to jos malo pretresem ali kako bi se ponasao mysql sa ovako velikim tabelama... Ideja je takodje da se podaci ciste nakon 60 dana tj da se ostavi samo konacna suma u neku manju tabelicu....

Sve bi se vrtilo na malo jacem sistemu koji ne bi radio nista drugo osim toga...

skaarj
31. 10. 2007., 00:43
Ako sam dobro izracunao to bi u najgorem slucaju bilo oko 2M inserta tokom 24h. To nije jako strasno za MySQL na dobroj masini. Ono sto bih ti savetovao je da tabele delis na manje jer je muka raditi sa tabelama koje imaju 10 ili 20M slogova.

To bi znacilo da kreiras novu tabelu svakih nekoliko dana i onda polako kako neki interval istice brises stare tabele.

Dejan Topalovic
31. 10. 2007., 01:14
1. za tu svrhu mozes komotno koristiti LOAD naredbu (ukoliko format u datoteci nije neki nestandardan)
2. kreiraj jednu prihvatnu tabelu za te podatke iz fajlova
3. kreiraj jos jednu tabelu za summary podatke

Dovoljno informacija? :D

ivanhoe
31. 10. 2007., 01:18
^^ dobri saveti... i razmisli o tome da se digne replika koja ce se koristiti za obradu podataka, znaci u master upisujes, a na replici radis komplikovane upite za analizu koji zahtevaju vremena..

misk0
31. 10. 2007., 08:41
2-3 min - 2-3K linija... znaci prosjek 1min - 1k linija?
dnevno 1440min = 1.44M redova.. 60 dana - 86.4M redova.

mangia
31. 10. 2007., 12:29
Hvala svima na odovorima... Moja ideja je da se na nekih 10-ak minuta sirov sadrzaj trpa u jednu tabelu... Onda da se pokrece skripta koja ce sumirati podatke iz te tabele i na osnovu toga dodavati entrije u novu tabelu ...

Problem mi je sto se ovde radi o trenutnom stanju... Broj linija ce se povecavati a praviti nesto sto ce brzo udariti u plafon...

Sad se razmisljam o rrd-u ...

Nego vidim ovde dosta poznatih likova... A vi kako te... :)

misk0
31. 10. 2007., 12:33
u koji plafon?

mangia
31. 10. 2007., 13:03
Nebo :)

Salim se... Radi se o podacima za izlaznih rutera a kako raste broj korisnika tako raste i kolicina podataka koja se loguje... Ideja je da pored klasicnog accounting-a koji radi uredno, logujem i ove podatke... Kasnije mogu da radim neke specijalne stvari sa njima... tipa jedna tarifa za promet unutar odredjenih IP opsega, druga tarifa za druge IP opsege itd.

jablan
31. 10. 2007., 13:07
Pa jednom dnevno (ili na svaki sat recimo) možeš da pokrećeš skript koji će razvrstavati slogove i dodavati promet po kategorijama u neku sumarnu tabelu, posle možeš da obrišeš konkretne podatke.

ivanhoe
31. 10. 2007., 15:26
pa sve zavisi sta ti sve treba od podataka, i koliko komplikovanu obradu planiras kasnije... RRD radi posao za dosta toga... ako je saobracaj bas velik mozes da radis i obican dump u log fajl, i onda da imas proces (tipa: tail -f log | parse.pl ) koji naknadno parsira to u bazu, tako da ne mora insert u bazu da bude u real time-u..

kodi
31. 10. 2007., 15:31
mi kupimo informacije o oko 40k uredjaja na svaka ~5 minuta, i ubedljivo najlaksi nacin da se ova kolicina informaciaj smesti u mysql je da se napravi tab delimited fajl i uradi mysqlimport.

cvele
31. 10. 2007., 15:52
Na broju vecem od 100k korisnika rrd radi savrseno vec godinama.

ps.
zaboravi na mysql za to...

kodi
31. 10. 2007., 17:01
pa mi i ne koristimo ovo za permanent storage, za to naravno ide rrd, medjutm zgodno je ubaciti sve na 5 minuta u neku temp tabelu jer iz mysql-a mozes veoma lako da isfiltriras razne unose po raznim parametrima.