Portál AbcLinuxu, 12. června 2024 10:20


Dotaz: MySQL možná trigger?

4.6.2019 08:41 Lora
MySQL možná trigger?
Přečteno: 843×
Odpovědět | Admin
Chci na raspberry použít MySQL pro ukládani dat z čidel a jelikož se ukládá na Flash a dat do tabulky plyne několik řádků maždou minutu musím nějakl řešit životnost flash karty. mySQL umi s ENGINE=MEMORY tabulku držet trvale v paměti RAM, tak chci řekněme primarně data zapisovat do tabulky v RAM a tu pak řekněme jednou za hodinu zapsat do klasické InnoDB na kartě.

otázkou je jak Data v tabulce jsou něco jako datum/čas , ID čidla, hodnota1, hodnota2.

Jde na toto použít trigger, kde by byla podmínka pokud max - min time v tabulce je více jak hodina překopiruj vše do tabuky na flash a tabulku v RAM vyčisti? Lze někde dohledat příkald podobního použití triggerů?

Pak je zde otázka ztráty dat, jak zajisti, aby se stejná funkce provedla při shutdown mySQL respektive celého systému?

No aposlední, chci ještě zajsiti aby se jednou deně emailem nebo přes ftp odesla přes internet data za daný den. Jo šlo by to řešit nějakým skriptem v cronu,ale nemá na to nějaký nastroj přímo mySQL?

Omlouváms e za začítečnický dotaz s mySQL zařínám
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.6.2019 09:05 NN
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Osobne bych dal prednost SQLite a zbytek naskriptoval vcetne ukladani, zalohovani i reportu.
4.6.2019 10:14 Lora
Rozbalit Rozbalit vše Re: MySQL možná trigger?
o SQLite jsem také uvažoval,ale - časem, do nazimy, možna přidal webové rozhrani běžící na lighttpd asi by to šlo i s sqlite,ale s MySQL asi lepe - k Mysql databazi lze přistupovat přes LAN, někdy se může hodit, jasne i k sqlite , přesněji raspberry lze přistoupúit přes SSH a zkopirovat si soubor s databazi. -bude i verze publikující dats ns webu, kde web server běží na PC ve stejné siti a tak tak jako tak pojede MySQL, přišlo mi konzistentnější použít ho i zde ale sám ještě 100% nejsem rozhodnut i když MySQL zatím vede.
4.6.2019 14:57 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Jde o to, že SQLite je k SD kartě poněkud šetrnější, je na ni optimalizováno. Místo kopírování souboru s databází bych ji raději exportoval, což konzolová nadstavba sqlite3 také umí.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.6.2019 14:59 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možná by se pro tento účel hodil RRDTool, který byl k podobným účelům stvořen.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.6.2019 19:36 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj

Ja bych asi nepouzil trigger, ale proceduru a vyvolaval ji z cronu konzolovym klientem. Vyresi to i ulozeni pri shutdownu PC.

Jak je to s shutdownem mysql nevim, ale predpokladam, ze to nejak navazet pujde - predstavuju si, ze server vyvola nejaky "trigger", kterym si spustis svoji proceduru.
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
4.6.2019 20:14 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Jak je to s shutdownem mysql nevim, ale predpokladam, ze to nejak navazet pujde.
Například v systemd unitě, stačí vyplnit příkaz, který se má provést při shutdown.
-- OldFrog
4.6.2019 21:11 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Nemel jsem na mysli shutdown "zvenku", tam je celkem jasne, ze pred prikazem pro zastaveni servery by bylo ono zavolani procedury.

Slo mi o situaci, kdy se z nejakeho duvodu server sam rozhodne, ze se zastavi.

Samozrejme pokud nejak jednoduse lze proceduru vyvolat "zevnitr" serveru, neni problem cele ukoncovani osetrit timto.
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
4.6.2019 19:56 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: MySQL možná trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udělal bych dvě tabulky se stejnou strukturou, jednu memory a druhou innodb. Pak bych periodicky volal něco jako:
INSERT INTO table2
SELECT * FROM table1
WHERE condition; 
V podmínce bych vybral data, která je potřeba zapsat. Pak to obalíte transakcí a v ní můžete přenesená data z memory i odmazat.

Trigger se typicky spouští při operaci nad tabulkou, šlo by tedy při vkládání záznamu do memory tabulky kontrolovat počet záznamů v této tabulce a pokud překročí určitý počet nebo časové rozpětí, pak vložit nový záznam a všechny záznamy rovnou přenést do innodb tabulky, promazat a hotovo. Ale bude to trochu zpomalovat zápis.

V triggeru můžete jen volat proceduru, do které umístíte logiku výše nastíněných operací. Tuto proceduru pak můžete snadno zavolat před zastavením Mysql. Stejný kód by se pak provedl při překročení zápisů do memory tabulky i při zastavení databáze.

Mysql svůj myslím vlastní plánovač (cron) nemá. Řešil bych systémovým cronem a skriptem na dva řádky.

Jak hodně to pomůže zápisům na kartu nedokážu odhadnout. Nejspíš existují pro daný účel specializovaná řešení, pohledejte jak to dělají kolegové či konkurence. Na pouhé pasivní ukládání údajů ze senzorů je Mysql zbytečně složitá.
-- OldFrog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.