[ abyss @ 05.01.2015. 12:22 ] @
Pozdrav!
Srecna nova godina svima :)

Do sad sam resavao dosadne knjigovodstvene probleme sa bazama (u Postgre-u) ali sad imam MySQL i nesto sasvim drugacije:

Imam 50ak subjekata koji se krecu i realtime salju svoj id, vreme i gps lokaciju na 5 sekundi.
Moze da se kaze da imam ukupno 30ak koji salju ceo dan. To je mnogo slogova na dnevnom nivou a kamoli na mesecnom.

Postoji schedule u koje vreme koji subjekat gde treba da bude (sa vremenskom tolerancijom).
Treba da ubelezim dolazak na vreme ali i da dizem alarm ako neko nije dosao na vreme.
Sve to ne bi bio toliki problem da nije mnogo podataka u igri i da nije ovog alarma.
Da nije alarma stavi bi trigger na insert i zabelezio dolazak...

Video sam da postoje event scheduler-i u mysql-u koji se izvrsavaju na odredjeno vreme, da stavim recimo na minut?
Kako da efikasno detektujem nedolazak a da ne udavim bazu?
Koliki ce to biti problem kad tabela lokacija poraste na 5 000 000 ili 50 000 000? Porasce sigurno.
Ne bih da brisem, ne bi bilo lose da imam istorijat lokacija...

Zahvaljujem za svaku pomoc!
[ farmaceut @ 07.01.2015. 11:20 ] @
A sto to ne uradis sa nekim scheduler na APP nivou, koji ce provjeravati gdje se ko nalazi, da ne petljas to u mysql?

Samu bazu i upite malo organizujes.
Na svakih 5 sekundi, jedan subjekat pravi 2.6M redova godisnje... to i nije toliko puno (za danasnji hw), za ~50 subjekata.
Particionises bazu po id_subjekta, godini i mjesecu (iz vremena), te dobijes set od 200hiljada redova u mjesecu, nad kojima vec nije problem nesto raditi...

Ili imas 2 tabele, jednu za aktivne podatke, jednu za arhivu.
Takodje, mozes praviti selekciju podataka za arhivu, cuvati np. svaki 10-ti (koliko ti je bitno imati polozaj na 5s u arhivi ?).
[ abyss @ 08.01.2015. 10:13 ] @
Citat:
farmaceut: A sto to ne uradis sa nekim scheduler na APP nivou, koji ce provjeravati gdje se ko nalazi, da ne petljas to u mysql?


Aplikacija je kod subjekta (android). CIm subjekt javi lokaciju ja proverim da li se poklapa lokacija i vremenski interval i belezim pogodak. Medjutim kada se subjekt uopste ne javi meni treba serverside (bilo cron/php ili scheduled event u mysql-u)
da mi detektuje nedolazak i odmah podigne alarm.

Citat:
Samu bazu i upite malo organizujes.
Na svakih 5 sekundi, jedan subjekat pravi 2.6M redova godisnje... to i nije toliko puno (za danasnji hw), za ~50 subjekata.
Particionises bazu po id_subjekta, godini i mjesecu (iz vremena), te dobijes set od 200hiljada redova u mjesecu, nad kojima vec nije problem nesto raditi...


To je vec izvodljivo. Nisam to radio do sad. Jel se tada obacas glavnoj tabeli a mysql se interno obraca particijama?

Citat:
Ili imas 2 tabele, jednu za aktivne podatke, jednu za arhivu.
Takodje, mozes praviti selekciju podataka za arhivu, cuvati np. svaki 10-ti (koliko ti je bitno imati polozaj na 5s u arhivi ?).


Mora da postoji mogucnost da se rekonstruise svo kretanje (i stajanje :).

Pozdrav i hvala na odgovoru!
[ farmaceut @ 08.01.2015. 18:00 ] @
MySQL ce "interno" napraviti particije, koje posmatra kao posebne dijelove tabele, te ih uz "innodb_file_per_table" drzati u posebnim fizickim fajlovima. (doduse i dalje ce se za meta podatke obracati glavnom ibdata fajlu, ali su sami podaci segmentirani). Prouci malo particionisanje, prilicno dobro je sve objasnjeno, sa primjerima.