Zum Hauptinhalt springen

Datenbankmodell

Dieses Dokument beschreibt, wo und in welcher Form die Platform Daten speichert. Es dient als Referenz für die Festlegung des Backup-Umfangs, für direkte Abfragen oder bei der Anpassung von Aufbewahrungsdauern.

Kein Einzelspeicher

Die Platform verwendet verschiedene Speicher orthogonal zu den Dateneigenschaften (Polyglot Persistence). Wenn nicht bekannt ist, welche Daten wo liegen, ist das Backup unvollständig.

SpeicherInhaltUmfang
PostgreSQLStammdaten · Konfiguration · Transaktionenpp Schema 169 Tabellen + Vor-Ort App pf Schema
Aster TSDB (pp)Zeitreihe · Events · Aggregationen · KPI125 Tabellen
Iceberg (spark.plantpulse)Langzeitarchivierung · Analyse1 Tabelle

PostgreSQL — Stammdaten und Konfiguration​

Hier werden relationale Daten gespeichert. Schemaänderungen werden über Flyway verwaltet, und die Historie wird in flyway_schema_history_v2 protokolliert.

Die Tabellennamen bestehen zu einem Großteil aus 159 Tabellen mit dem mm_-Präfix (master/meta). Eine vollständige Liste nach Gruppen finden Sie unten.

GruppeRepräsentative Tabellen
Organisation·Anlagemm_asset_tree · mm_enterprise · mm_site · mm_area · mm_line · mm_equipment · mm_asset_class
Erfassungsdefinitionmm_opc · mm_tag · mm_point · mm_edge
Alarmmm_alarm · mm_alarm_config · mm_alarm_delivery · mm_alarm_suppressed · mm_alarm_shelve · mm_alarm_out_of_service
Produktionmm_order · mm_order_oee · mm_product · mm_shift · mm_calendar
Instandhaltung·Ausfallmm_maintenance_order · mm_maintenance_plan · mm_failure_record
Personen·Lieferantenmm_employee · mm_customer
Sicherheitmm_security · mm_token · user_login · user_login_session

Beziehungen — Anlage und Erfassung​

mm_asset_tree In einer Tabelle sind alle fünf Ebenen enthalten: Unternehmen(E) → Site(S) → Bereich(A) → Linie(L) → Anlage(M). Spalten, die auf allen Ebenen existieren (wie Name, Beschreibung, Anlagenklassifizierung, Betriebszustand, externe Nummer), befinden sich ausschließlich im Tree — in mm_site gibt es kein site_name, in mm_enterprise gibt es kein enterprise_name. Ebenenspezifische Spalten liegen in 1:1 Erweiterungstabellen(mm_enterprise · mm_site · mm_area · mm_line · mm_equipment) und werden gelöscht, wenn die entsprechende Tree-Zeile entfernt wird.

RegelUmsetzung
Parent ist die Ebene direkt darüber; ab Bereich ist die Site identischFremdschlüssel fk_mm_asset_tree_parent · fk_mm_asset_tree_parent_site
Nur Unternehmen ist die Wurzel; Unternehmen hat kein site_id; Site site_id ist sich selbstCHECK-Constraint
ID-Format pro Ebene — offizielles Präfix oder altes ASSET_CHECK chk_asset_id
Spalten nur für Anlagen (Workorder, Instandhaltung, Kalender etc.)Fremdschlüssel auf mm_equipment

Die Standortpfade werden über die View mv_path bereitgestellt — pro Knoten asset_type · depth(Unternehmen 0 ~ Anlage 4) · enterprise_id · site_id · area_id · line_id · equipment_id · id_path · name_path.

Beziehungen — Alarm​

Beziehungen — Produktion und Benutzer​

Integrität durch Fremdschlüssel

Die oben genannten Beziehungen sind größtenteils als Fremdschlüssel definiert. Ein direktes DELETE referenzierter Zeilen wird daher abgelehnt oder führt je nach Tabelle zu einem Kaskadenlöschvorgang (ON DELETE CASCADE). Nutzen Sie für Löschvorgänge die Benutzeroberfläche oder die REST API.

Gesamte Tabellen (169)​

