Avatar billede mjansen Seniormester
10. juni 2021 - 15:54 Der er 7 kommentarer

Pakning af data til Mysql database

Hej

Jeg vil gerne sende data fra min arduino mkr nb 1500, direkte til min database.

Men hvis jeg skriver en alm. insert sting vil data fylde meget:

INSERT INTO table_name (datetime, int)
VALUES
("2021-01-01 00:00", 12450),
("2021-01-01 00:01", 12440),
("2021-01-01 00:02", 12460)

For at spare på de data jeg har vil jeg nøjes med at sende data 1 gang i døgnet, kan jeg pakke data i mit mysql kald?
Avatar billede arne_v Ekspert
10. juni 2021 - 17:01 #1
Hvad mener du med at pakke?

Hvis du kun vil sende en gang i døgnet, så sender du vel kun en gang i døgnet.
Avatar billede mjansen Seniormester
10. juni 2021 - 19:23 #2
Problemet er bare at det fylder mange byte at sende fordi set er en string.

Hvis jeg sende til php som så sendte en SQL string kunne jeg fx nøjes med at sende værdien af int og php kunne så sørge for at starte med datetime ++ hvis du forstår.
Avatar billede arne_v Ekspert
10. juni 2021 - 20:10 #3
Det er ikke åbenlyst for mig hvorfor 50 bytes er et problem. Det burde det ikke være uanset typen af linie.

Men lad os sige at vi ønsker at mindske datastørrelsen.

kode---(SQL)---database

fylder for meget

kode---(HTTP POST)---PHP---database

vil fylde mere. Ganske vis kan du nøjes med at sende den int, men HTTP headere vil fylde mere end SQL.

kode---(TCP socket )---C kode---database
kode---(UDP datagram )---C kode---database

vil virkeligt kunne minimere data. Man vil kunne sende en payload af 2 eller  4 bytes og kun have basal TCP/IP overhead.

Men er det umagen værd??
Avatar billede mjansen Seniormester
10. juni 2021 - 20:25 #4
Jeg har 500kb pr måned.

Jeg har 1440 dataset pr døgn :-) så lidt mere end 50 byte

Giver det mening?
Avatar billede arne_v Ekspert
10. juni 2021 - 22:23 #5
Hvis der er 10 Mbit ethernet tager det ca. 0.5 sekund at flytte 500 KB. Med 100 Mbit ethernet ca. 0.05 sekund. Med 1000 Mbit ethernet ca. 0.005 sekund.

Så nej jeg har stadig ikke set lyset.

Men hvis vi antager at det er en langsom linie hvor det faktisk tager lang tid, så er er noget TCP socket eller UDP datagram kommunijation nok vejen til at spare bytes.
Avatar billede mjansen Seniormester
10. juni 2021 - 22:38 #6
Det er mit NB-IOT abonnement der er på max 500 kilobyte pr. måned. Det er ikke hastigheden.
Avatar billede arne_v Ekspert
11. juni 2021 - 01:32 #7
Ah. Det er en økonomisk begrænsning.

500 KB / (30 * 1440) = 11.6 byte

TCP socket eller UDP datagram !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester