Zum Hauptinhalt springen

Datenbankmodell

Dokumentation darüber, wo und in welcher Form die Plattform Daten speichert. Sie wird herangezogen, um Backup-Bereiche festzulegen, direkte Abfragen durchzuführen oder Aufbewahrungsdauern anzupassen.

Nicht nur eine Art

Die Plattform nutzt unterschiedliche Speicher je nach Datentyp (polyglot persistence). Wenn Sie nicht wissen, wo welche Daten liegen, wird Ihr Backup unvollständig.

SpeicherInhaltUmfang
PostgreSQLMasterdaten · Konfiguration · Transaktionen43 Tabellen
Cassandra (pp)Zeitreihen · Ereignisse · Aggregate99 Tabellen
Iceberg (spark.plantpulse)Langzeitarchivierung · Analyse1 Tabelle

PostgreSQL — Masterdaten und Konfiguration

Hier werden relationale Daten gespeichert. Schemänderungen werden von Flyway verwaltet, und die Historie wird unter flyway_schema_history protokolliert.

Tabellennamen haben überwiegend mm_ Präfixe (master/meta) — insgesamt 36.

GruppeTabellen
Organisation · Anlagemm_company · mm_site · mm_asset_tree · mm_asset_type · mm_asset_status · mm_asset_statement · mm_asset_statement_plugin
Erfassungsdefinitionenmm_opc · mm_tag · mm_point · mm_scada
Alarmemm_alarm · mm_alarm_config · mm_alarm_recieve_users
Ereignisse · Triggermm_event · mm_event_attributes · mm_trigger · mm_trigger_attributes
Produktionmm_order · mm_order_flow · mm_order_oee · mm_oee · mm_product · mm_shift · mm_calendar · mm_calendar_type
Personen · Partnermm_employee · mm_customer
Dashboards · Abfragenmm_dashboard · mm_graph · mm_statement · mm_query_history
Sicherheitmm_security · mm_token · user_login · user_login_session
Sonstigesmm_blob · mm_metadata · metadata · version · version_history · dual
Schreibweise von mm_alarm_recieve_users

Es ist recieve, nicht receive. Der Tippfehler hat sich im Schema verfestigt; Sie müssen ihn beim Schreiben von Abfragen genau so übernehmen.


Cassandra — Zeitreihen und Ereignisse

Der Keyspace heißt pp. Die 99 Tabellen teilen sich in zwei Kategorien auf.

PräfixAnzahlBedeutung
tm_91Zeitreihen · Aggregate · Statistiken (time series measurement)
ts_8Interne Struktur der Universal-Zeitreihen-Engine

tm_ unterteilen sich weiter nach Ziel — Tags 32 · Anlagen 22 · System 6 · Monitore 6 · Optionen 5 · OPC 5 · Standorte 3 · blob 3 usw.

Kernelle Tabelle — tm_tag_point

Dies ist der Speicherort für Roherfassungswerte. Die meisten anderen Tag-Tabellen sind Ableitungen davon.

PRIMARY KEY (tag_id, timestamp)
WITH CLUSTERING ORDER BY (timestamp DESC)
MerkmalWert
Partitionsschlüsseltag_id — ein Tag pro Partition
Clusteringtimestamp absteigend — neueste Einträge zuerst zu lesen ist Standard
Standard-TTL5356800 Sekunden = 62 Tage
CompactionUnifiedCompactionStrategy (Cassandra 5.0+)
IndizesSAI (Storage Attached Index) auf asset_id · opc_id
Warum gibt es static-Spalten?

site_id · asset_id · line_id · area_id · opc_id · tag_name · type sind static. Innerhalb einer Partition (= ein Tag) haben sie denselben Wert, daher wird dieser pro Partition nur einmal gespeichert. Sie werden nicht bei jedem Datenpunkt wiederholt, was Speicherplatz erheblich spart.

Abgeleitete Tabellen — vorberechnet

Cassandra macht Laufzeit-Aggregation teuer, daher werden Aggregate bereits beim Schreiben vorberechnet. Das erklärt die hohe Tabellenzahl.

KategorieBeispiele
Aggregatetm_tag_point_aggregation_{1,5,10,30}_minutes · _1_hours
Samplingtm_tag_point_sampling_{10,30}_seconds · _{1,5,10,30}_minutes · _1_hours
Zählertm_tag_point_count · _by_date · _by_opc · _by_site
Qualität · Validierungtm_tag_point_validation · _by_timestamp · _validation_count
KI-Analysetm_tag_point_anomalies · _forecasts
Snapshots · Archivierungtm_tag_point_snapshot · tm_tag_point_archive

Alarme folgen demselben Muster — tm_tag_alarm und _count · _count_by_date · _count_by_opc · _count_by_site · _duration · _on.

Löschen Sie Aggregattabellen nicht direkt

Sie werden nicht aus den Rohdaten rekonstruiert. Wenn Sie sie löschen, werden Dashboards und Berichte für diesen Zeitraum leer, und Wiederherstellung ist nur aus dem Backup möglich.


Iceberg — Langzeitarchivierung

Daten, die das Cassandra-TTL (62 Tage) überschreiten, werden in Objektspeicher für Analyse gestapelt.

ElementWert
Katalogspark.plantpulse
Tabelletm_tag_point_warehouse
Partitionierungsite_idyearmonthday
FormatIceberg v2 (row-level delete unterstützt)
KompressionZstandard
AusführungSpark SQL
Daten älter als 62 Tage suchen

Sie sind nicht in Cassandra. Abfrage auf der Iceberg-Seite → Analyseschicht.


Häufig übersehene Backup-Punkte

Die drei Speicher sind jeweils Backup-Ziele. Manche sichern nur PostgreSQL und denken, das reicht – aber dann fehlen alle Zeitreihen.

SpeicherFolge des Ausfalls
PostgreSQLAnlagen- und Tag-Definitionen, Benutzer und Dashboards verschwinden
CassandraAktuelle 62 Tage Daten verschwinden
Iceberg / ObjektspeicherLangzeithistorie verschwindet

Das Verfahren finden Sie unter Backup und Wiederherstellung.


Zugehörige Dokumentation