GruppeTabellen
Organisation·Anlage (29)mm_area · mm_area_function · mm_asset_class · mm_asset_class_iso_class · mm_asset_connection_status · mm_asset_document · mm_asset_health_status · mm_asset_layout · mm_asset_plan_generation · mm_asset_plan_segment · mm_asset_qr_access_audit · mm_asset_qr_token · mm_asset_relation · mm_asset_standard_profile · mm_asset_status · mm_asset_tree · mm_asset_type · mm_canvas · mm_enterprise · mm_equipment · mm_equipment_criticality · mm_image · mm_line · mm_line_kind · mm_operational_status · mm_site · mm_stats_site · mm_stats_system · mm_status
Erfassungsdefinition (11)mm_edge · mm_edge_status_snapshot · mm_opc · mm_opc_connection_status · mm_opc_latency_status · mm_opc_protocol · mm_opc_source_type · mm_point · mm_tag · mm_tag_java_type · mm_tag_type
Alarm (16)mm_alarm · mm_alarm_cause · mm_alarm_config · mm_alarm_config_recipient · mm_alarm_config_revision · mm_alarm_delay · mm_alarm_delivery · mm_alarm_label_revision · mm_alarm_notification · mm_alarm_out_of_service · mm_alarm_resolution_guide · mm_alarm_resolution_guide_cause · mm_alarm_shelve · mm_alarm_signal_gap · mm_alarm_suppressed · mm_tag_alarm_recipient
Anlagenbefehl·Statement (13)mm_asset_command · mm_asset_command_revision · mm_asset_statement · mm_asset_statement_deployment · mm_asset_statement_plugin · mm_asset_statement_revision · mm_command_area · mm_command_execution · mm_command_execution_event · mm_command_switch · mm_command_switch_audit · mm_event · mm_event_attributes
Produktion (35)mm_calendar · mm_calendar_revision · mm_calendar_type · mm_defect_cause · mm_defect_record · mm_defect_record_revision · mm_holiday · mm_order · mm_order_ems · mm_order_flow · mm_order_note · mm_order_oee · mm_order_pause · mm_order_performance · mm_order_progress · mm_order_quantity_correction · mm_order_quantity_correction_revision · mm_order_ram · mm_order_revision · mm_process_segment · mm_process_segment_asset · mm_product · mm_product_route · mm_product_standard_profile · mm_production_target · mm_shift · mm_shift_override · mm_shift_pattern · mm_shift_pattern_asset · mm_shift_pattern_slot · mm_shift_schedule_revision · mm_shift_slot_break · mm_stop_cause · mm_stop_reason · mm_stop_reason_revision
Instandhaltung·Ausfall (25)mm_failure_record · mm_failure_record_change · mm_failure_record_label · mm_failure_record_link · mm_fault_cause · mm_fault_cause_alarm_cause · mm_fault_code_map · mm_fault_code_map_history · mm_iso_detection_method · mm_iso_equipment_category · mm_iso_equipment_class · mm_iso_failure_cause · mm_iso_failure_mechanism · mm_iso_failure_mode · mm_iso_failure_mode_class · mm_iso_maintainable_item · mm_iso_maintainable_item_class · mm_iso_maintenance_activity · mm_maintenance_attachment · mm_maintenance_code_map · mm_maintenance_code_map_history · mm_maintenance_order · mm_maintenance_order_revision · mm_maintenance_plan · mm_maintenance_plan_revision
Personen·Lieferanten (10)mm_app_account · mm_app_account_audit · mm_app_account_revision · mm_app_account_scope · mm_customer · mm_employee · mm_employee_audit · mm_employee_emergency_contact · mm_employee_photo · mm_employee_qualification
Flow (5)mm_flow · mm_flow_health_status · mm_flow_link · mm_flow_node · mm_flow_snapshot
Sicherheit (3)mm_security · mm_security_asset_scope · mm_token
Sonstiges (22)mm_blob · mm_config · mm_diagnostic_code · mm_diagnostic_state · mm_metadata · mm_query_history · mm_reference_external_key · mm_reference_revision · mm_reference_text · mm_report · mm_schedule_fire_log · mm_schedule_watermark · dual · edge_active_flows · flow_snapshots · flyway_schema_history_v2 · metadata · node_component · user_login · user_login_session · version · version_history

Aster TSDB — Zeitreihe und Events​

Der Keyspace ist pp. Die 125 Tabellen teilen sich in zwei Kategorien auf.

