Databasdesign

Diskussioner runt hur den tänkta funktionaliteten nås

Moderator: elf98

Databasdesign

Inläggav Johannabacken » 13 mar 2016, 11:58

Hej,

Skrotar mitt msure system och går till ett raspberry baserat OWFS system.
I samband med det skapar jag en ny mysql-databas men jag kan inte tillräckligt för att veta vilken design som är att föredra.

Vad har ni databaskunniga för tankar om följande två olika upplägg:

A. Många tabeller
Msure's sätt att ha en tabell (som är sensornamnet) per sensor med kolumner [Value] [TimeStamp]

ELLER

B. Två Tabeller
HA's(?) sätt med en sensortabell med [ID] [Namn]
och
EN tabell med all data, exempel [ID][Value][TimeStamp]

Konsekvenser i hanterbarhet, kompliceade söksträngar och performance?

Har 20-tal sensorer, behöver inte ta med de 8 åren av gammal data, har färdig visulaisering för msure's tabellstruktur.

Tacksam för alla synpunkter!
/Johan
Användarvisningsbild
Johannabacken
Wannabe
 
Inlägg: 17
Blev medlem: 05 feb 2011, 17:20
Ort: nacka

Re: Databasdesign

Inläggav MotoX » 11 sep 2017, 21:30

Nu är jag inte särskilt inläst på andra databaser än MySQL men att ha en tabell för varje instans (sensor) lät ju väldigt fel... Det lät liksom inte särskilt systematiskt. :)
För mig är en databas en styrka i att inte behöva upprepa sig mer än nödvändigt genom att låta varje tabell hålla flera rader med i sig likadana instanser. T ex en tabell för brytare, en för relän, en för dimmrar osv. där man kan lägga upp kopplingstabeller mellan dessa tabeller för att säga hur datan, eller instanserna, i systemet hänger ihop.
Säger inte så mycket om hur du praktiskt ska göra i just din applikation, men mina enkla tankar kring vad som är en bra databas och inte. Lycka till!
MotoX
Wannabe
 
Inlägg: 3
Blev medlem: 11 sep 2017, 21:05

Re: Databasdesign

Inläggav kaaswe » 16 sep 2017, 16:49

Båda sätten kan vara rätt. A om det inte blir för många, men B är nog det vanligaste och även Domoticz kör med ID och lagrar sen alla enheter i samma tabell.

Skulle jag byggt det skulle jag kört på B, enklare och snyggare.
kaaswe
Tar hemautomation på allvar
 
Inlägg: 77
Blev medlem: 10 jan 2013, 17:23
Ort: Bjursås

Re: Databasdesign

Inläggav zyber » 21 sep 2017, 22:18

Jag tycker att förslag A låter mindre genomtänkt. Det kräver ju att du ändrar databaslayouten var gång du lägger till eller tar bort en sensor. Extremt osmidigt.

Sen beror det ju också också på vad för data du vill åt. Behöver du verkligen åtta års minutsprecision? Isåfall, kör på det här!

Annars, kanske du vill titta på RRD?
zyber
Tar hemautomation på allvar
 
Inlägg: 60
Blev medlem: 28 mar 2011, 21:27
Ort: Göteborg

Re: Databasdesign

Inläggav Malmgren » 09 okt 2017, 14:05

Håller med ovanstående talare. Kör själv openHAB och databasstrukturen för persistence där bygger på en ny tabell för varje enhet. Jobbar mycket med SQL till vardags och det känns helt bakvänt med alla dessa tabeller som skapas. Nej, en tabell med enheter (som man sedan kan utöka med kolumner som man vill ha mer info om enheterna) och en tabell med mätvärden som refererar till enhetens ID, precis som du beskriver i ditt B-exempel, känns som det vettiga sättet.

/Daniel
Användarvisningsbild
Malmgren
Wannabe
 
Inlägg: 14
Blev medlem: 03 feb 2013, 16:47
Ort: Kölefors, Kinda

Re: Databasdesign

Inläggav dargosch » 13 okt 2017, 11:37

Malmgren skrev:Håller med ovanstående talare. Kör själv openHAB och databasstrukturen för persistence där bygger på en ny tabell för varje enhet. Jobbar mycket med SQL till vardags och det känns helt bakvänt med alla dessa tabeller som skapas. Nej, en tabell med enheter (som man sedan kan utöka med kolumner som man vill ha mer info om enheterna) och en tabell med mätvärden som refererar till enhetens ID, precis som du beskriver i ditt B-exempel, känns som det vettiga sättet.


Jo, det är det vanliga sättet. Men, det finns ju poänger med strukturen en tabell per sensor också. Du lär ju ha ett större (och mindre effektiv) index på en tabell som har alla värden i sig, och du slipper hantera externa referenser (att alla värden som hör till en sensor kanske ska tas bort då om en sensors rad i en annan tabell tas bort).

Kanske är det ett problem att schemat ändras när du lägger till en sensor, men de många databashanterare (alla?) har väl en meta-tabell (tabell som håller reda på alla tabeller) som man kan gå igenom för att hålla koll på sina sensorer.

Jag har inte undersökt sakerna själv, men det slår mig att om databaser för tidsserier generellt verkar lägga data i separata tabeller på något sätt (det är väl typ så man använder RRD, och jag tror också influxDB har den strukturen (men nu är jag verkligen i tro-lådan och rotar)) så tänker jag att det kan vara bra att i alla fall fundera på om det finns vinster man missat. Speciellt om du vill hantera minut-data för 8 år..
dargosch
Tar hemautomation på allvar
 
Inlägg: 219
Blev medlem: 26 aug 2015, 09:37
Ort: Holmsund

Re: Databasdesign

Inläggav Malmgren » 13 okt 2017, 14:31

dargosch skrev: Speciellt om du vill hantera minut-data för 8 år..


Hmmm, ja det är klart. Måste erkänna att jag mest resonerat ur hanteringssynpunkt, att det är mycket smidigare med allt i en tabell. Men du har verkligen en poäng där att börjar man komma upp i några miljoner rader så är det nog en poäng i att dela upp det i en databas per enhet. Kanske ska vara tacksam att de som har byggt databasstrukturen i openHAB har tänkt till :D

/Daniel
Användarvisningsbild
Malmgren
Wannabe
 
Inlägg: 14
Blev medlem: 03 feb 2013, 16:47
Ort: Kölefors, Kinda


Återgå till Programmering

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 0 gäster