"Bedingte" Tabelle erstellen

christofj

Fleissiger Benutzer
Beiträge
55
Hallo zusammen,

kann man eine "bedingte" Tabelle erstellen?
Folgendes Problem stellt sich:

Ich habe viele einzelne Anlagen. Jede dieser Anlagen sind wiederum mit vielen einzelnen Sensoren ausgestattet.
Die Anlagen sind baugleich, die Sensoren überwachen verschiedene baugleiche Komponenten der Anlage.
Pro Überwachungszyklus werden pro Sensor 1000 Werte erfasst. Bei einer Anlage mit 10 Sensoren ergibt das 10.000 Einträge in der Tabelle. Wenn ich jetzt 1000 Anlagen in der DB habe, gibt das eine recht lange Tabelle "Sensorwerte".

Nur möchte ich für jede Anlage eine eigene Tabelle "Sensoren_Sensorwerte" erstellen, wenn neue Anlagen in die DB aufgenommen werden.
Gibt es eine Möglichkeit eine Tabelle zu erstellen wenn ein neuer Anlagendatensatz angelegt wird?

Die neue Tabelle soll sich auf eine weitere Tabelle beziehen in der Referenzwerte abgelegt sind. Diese Beziehung würde ich dann mit einer Zwischentabelle herstellen (n--m).

Danke vorab.
 
Werbung:
Wozu? Wovor fürchtest Du Dich? Vor der Datenmenge? Die ist der Datenbank herzlich egal. Ob da jetzt 100 Werte, 10.000 Werte oder Millionen Werte in einer Tabelle drin sind, ist herzlich egal wenn sie richtig designed ist.
 
Hallo,

in der Tabelle möchte ich nur aktuelle Werte festhalten. Das heißt ein Sensor sendet die Werte an die DB. Jeder Wert von den 1000 Werten repräsentiert einen Messpunkt. Wenn der Sensor erneut Werte übermittelt, übermittelt er nur Werte welche von der vorherigen Messung abweicht. Jetzt muss ich zuerst meine Liste nach der Sensor ID und dem Messpunkt durchsuchen um dann den neuen Wert einzutragen.
In der Summe fallen immer Daten von zwei Sensoren (á 3-Achsen) an. Genaugenommen sind es im schlechtesten Fall 3x1000x2 Werte innerhalb von 4sec. pro Anlage.
Ich habe Bedenken das, dass durchsuchen der Liste und dann das anschließende Einfügen ab einer größeren Anzahl von Anlagen zum Nadelöhr werden kann.
 
Du darfst Dir einen Datenbankserver nicht so vorstellen, dass er jetzt wie in einem Buch eine Seite nach der anderen durchblättern muss um die Sensor-ID und den Messpunkt zu finden (sequentiell also) - nein, das geht in Sekundenbruchteilen und erfordert (wenn überhaupt) nur einen einzigen Datenträgerzugriff.

Wenn Du jetzt das Datenbankdesign verpfuschst wirst Du das die nächsten Jahre bitter bereuen.
 
Hallo zusammen,

kann man eine "bedingte" Tabelle erstellen?
Folgendes Problem stellt sich:

Ich habe viele einzelne Anlagen. Jede dieser Anlagen sind wiederum mit vielen einzelnen Sensoren ausgestattet.
Die Anlagen sind baugleich, die Sensoren überwachen verschiedene baugleiche Komponenten der Anlage.
Pro Überwachungszyklus werden pro Sensor 1000 Werte erfasst. Bei einer Anlage mit 10 Sensoren ergibt das 10.000 Einträge in der Tabelle. Wenn ich jetzt 1000 Anlagen in der DB habe, gibt das eine recht lange Tabelle "Sensorwerte".

Nur möchte ich für jede Anlage eine eigene Tabelle "Sensoren_Sensorwerte" erstellen, wenn neue Anlagen in die DB aufgenommen werden.
Gibt es eine Möglichkeit eine Tabelle zu erstellen wenn ein neuer Anlagendatensatz angelegt wird?

Die neue Tabelle soll sich auf eine weitere Tabelle beziehen in der Referenzwerte abgelegt sind. Diese Beziehung würde ich dann mit einer Zwischentabelle herstellen (n--m).

Danke vorab.


Prinipiell hat @Walter Recht. Mir stellen sich aber einige Fragen:

  • welche Version von PG ist im Einsatz?
  • werden Daten strikt nur geschrieben, oder gibt es auch Updates?
  • wann werden Daten gelöscht? Nach fester Zeit?

Hintergrund meiner Fragen sind so Gedanke wie:

  • PG ab 10 hat deklarative Partitioning, welche mit PG11 nochmals *deutlich* besser wird. Das kann Abfragen massiv beschleunigen
  • BRIN-Indexe können extrem helfen, wenn bestimmte Bedingungen gelten
  • Partitioning kann auch helfen, alte Daten zu löschen OHNE Bloat zu hinterlassen

Vielleicht sucht ihr auch mal professionelle Beratung für sowas? Wir können helfen ;-)
 
  • welche Version von PG ist im Einsatz?
  • werden Daten strikt nur geschrieben, oder gibt es auch Updates?
  • wann werden Daten gelöscht? Nach fester Zeit?

Ich benutze PG 10.
Die Daten werden dann upgedatet wenn der Sensor einen Wert ermittelt den er noch nicht an die DB gesendet hat.
Gelöscht werden die Daten in dieser Tabelle nicht, sie werden nur überschrieben unter der Bedingung: SensorID & Messpunkt gleich der eingegangen SensorID & Messpunkt.

Zuerst möchte ich ein solides Grundgerüst erstellen mit dem ich die ersten paar hundert Anlagen überwachen kann, dann komme ich auf das zurück:
Vielleicht sucht ihr auch mal professionelle Beratung für sowas? Wir können helfen ;-)

Danke für die Infos
 
Ich benutze PG 10.
Die Daten werden dann upgedatet wenn der Sensor einen Wert ermittelt den er noch nicht an die DB gesendet hat.
Gelöscht werden die Daten in dieser Tabelle nicht, sie werden nur überschrieben unter der Bedingung: SensorID & Messpunkt gleich der eingegangen SensorID & Messpunkt.


Okay, dann wächst die Tabelle ja eher nicht, zumindest nicht von der Anzahl der sichtbaren Datensätze. Wenn da sehr viele Updates sind wird es u.U. Probleme mit Bloat geben, aber das ist beherrschbar. BRIN-Indexe sind dann auch eher nicht optimal, aber das sollte auch kein Problem sein (die lohnen eh erst so richtig bei Tabellen im TB-Bereich, da kommt ihr sicher nicht hin). Passende Indexe und das sollte alles laufen. EXPLAIN und das Kostenmodell von PG sind bekannt?
 
Nein kenne ich noch nicht.

Uhm.

Wenn PG eine Abfrage bekommt, erstellt es verschiedene Abfragepläne (welche Indexe, welche JOIN-Reihenfolge, ...), bewertet diese mit Kosten (wie viele Plattenzugriffe etc. sind nötig) und wählt den 'billigsten' aus. Das kann man sich via EXPLAIN anschauen. Auf diese Art und Weise kann man z.B. fehlende Indexe oder falsche Speichereinstellungen erkennen.

Beliebtes Thema für Onsite-Workshops *zwinker*
 
Werbung:
Zurück
Oben