PräfixAnzahlBedeutung
tm_117Zeitreihe·Aggregation·Statistik·KPI (time series measurement)
ts_8Interne Struktur der generischen Zeitreihen-Engine

tm_ ist weiter unterteilt nach Objekttyp — Tags (32), KPIs (26), Anlagen (17), Systeme (6), Monitore (6), Optionen (5), OPC (5), Sites (3), Blobs (3) etc.

Kerntabellen — tm_tag_point​

Hier werden die Rohwerte der Erfassung gespeichert. Die meisten anderen Tag-Tabellen sind Ableitungen hiervon.

PRIMARY KEY (tag_id, timestamp)
WITH CLUSTERING ORDER BY (timestamp DESC)
EigenschaftWert
Partition Keytag_id — Ein Tag pro Partition
Clusteringtimestamp absteigend — Standardmäßig neueste Werte zuerst
Standard-TTL315360000 Sek. = 3650 Tage (10 Jahre) — Die Referenzwerte liegen in storage.tag.point.ttl (Aufbewahrungsdauer einstellen)
CompactionUnifiedCompactionStrategy (Cassandra 5.0+ Feature)
IndexSAI (Storage Attached Index) auf asset_id · opc_id
Warum statische Spalten?

Die Spalten site_id · asset_id · line_id · area_id · opc_id · tag_name · type sind statisch. Da sie innerhalb eines Tags (= einer Partition) gleichbleibend sind, werden sie nur einmal pro Partition gespeichert. Dies reduziert den Speicherbedarf erheblich, da sie nicht bei jedem Datenpunkt wiederholt werden.

Abgeleitete Tabellen — Vorberechnung​

Da Aggregationen zum Zeitpunkt der Abfrage in Aster TSDB rechenintensiv sind, werden diese bereits beim Schreiben vorbereitet. Daher gibt es eine hohe Anzahl an Tabellen.

KategorieBeispiel
Aggregationtm_tag_point_aggregation_{1,5,10,30}_minutes · _1_hours
Samplingtm_tag_point_sampling_{10,30}_seconds · _{1,5,10,30}_minutes · _1_hours
Counttm_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
Snapshot·Archivtm_tag_point_snapshot · tm_tag_point_archive

Alarme folgen demselben Prinzip — tm_tag_alarm sowie _count · _count_by_date · _count_by_opc, _count_by_site · _duration · _on.

Aggregationstabellen nicht manuell löschen

Diese Daten werden nicht automatisch aus den Rohdaten regeneriert. Bei einer Löschung bleiben Bildschirme und Berichte für diesen Zeitraum leer; eine Wiederherstellung ist nur über Backups möglich.

KPI-Tabellen — OEE · RAM · EMS​

Anlagen-KPIs (OEE · RAM · EMS) werden in 26 Tabellen gespeichert, die mit tm_kpi_ beginnen — domänenspezifisch unterteilt in tm_kpi_oee_* · tm_kpi_ram_* · tm_kpi_ems_*. Ein Calculation Job berechnet die Werte pro Anlage etwa alle 10 Sekunden.

Alte Tabellen tm_asset_oee* · tm_asset_ram* · tm_asset_ems* existieren nicht mehr

KPIs werden nur noch in den neuen Tabellen geschrieben. Abfragen und Berichte, die auf alten Namen basieren, müssen an die neuen Tabellen und Partition Keys angepasst werden. Da sich der Key geändert hat, führen alte Filterbedingungen nicht zu Fehlern, sondern zu leeren Ergebnissen, die nicht von einem «Keine Daten»-Status unterscheidbar sind.

Die Tabellen sind nach ihrer Funktion in vier Kategorien unterteilt:

KategorieNamePrimärschlüsselBedeutung einer Zeile
Aktueller Werttm_kpi_*_current(asset_id)Aktueller Wert der Anlage — eine Zeile pro Anlage, bei jeder Berechnung überschrieben
Pro Auftragtm_kpi_oee_order · tm_kpi_ems_order(order_id)Wert eines einzelnen Arbeitsauftrags — eine Zeile pro Auftrag, bleibt nach Abschluss erhalten
Historietm_kpi_*_history etc.((asset_id, day), timestamp)Wert eines einzelnen Berechnungsticks — Partitionierung nach UTC-Datum, neueste zuerst
Rolluptm_kpi_*_rollup((scope, scope_id, day), timestamp)Aggregierte Werte auf Ebene von Linie · Bereich · Site · Unternehmen
  • Buckets basieren auf dem UTC-Datum. day ist yyyymmdd, month ist yyyymm (Integer) und stellt das Datum dar, wenn die Zeilen-Spalte timestamp als UTC betrachtet wird — nicht Mitternacht Ortszeit. Ein lokaler Tag erstreckt sich daher über zwei UTC-Buckets (Zeilen von 00:00 bis 08:59 KST liegen im UTC-Bucket des Vortages).
  • Selten auftretende Daten nutzen Monats-Buckets — Anlagenzustand(tm_kpi_oee_status), Ausfälle(tm_kpi_ram_failure · _failure_rollup) und Kraftstoff(tm_kpi_ems_fuel) werden über month partitioniert.
  • Rollup scope ist einer der Werte aus LINE · AREA · SITE · ENTERPRISE, und scope_id ist die ID der entsprechenden Linie, des Bereichs oder der Site. Die Unternehmensebene wird über scope_id = 'ALL' definiert.
  • Ursachenzähler (Cause Counter) tm_kpi_oee_defect_cause · _stop_cause · _fault_cause speichern die Tageskumuliere nach Fehler- und Ausfallursachen. Der Primärschlüssel ist ((asset_id, month), date, cause_code).
  • Historienzeilen sind auftragsspezifische Kumuliere. Eine Zeile in *_history enthält den Gesamtwert des Auftrags (Betriebszeit, Produktionsmenge, Energie etc.) bis zu diesem Tick. Addieren Sie die Zeilen nicht — für Periodenwerte lesen Sie die letzte Zeile pro Auftrag oder die Zeile *_order.
  • Dauern von Anlagenzuständen werden nicht gespeichert. tm_kpi_oee_status enthält nur den Zeitpunkt der Änderung. Ein Zustand gilt bis zum Zeitpunkt der nächsten Zeile. Lesen Sie Buckets fortlaufend, anstatt sie an Monatsgrenzen abzuschneiden.
Abfrage — Vollständige Partition Keys angeben

Setzen Sie sowohl asset_id als auch day (oder month) in die Bedingung. Verwenden Sie ALLOW FILTERING nicht. Bei Zeitraumabfragen lösen Sie das Intervall in eine Liste von UTC-Daten auf und lesen pro Bucket einmal.

SELECT timestamp, oee, availability, performance, quality
FROM pp.tm_kpi_oee_history
WHERE asset_id = 'EQUIPMENT_000001' AND day = 20260925
AND timestamp >= '2026-09-25 00:00:00+0000';

Für werkspezifische Werte lesen Sie die Anlagenliste aus PostgreSQL und rufen für jede Anlage tm_kpi_*_current ab. Die Site-Summe entspricht scope = 'SITE' in der Rollup-Tabelle.

Die Aufbewahrungsdauer beträgt 5 Jahre. Die Standard-TTL für Tabellen mit Buckets (Historie, Events, Zustände, Rollups etc.) ist 157680000 Sek. (1825 Tage), wobei die Referenzwerte in storage.asset.kpi.ttl (oder storage.asset.standard.ttl) liegen (Aufbewahrungsdauer einstellen). Aktuelle Werte(*_current), auftragsbezogene Werte(*_order) und Ursachenzähler haben keine TTL. 14 Historientabellen werden täglich in die tw_kpi_* von Iceberg kopiert, sodass sie auch nach Ablauf der 5 Jahre in Aster TSDB in Iceberg abfragbar bleiben. In Iceberg erfolgt keine Löschung.


Partitionierung — Partition Keys als Abfrageachsen​

In Aster TSDB gibt es keine Joins. Tabellen werden passend zur Abfrageart erstellt — daher existieren 125 Tabellen. Dass dieselben Daten in mehreren Tabellen mit unterschiedlichen Partition Keys liegen, ist ein Designmerkmal und keine Redundanz.

