Article View: pl.comp.bazy-danych
Article #195550Re: struktura bazy do zbierania danych z czujników
From: irq
Date: Sat, 10 Feb 2018 20:13
Date: Sat, 10 Feb 2018 20:13
65 lines
5747 bytes
5747 bytes
Kolego, odniosłem wrażenie, że czepiasz się sczegółów, jakbyś chciał mnie przeegzaminować. Jeżeli naprawdę tego chesz i się postarasz, to zapewniam Cię, że obleję. Przykłady które napisałem, nie są projektem, a lużną ilustracją. Ponieważ zadałeś pytania i piszemy publicznie, poniżej odpowiadam, choć nie mam ochoty angażować się w utarczki.
W dniu sobota, 10 lutego 2018 19:14:09 UTC+1 użytkownik geos napisał:
> On 10.02.2018 19:02, irq wrote:
> > Definicja tabeli próbek danych mogłaby być taka jak:
> >
> > CREATE TABLE data_sample (
> > id bigserial PRIMARY KEY,
> > dt timestamp,
> > sensor_id integer, -- albo text? - prawdopodobnie powtórzenie któregoś elementu z sample - celowy nadmiar dla usprawnienia agregacji i dostępu
> > sample json -- albo jsonb - i tutaj dowolna struktura
> > );
>
> a taka byłaby niedobra?
>
> CREATE TABLE data_sample (
> sensor_id ..
> , dt timestamp default systimestamp
> , wielkość_fizyczna varchar2(..)
> , value varchar2(..) )
byłaby równie dobra, a przede wszystkim uniwersalna. Uczepiłem się postgresa, bo autor wątku wymienił go pośród preferowanych systemów. A skoro jest w nim typ json, z całym zestawem stojących za nim funkcji i operatorów (np. sample->'wielkość_fizyczna') to zaproponowałem właśnie ten typ.
>
> po co w swojej tabeli masz id skoro jest naturalny klucz główny
> (sensor_id, dt)?
czytałem w jakieś książce o relacyjnych bazach danych, że naturalne klucze główne są niedobre. Nie pamiętam szczegółów, pamiętam zasadę o przynajmniej starannym rozważeniu takiej decyzji. Jednak to co piszesz może mieć sens, a książka którą czytałem mało wybitna. Niewykluczone więc, że po wnikliwej analizie można podjąć decyzję projektową o zastosowaniu (sensor_id, dt) jako klucza głównego.
>
> > "dt" oraz "sensor_id" są uchwytami do modelu relacyjnego i przetwarzania danych w kierunku ich przygotowania do raportowania. "sample" zawiera całą pozostałą, nie w pełni zdefiniowaną jeszcze, zawartość danych.
>
> co to jest "uchwyt do modelu relacyjnego"? przeczytałem kilka książek o
> bazach relacyjnych
Bez złośliwości - czy mógłbyś podać tytuły? Na pewno nie o każdej słyszałem, więc pewnie skorzystam. Czy którąś szczególnie polecasz?
> ale nie spotkałem się z takim określeniem.
też go nie spotkałem, a wymyśliłem go doraźnie, dla zwięzłości, chcąc oddać sens rozgraniczenia pomiędzy "częścią relacyjną" a "częścią nierelacyjną" "modelu hybrydowego", który wyłonił się w toku rozwoju dyskusji. Nie pytaj mnie, proszę, o sens tych określeń i nie wyszukuj ich wystąpień w literaturze, bo prawdopodobnie ich tam nie ma. Zauważ jednak, że pojawiła się tutaj jakby próba połączenia dwóch tradycyjnie skonfliktowanych światów SQL i NoSQL i problem z terminologią jakiej by w tych rozważaniach można było użyć.
Dla (nieformalnej) ilustracji tego "uchwytu" i w nawiązaniu do "tablicy ewidencji czujników", o której pisałem wcześniej:
CREATE TABLE sensor (
id serial PRIMARY KEY, -- nie pytaj
sensor_id integer , -- a może text?
start timestamp , -- kiedy zainstalowany
stop timestamp DEFAULT 'infinity', -- kiedy zabrany
location text, -- "jakiś adres, albo współrzędne"
);
Działanie owego "uchwytu" można wyrazić poprzez:
SELECT d.dt,
d.location,
s.sample->'temperatura' AS temperatura,
s.sample->'wiatr' AS wiatr
FROM data_sample d
JOIN sensor s
ON d.sensor_id = s.sensor_id
AND d.dt BETWEEN s.start AND s.stop
Ponownie - nie aspiruje ten przykład do bycia optymalnym ani niekoniecznie obrazuje złączenie z całą tabelą data_sample. To ilustracja.
Przepraszam za nadużycie skrótu myślowego.
Technical Details
Message-ID:
<f8c91030-4efd-4f83-bf53-68d9f14d5372@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!o66no385364ita.0!news-out.google.com!s63ni820itb.0!nntp.google.com!w142no385168ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<p5an7s$eou$1@node2.news.atman.pl> <d33f511a-0c12-4805-abd0-06577cabc391@googlegroups.com> <5a7c85c5$0$671$65785112@news.neostrada.pl> <8689e094-71f6-4189-86ef-0e9bf74ce2a1@googlegroups.com> <5a7da595$0$670$65785112@news.neostrada.pl> <bfecb350-16cc-4b59-8a3d-68cf4972fb55@googlegroups.com> <5a7f1c60$0$676$65785112@news.neostrada.pl> <95d9656f-cca4-400a-bd81-5ba4bad843bc@googlegroups.com> <5a7f366f$0$576$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
X-Received: by 10.107.150.67 with SMTP id y64mr5375409iod.107.1518293612162; Sat, 10 Feb 2018 12:13:32 -0800 (PST) X-Received: by 10.157.87.132 with SMTP id q4mr272338oth.2.1518293611926; Sat, 10 Feb 2018 12:13:31 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!o66no385364ita.0!news-out.google.com!s63ni820itb.0!nntp.google.com!w142no385168ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.bazy-danych Date: Sat, 10 Feb 2018 12:13:31 -0800 (PST) In-Reply-To: <5a7f366f$0$576$65785112@news.neostrada.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.28.125.218; posting-account=HsGcpQoAAABR8eqXdcgZHaZMq6uPUZY5 NNTP-Posting-Host: 83.28.125.218 References: <p5an7s$eou$1@node2.news.atman.pl> <d33f511a-0c12-4805-abd0-06577cabc391@googlegroups.com> <5a7c85c5$0$671$65785112@news.neostrada.pl> <8689e094-71f6-4189-86ef-0e9bf74ce2a1@googlegroups.com> <5a7da595$0$670$65785112@news.neostrada.pl> <bfecb350-16cc-4b59-8a3d-68cf4972fb55@googlegroups.com> <5a7f1c60$0$676$65785112@news.neostrada.pl> <95d9656f-cca4-400a-bd81-5ba4bad843bc@googlegroups.com> <5a7f366f$0$576$65785112@news.neostrada.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <f8c91030-4efd-4f83-bf53-68d9f14d5372@googlegroups.com> Subject: Re: struktura bazy do zbierania danych z czujników From: irq <ipluta62@gmail.com> Injection-Date: Sat, 10 Feb 2018 20:13:32 +0000 Lines: 105 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit