Aktywne Wpisy
![WielkiNos](https://wykop.pl/cdn/c3397992/WielkiNos_dTiY14auZf,q60.jpg)
WielkiNos +296
Facet, któremu porno, filtry i zdjęcia instagramowych klonów z plastikowymi rzęsami i napompowaną mordą sprały mózg kiedy widzi naturalną 46 letnią kobietę:
![WielkiNos - !#logikaniebieskichpaskow #rozowepaski #pieklokobiet #bekazpodludzi #milf...](https://wykop.pl/cdn/c3201142/8a733471bed8fa96dd55560a41e42951acc3c1400ac4c21c51c7b386b26104d4,w150.jpg?author=WielkiNos&auth=d4732655a1371074ce94e51144468384)
źródło: temp_file297595528974852229
Pobierz![jarzywniak](https://wykop.pl/cdn/c3397992/jarzywniak_dk03x1XqoX,q60.jpg)
jarzywniak +1065
Widzieliście tę reklamę Lidla? Leci przed meczami EURO i w przerwach... nic specjalnego, reklama jak reklama ALE! w tle leci muzyka mojego zespołu (The Bullseyes — "Yet There's You")
#chwalesie bo Lidl wybrał naszą piosenkę, kupił licencję i nawala reklamą w całej Europie.
Po latach grania "zagranicznego" rocka wreszcie dzieje się coś ciekawego xd
...z tej okazji robię #rozdajo
Wśród plusujących wylosuję 10 osób, do których wyślę nasz nowy album POLISH
#chwalesie bo Lidl wybrał naszą piosenkę, kupił licencję i nawala reklamą w całej Europie.
Po latach grania "zagranicznego" rocka wreszcie dzieje się coś ciekawego xd
...z tej okazji robię #rozdajo
Wśród plusujących wylosuję 10 osób, do których wyślę nasz nowy album POLISH
![jarzywniak - Widzieliście tę reklamę Lidla? Leci przed meczami EURO i w przerwach... ...](https://wykop.pl/cdn/c3201142/e9ac57159e6fafe4410c37871471cb5191e7283e8c8f978b8c0552b877bd7269,w150h100.jpg?author=jarzywniak&auth=550594748f6fee10f2f5b599a4543251)
Aktualna struktura jaką wymyśliłem:
Tabele:
wssensors - tabela z nazwami i opisami czujników
wstemperature - tabela dla danych z czujników temperatury
wshumidity - tabela dla danych z czujników wilgotności
wspressure - tabela dla danych z czujników ciśnienia
Struktura tabel:
**ws_sensors**
id, dateinsert, datemodify, sensorname, sensordescription
**ws_temperature**
id, dateinsert, sensorid, temperature, read_key
**ws_humidity**
id, dateinsert, sensorid, humidity, temperature, heatindex, dewpoint, read_key
**ws_pressure**
id, dateinsert, sensorid, pressure, altitude, sealevel, readkey
Kolumna **read_key** ma być indywidualnym unikalnym kluczem (np. guid, guid+timestamp albo coś) odczytu w którym pobrano dane z czujnika. Klucz ma być generowany przy każdym odczycie danych z czujnika. Pozwoli to na ustalenie jakie dane zostały uzyskane ze stacji meteo w danym odczycie oraz na pobranie odczytanych danych dla wybranego klucza ze wszystkich tabel czyli ich powiązania, że w danym odczycie zostały pobrane właśnie takie dane. Czyli pobieram z czujnika dane i generuje klucz odczytu np. [klucz-12345-czulk], dodaję do bazy danych pobrane dane i wpisuję przy każdym wpisie w kolumnie readkey klucz [klucz-12345-czulk]. Robię takich odczytów np. 100 i każdy z nich dostaje innych klucz readkey i teraz gdy potrzebuję sprawdzić jaki był np. pierwszy odczyt temperatury danego dnia to wyszukuje w bazie w tabeli temperatur dany dzień i pobieram wszystkie dane powiązane relacyjnie dla klucza [klucz-12345-czulk].
Jednakże coś mi tutaj nie pasuje (optymalizacja, wyszukiwanie, przechowywania itp.) i myślę nad tym, że powinienem dodać 5 tabele np. **ws_readings**, w której bym przechowywał datę odczytu i klucz odczytu i wg. tej tabeli wyszukiwał i tworzył relacje pomiędzy pozostałymi tabelami z danymi, w których readkey to by było jedynie ID rekordu wpisu w tabeli wsreadings.
Struktura **ws_readings**
id, dateinsert, readkey
W takiej strukturze kolumna read_key w pozostałych tabelach nie będzie zawierała klucza [klucz-12345-czulk] tylko ID wpisu z kluczem w tabeli ws-readings czyli jakiś numer wpisu np. 233, który zawiera dany klucz read-key. Czyli przykładowo relacja będzie tutaj ws-readings [ID] <--> read-key-id (tym samym nazewnictwo kolumny w pozostałych tabelach zmienione zostanie na read-key-id ;) ).
Na pierwszy rzut oka zminimalizuje to nieco wielkość tabel/bazy jak się zdaje (bo nie będę przechowywać pełnego klucza w każdym rekordzie) oraz pozwoli łatwiej wyszukiwać dane (**ws_readings**zawiera datę odczytu oraz klucz danych z którym należy powiązać dane z pozostałych tabel co da nam pełne dane odczytane w danym momencie ze stacji).
Generowanie klucza read_key jak już wspomniałem to może być guid+timestamp (timestamp może być np. kodowany przez base64) aby wyeliminować możliwość zduplikowania klucza albo może będę wrzucą tylko timestamp lub go kodować przez base64. Timestamp nie powinien się raczej nigdy powtórzyć, bo samo pobranie danych z czujnika zajmie co najmniej 2 sekundy, a odczyty mają być robione co 5 min. Obecnie to jest najmniejszy problem jak będzie wyglądać klucz.
Przy stacji meteo będzie dość dużo wpisów jak wiadomo. Obecny prototyp stacji meteo, który posiadam (odczyt tylko temperatur z czujników) zapisuje dane do bazy SQLite (plik bazy obecnie waży 23,2MB i posiada 423969 rekordów). Dane odczytywane są i będą co 5 minut czyli tak jak to jest w przypadku obecnego prototypu.
Z tabel **wstemperature, wshumidity, ws_pressure** mogę usunąć kolumnę date_insert na dobrą sprawę, bo data odczytu będzie w takim przypadku przechowywana w tabeli **ws_readings**. Jednakże bez tabeli wsreadings nigdy nie będzie wiadomo kiedy dany odczyt został wykonany. Tym samym wsreadings staje się mega ważną tabelą.
Zdaje się mi, że takie rozwiązanie z wykorzystaniem 5 tabel (**wssensors, wstemperature, wshumidity, wspressure, ws_readings**) będzie dobre?
#sql #programowanie #projektowanie #postgresql #pogoda
@mwwilk: guid jest wystarczająco unikalny :>