Partition Key FormatVerwendungszweckBeispiel
(tag_id) + timestampZeitachsenabfrage eines einzelnen Tagstm_tag_point
(asset_id, date, hour) + timestampTages- oder Stundenintervall einer Anlagetm_asset_data
(asset_id, day) + timestampUTC-Tages-KPI einer Anlagetm_kpi_oee_history
(scope, scope_id, day) + timestampUTC-Tages-KPI von Linie·Bereich·Site·Unternehmentm_kpi_oee_rollup
(site_id, year, month, day)Aggregation auf Site-Ebenetm_site_summary
Nur (id)Aktueller Wert — keine Zeitachse, daher kein Ablauf*_count, *_last_update, tm_kpi_*_current

Gesamte Tabellen (125)​

Tags · Punkte (32)​

TabellePrimärschlüssel (Partition · Clustering)
tm_tag_alarmtag_id, alarm_seq
tm_tag_alarm_count``
tm_tag_alarm_count_by_datetag_id, year, month, day, hour, minute
tm_tag_alarm_count_by_opc(opc_id, tag_id), year, month, day, hour, minute
tm_tag_alarm_count_by_site(site_id, tag_id), year, month, day, hour, minute
tm_tag_alarm_durationalarm_config_id, alarm_seq
tm_tag_alarm_on``
tm_tag_pointtag_id, timestamp
tm_tag_point_aggregation_10_minutestag_id, timestamp
tm_tag_point_aggregation_1_hourstag_id, timestamp
tm_tag_point_aggregation_1_minutestag_id, timestamp
tm_tag_point_aggregation_30_minutestag_id, timestamp
tm_tag_point_aggregation_5_minutestag_id, timestamp
tm_tag_point_anomaliesjob_id, timestamp, tag_id
tm_tag_point_archive(site_id, year, month, day, hour), minute, second, tuuid
tm_tag_point_count``
tm_tag_point_count_by_datetag_id, year, month, day, hour, minute
tm_tag_point_count_by_opc``
tm_tag_point_count_by_site``
tm_tag_point_forecastsjob_id, timestamp, tag_id
tm_tag_point_map(year, month, day, hour, minute), timestamp
tm_tag_point_sampling_10_minutestag_id, timestamp
tm_tag_point_sampling_10_secondstag_id, timestamp
tm_tag_point_sampling_1_hourstag_id, timestamp
tm_tag_point_sampling_1_minutestag_id, timestamp
tm_tag_point_sampling_30_minutestag_id, timestamp
tm_tag_point_sampling_30_secondstag_id, timestamp
tm_tag_point_sampling_5_minutestag_id, timestamp
tm_tag_point_snapshot(site_id, snapshot_id, date), timestamp
tm_tag_point_validationtag_id, timestamp
tm_tag_point_validation_by_timestampyyyymmdd, timestamp, tag_id
tm_tag_point_validation_counttag_id, year, month, day, hour, minute

Anlagen (17)​

TabellePrimärschlüssel (Partition · Clustering)
tm_asset_aggregationasset_id, timestamp
tm_asset_alarmasset_id, alarm_seq
tm_asset_commandasset_id, timestamp
tm_asset_connection_statusasset_id, timestamp
tm_asset_contextasset_id, timestamp
tm_asset_data(asset_id, date, hour), timestamp
tm_asset_data_anomaliesjob_id, timestamp, asset_id, tag_id
tm_asset_data_based_dayasset_id, timestamp
tm_asset_data_based_hourasset_id, timestamp
tm_asset_data_based_minute(asset_id, date), timestamp
tm_asset_data_based_second(asset_id, date, hour), timestamp
tm_asset_data_based_timestamp(asset_id, date, hour), timestamp
tm_asset_data_forecastsjob_id, timestamp, asset_id, tag_id
tm_asset_eventasset_id, timestamp
tm_asset_health_statusasset_id, timestamp
tm_asset_statusasset_id, timestamp
tm_asset_timelineasset_id, timestamp, timeline_group, timeline_type

KPI — OEE · RAM · EMS (26)​

Die Spalte «Tag» in den Bucket-Feldern entspricht day (UTC yyyymmdd) und «Monat» entspricht month (UTC yyyymm). Die Werte des Ursachenzählers month werden aus date abgeleitet. Details zur Abfrage finden Sie im Abschnitt KPI-Tabellen.

TabellePrimärschlüssel (Partition · Clustering)BucketInhalt
tm_kpi_oee_currentasset_id—Aktueller OEE der Anlage
tm_kpi_oee_orderorder_id—OEE eines Arbeitsauftrags
tm_kpi_oee_history(asset_id, day), timestampTagOEE pro Berechnungstick (Auftragskumulativ)
tm_kpi_oee_event(asset_id, day), timestampTagOEE-Eingabe-Events
tm_kpi_oee_count(asset_id, day), timestampTagGut-/Ausschussproduktionsmenge (Lot · Serial)
tm_kpi_oee_rolling(asset_id, day), timestampTagOEE der letzten N Minuten
tm_kpi_oee_rollup(scope, scope_id, day), timestampTagOEE von Linie · Bereich · Site · Unternehmen
tm_kpi_oee_status(asset_id, month), timestampMonatÄnderung des Anlagenzustands
tm_kpi_oee_status_currentasset_id—Letzter Zustand der Anlage
tm_kpi_oee_defect_cause(asset_id, month), date, cause_codeMonatTageskumulierte Ausschussursachen (Zähler)
tm_kpi_oee_stop_cause(asset_id, month), date, cause_codeMonatTageskumulierte Stillstandursachen (Zähler)
tm_kpi_oee_fault_cause(asset_id, month), date, cause_codeMonatTageskumulierte Ausfallursachen (Zähler)
tm_kpi_ram_currentasset_id—Aktueller RAM der Anlage
tm_kpi_ram_history(asset_id, day), timestampTagRAM pro Berechnungstick (Auftragskumulativ)
tm_kpi_ram_failure(asset_id, month), timestampMonatAusfall-Start- und End-Events
tm_kpi_ram_failure_rollup(scope, scope_id, month), timestamp, asset_idMonatAusfall-Events von Linie · Bereich · Site
tm_kpi_ram_rolling(asset_id, day), timestampTagRAM der letzten N Minuten
tm_kpi_ram_rollup(scope, scope_id, day), timestampTagRAM von Linie · Bereich · Site · Unternehmen
tm_kpi_ems_currentasset_id—Aktueller EMS der Anlage
tm_kpi_ems_orderorder_id—EMS eines Arbeitsauftrags
tm_kpi_ems_history(asset_id, day), timestampTagEMS pro Berechnungstick (Auftragskumulativ)
tm_kpi_ems_power(asset_id, day), timestampTagStrommessungs-Events (kW · kWh)
tm_kpi_ems_power_rollup(scope, scope_id, day), timestamp, asset_idTagStrom-Events von Linie · Bereich · Site
tm_kpi_ems_fuel(asset_id, month), timestampMonatKraftstoffmessungs-Events (Scope 1)
tm_kpi_ems_rolling(asset_id, day), timestampTagEMS der letzten N Minuten
tm_kpi_ems_rollup(scope, scope_id, day), timestampTagEMS von Linie · Bereich · Site · Unternehmen

Erfassung · Site (8)​

TabellePrimärschlüssel (Partition · Clustering)
tm_opc_connection_latency_historyopc_id, timestamp
tm_opc_connection_status_historyopc_id, timestamp
tm_opc_point_count``
tm_opc_point_count_by_dateopc_id, year, month, day, hour, minute
tm_opc_point_last_update``
tm_site_statussite_id, timestamp
tm_site_summarysite_id, year, month, day, hour, minute
tm_site_summary_total``

Monitoring (13)​

TabellePrimärschlüssel (Partition · Clustering)
tm_monitor_cep_metricstype, timestamp
tm_monitor_cluster_metricstype, ip, timestamp
tm_monitor_cluster_statustype, ip, timestamp
tm_monitor_nodestype, ip
tm_monitor_platform_healthtype, ip, timestamp
tm_monitor_platform_statustype, ip, timestamp
tm_system_health_statusapp_name, timestamp
tm_system_logapp_name, timestamp, seq
tm_system_log_count(app_name, level), year, month, day, hour, minute
tm_system_log_hourlyapp_name, bucket_start, instance_id, level
tm_system_propertiesproperty, timestamp
tm_system_start_date``
tm_system_trendyear, month, day, hour

Batch · Audit (4)​

TabellePrimärschlüssel (Partition · Clustering)
tm_batch_audityyyymmdd, timestamp, id
tm_batch_job_runyyyymmdd, timestamp, id
tm_warehouse_audityyyymmdd, timestamp, id
tm_warehouse_storage_usage_dailyyear_bucket, day, table_name

Zeitreihen-Engine (TSE-spezifisch) (8)​

TabellePrimärschlüssel (Partition · Clustering)
ts_data_pointskey, column1
ts_row_key_indexkey, column1
ts_row_key_time_indexmetric, table_name, row_time
ts_row_keys(metric, table_name, row_time), data_type, tags
ts_service_index(service, service_key), key
ts_specspec_type, name
ts_string_indexkey, column1
ts_tag_indexed_row_keys(metric, table_name, row_time, single_tag_pair), data_type, tag_collection_hash, tags

Sonstiges (17)​

TabellePrimärschlüssel (Partition · Clustering)
tm_blobblob_id, timestamp
tm_blob_count_and_size``
tm_blob_object``
tm_data_gateway_count``
tm_data_gateway_loglang, timestamp
tm_database_sizekeyspace_name, date
tm_diagnosticyear, timestamp
tm_diagnostic_countyear, level
tm_domain_change_history(domain_type, object_id), timestamp
tm_edge_status``
tm_option_eql_listener_result``
tm_option_eql_statement``
tm_option_eql_statement_historystmt_name, timestamp
tm_option_job_trigger_historyjob_name, context_fire_time
tm_option_listener_push_cacheurl, timestamp
tm_pipeline_exception_historybucket, timestamp, type, object_id
tm_trigger_resulttrigger_id, timestamp

Iceberg — Langzeitarchivierung​

Daten aus Archivtabellen(tm_tag_point_archive, Standard 365 Tage) werden in einem Object Storage für Analysen gesammelt. Die Daten fließen nicht direkt aus den Originaltabellen, sondern über das Archiv.

ElementWert
Katalogspark.plantpulse
Tabellentw_tag_point — Zeitreihen von Tags. Es gibt 9 Typen, die mit tw_asset_* · tw_blob etc. tw_ beginnen. Für KPIs gibt es 14 separate Typen in tw_kpi_*
Partitionsite_id → year → month → day
FormatIceberg v2 (Unterstützung von Row-Level Delete)
KompressionZstandard
AusführungSpark SQL

KPI-Archiv — tw_kpi_*​

KPIs werden ohne Umweg über Archivtabellen direkt aus tm_kpi_* übertragen. Da jeden Morgen die Daten des Vortages kopiert werden, liegen aktuelle Daten sowohl in Aster TSDB als auch in Iceberg; Daten, die älter als 5 Jahre (TTL) sind, verbleiben nur in Iceberg. In Iceberg erfolgt keine Löschung. Die Partitionen folgen dem Schema year → month → day (für Monats-Bucket-Tabellen year → month).

Aster TSDBIceberg
tm_kpi_oee_history · _event · _count · _status · _rolluptw_kpi_oee_history · _event · _count · _status · _rollup
tm_kpi_ram_history · _failure · _rollup · _failure_rolluptw_kpi_ram_history · _failure · _rollup · _failure_rollup
tm_kpi_ems_history · _power · _fuel · _rollup · _power_rolluptw_kpi_ems_history · _power · _fuel · _rollup · _power_rollup

Aktuelle Werte(*_current · oee_status_current), auftragsbezogene Werte(*_order), Werte der letzten N Minuten(*_rolling) und Ursachenzähler(*_cause) werden nicht übertragen, da sie entweder keine Historie darstellen oder aus der Historie neu berechnet werden können.

Suche nach Daten jenseits der Aufbewahrungsdauer

Diese Daten befinden sich nicht mehr in Aster TSDB. Bitte fragen Sie in Iceberg ab → Analyseschicht. Die aufbewahrungsdauer pro Tabelle ist unter Aufbewahrungsdauer (TTL) einstellen aufgeführt.


Häufige Fehler beim Backup​

Alle drei Speicher müssen einzeln gesichert werden. Wer nur PostgreSQL sichert, verliert die gesamten Zeitreihen.

SpeicherFolge bei Fehlen
PostgreSQLDefinitionen von Anlagen·Tags, Benutzer und Dashboards gehen verloren
Aster TSDBZeitreihen innerhalb der Aufbewahrungsdauer gehen verloren
Iceberg / Object StorageLangzeithistorie geht verloren

Weitere Details entnehmen Sie bitte dem Dokument Backup und Wiederherstellung.


Verwandte Dokumente​