Datenbank-Modell#
i-doit speichert die meisten Inhalte und Einstellungen in einem Database Management System (DBMS) ab. Als DBMS kommen MySQL oder MariaDB zum Einsatz. Doch wie ist das Datenbank-Modell von i-doit aufgebaut?
Grundsätzliches#
Einige der insgesamt über 400 Tabellen der Mandanten Datenbank sind über ein definiertes Namensschema aufgebaut. So haben beispielsweise alle i-doit Tabellen das Präfix "isys_".
CMDB Kategorien folgen mit der Kennung "cats" für spezifisch und "catg" globale Kategorien und enden mit der englischen Bezeichnung der entsprechenden Kategorie und dem Suffix _list (z.B. isys_catg_model_list, isys_catg_memory_list). Die Kategorie Tabellen machen 50% der gesamten Datenbank aus. Ein weiterer großer Teil der Tabellen sind Dialog Listen, mit denen Comboboxen gefüllt werden. Viele dieser speziellen Listen beinhalten Werte über Typ und Hersteller und sind somit durch Namen wie zum Beispiel "type" oder "manufacturer" erkenntlich.
Referenzierungen (Foreign Keys)#
Zur Vermeidung von Redundanzen innerhalb des Datenschemas, sind die i-doit Datenbanken relational aufgebaut und nach dem Schema der 3. Normalform normalisiert. Fremdschlüssel haben eine einheitliche Benamung (siehe hierzu Abschnitt "Namensschema"), wodurch sie direkt ersichtlich werden.
Namensschema#
Neben der Benennung der einzelnen Tabellen, zieht sich ein konsequentes Namensschema durch alle Feldbezeichnungen der i-doit Tabellen, welches mit dem Namen der Tabelle beginnt, gefolgt von dem eigentlichen Namen der Spalte. Somit heisst das id Feld der Tabelle isys_catg_cpu_list zum Beispiel:
1 2 3 4 5 6 |
|
Referenzen auf andere Felder (Fremdschlüssel) folgen analog hierzu einem ähnlichen Grundsatz. Eine Referenz beinhaltet immer den kompletten Namen der referenzierten Spalte, so ist anhand des Namens immer ersichtlich, auf welche Tabellenspalte die Referenz zeigt.
Beispiel Objektreferenz einer Kategorie:
1 2 3 |
|
Objekte#
Jedes Objekt ist jeweils ein Datensatz in der Tabelle isys_obj. In dieser Tabelle werden Eigenschaften wie der Objekttyp (Server, Clients, Router, etc.), das Erstellungsdatum, der Status (Normal, Archiviert, Gelöscht) und einige zusätzliche Attribute festgehalten. Die Bestimmung des Objekttypen erfolgt durch die Referenzierung der Tabelle isys_obj_type, in der sich die entsprechende Ausprägung und Lokation (Infrastruktur, Software etc.) befindet.
Globale und spezifische Kategorien#
Jede Kategorie spiegelt sich in der Datenbank als eigene Tabelle wieder und steht in einer 1:n Beziehung zum Objekt. Es wird grundsätzlich zwischen Listen und Single Values unterschieden. Single Values sind einfache Einträge (z.B. Buchhaltung oder Formfaktor), von denen pro Objekt genau ein Eintrag in der Tabelle existiert. Listen dagegen ermöglichen Mehrfacheintragungen (CPU, Speicher, Ports, ..). In jedem Datensatz der globalen Kategorie wird auf ein einzelnes Objekt referenziert.
Beispielaufbau globale Kategorie Grafikkarte und globale Kategoire IP Adressen:
isys_catg_graphic_list steht über den Fremdschlüssel isys_catg_graphic_list__isys_obj__id in Beziehnung zum Objekt. Über das gleiche Schema steht die IP Adresse in Verbindung zum Objekt:
isys_catg_ip_list beinhaltet den Fremdschlüssel isys_catg_ip_list__isys_obj__id.
Somit ergibt sich folgenes SQL Statement für die Ermittlung alle Objekte, dessen Grafikkarte und IP Infos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Spezifische Kategorien verhalten sich gleich. Die Abfrage der Netzinformationen aller Netz Objekte würde folgendermaßen aussehen:
1 2 3 4 5 6 7 8 9 10 11 |
|
Diagramm: Beziehung zwischen Kategorien und Objekten
In der Grafik ist zu sehen wie ein Objekt mit der globalen Kategorie CPU verknüpft ist. Diese Kategorie greift wiederum auf Dialog+ Einträge wie den Hersteller und den Typ zu. Das gleiche geschieht mit der globalen Kategorie Formfaktor, die auf den Formfaktor-Typ zugreift.
Diese Darstellung erläutert die Beziehungen eines Objektes zur Kategorie "Hostadresse" (IP). Das Objekt selbst (z.B. Server1) befindet sich in der Tabelle isys_obj. Die zugewiesenen IP Adressen in der Tabelle isys_catg_ip_list. Bedingt durch die detailierte Ausprägungstiefe der Hostadresse, werden neben den Grundinformationen (hostname, address, ..) drei weitere Tabellen referenziert:
- isys_connection, welche die Verbindung zum Netz-Objekt beinhaltet
- isys_ip_assignment, welche die Zuweisungsform der IP bestimmt (DHCP, statisch)
- isys_net_type, welche die Netzart liefert
Benutzer, Kontakte, Personen, Personengruppen#
Kontakte, welche in i-doit sowohl interne Benutzer, als auch externe Personen umfassen können, fliessen in die Tabelle isys_obj mit entsprechendem Objekttypen ein. Interne Benutzer unterscheiden sich von externen "Kontakten" lediglich durch die Befüllung der i-doit Authentifizierungs-Parametern (Konkret: Benutzername, Passwort) in der Tabelle isys_cats_person_list. Gruppen (und Rechtegruppen) speichert das System in isys_obj.
Logbuch#
Das Logbuch besteht aus Einträgen in der Tabelle isys_logbook. In dieser Tabelle existieren wieder einige Referenzen zu anderen Tabellen. Wichtig dafür sind folgende Tabellen:
- isys_logbook_archive (Archivierte Logbucheinträge)
- isys_logbook_event (Ereignisse wie Erstellt, Geändert, Gelöscht usw.)
- isys_logbook_level (Alarmlevel für farbige Darstellung im Logbuch und Dringlichkeit)
- isys_logbook_source (von wo ging das Event aus, z.B. intern, extern, Nagios etc.)
Tabellenübersicht#
CMDB Kategorien
- isysgui_catg
- isysgui_cats
- isysgui_custom
Dialog Tabelle für Buchhaltung (isys_catg_account_list)
- isys_account
Verkabelungstabellen
- isys_cable_connection
- isys_cable_type
Globale Kategorien
- isys_catg_access_list
- isys_catg_accounting_list
- isys_catg_application_list
- isys_catg_backup_list
- isys_catg_connector_list
- isys_catg_contact_list
- isys_catg_controller_list
- isys_catg_cpu_frequency
- isys_catg_cpu_list
- isys_catg_distributor
- isys_catg_drive_list
- isys_catg_emergency_plan_list
- isys_catg_fc_port_list
- isys_catg_file_list
- isys_catg_formfactor_list
- isys_catg_global_category
- isys_catg_global_list
- isys_catg_graphic_list
- isys_catg_idic_list
- isys_catg_image_list
- isys_catg_ip_list
- isys_catg_ip_list_2_isys_catg_port_list
- isys_catg_ip_list_2_isys_netp_ifacel
- isys_catg_lic_list
- isys_catg_location_list
- isys_catg_logb_list
- isys_catg_maintenance_list
- isys_catg_manual_list
- isys_catg_memory_list
- isys_catg_model_list
- isys_catg_nagios
- isys_catg_nagios_list
- isys_catg_netp_list
- isys_catg_netv
- isys_catg_netv_list
- isys_catg_net_type_list
- isys_catg_odep_list
- isys_catg_overview_list
- isys_catg_port_list
- isys_catg_port_list_2_isys_netp_con
- isys_catg_port_list_2_isys_netp_ifacel
- isys_catg_power_consumer_list
- isys_catg_sanpool_list
- isys_catg_sound_list
- isys_catg_stor_list
- isys_catg_ui_list
- isys_catg_version_list
- isys_catg_virtual_list
- isys_catg_virtual_machine_list
- isys_catg_workflow_list
Spezifische Kategorien
- isys_cats_access_point_list
- isys_cats_ac_list
- isys_cats_application_list
- isys_cats_building_list
- isys_cats_client_list
- isys_cats_cp_contract_list
- isys_cats_distributor
- isys_cats_emergency_plan_list
- isys_cats_enclosure_list
- isys_cats_file_list
- isys_cats_group_list
- isys_cats_lic_group
- isys_cats_lic_item
- isys_cats_lic_list
- isys_cats_location_generic_list
- isys_cats_maintenance_list
- isys_cats_monitor_list
- isys_cats_net_list
- isys_cats_pobj_list
- isys_cats_prt_emulation
- isys_cats_prt_list
- isys_cats_prt_paper
- isys_cats_room_list
- isys_cats_router_list
- isys_cats_san_list
- isys_cats_service_list
- isys_cats_switch_fc_list
- isys_cats_switch_net_list
- isys_cats_tapelib_list
- isys_cats_wan_list
- isys_cats_ws_net_type_list
Verbindungen zwischen Objekten und Kategorien
- isys_connection
Kontaktrefenzen
- isys_contact
- isys_contact_data_item
- isys_contact_type
Objekt-Kobinationen
- isys_container
Dialog: Typ des Mobilfunkvertrags
- isys_cp_contract_type
Informationen über Version und Revision der i-doit Datenbank
- isys_db_init
Abhängigkeiten, Art der Abhängkeit
- isys_dependency
- isys_dep_type
Verknüpfungstabelle für Laufwerk an Storage
- isys_drive_list_2_stor_list
Exportvorlagen
- isys_export
Dialog: FC Port Medium
- isys_fc_port_medium
Dateien
- isys_file_category (Kategorie)
- isys_file_group (Gruppierung)
- isys_file_physical (Pfad zur physikalischen Datei)
- isys_file_type (Dateitypen)
Gruppenverwaltung
- isys_group
Verknüpfungstabelle der Rechtegruppen zu Modulen, Objekten, Kontakten oder User-Sessions
- isys_group_2_isys_module
- isys_group_2_isys_obj
- isys_group_2_isys_person_intern
- isys_group_2_isys_user_session
Dialog: IP Zuweisung
- isys_ip_assignment
LDAP Konfiguration
- isys_ldap (Verbindung zu LDAP Server)
- isys_ldap_directory (Directory Typen)
T
- isys_location_image
Registrierung gesperrter Objekte (Objekte in Bearbeitung)
- isys_lock
Logbuch
- isys_logbook
- isys_logbook_archive
- isys_logbook_event
- isys_logbook_event_class
- isys_logbook_lc_parameter
- isys_logbook_level
- isys_logbook_source
Dialog: Reaktionszeiten für Wartungsverträge
- isys_maintenance_reaction_rate
Dialog: Name des Arbeitsspeichers
- isys_memory_title
Dialog: Modellbezeichnung
- isys_model_title
Modulverwaltung
- isys_module
Monitor
- isys_monitor_resolution
- isys_monitor_unit
Tabellen für die Nagios Konfiguration
- isys_nagios_commands
- isys_nagios_config
- isys_nagios_contacts
- isys_nagios_contact_groups
- isys_nagios_dependency
- isys_nagios_host_escalations
- isys_nagios_nagioshosts
- isys_nagios_ndo
- isys_nagios_service
- isys_nagios_service_escalations
- isys_nagios_timeperiods
Dialoge für spezifische Kategorie Netz (Layer 3-Netz)
- isys_net_dns_domain
- isys_net_dns_server
- isys_net_type
- isys_net_type_title
Tabelle für CMDB Objekte (Configuration Items)
- isys_obj
Tabelle für CMDB Objekttypen (CI Typen)
- isys_obj_type
Objekttypgruppe und Verknüpfungstabelle von Objekttypen zu globalen Kategorien
- isys_obj_type_2_isysgui_catg
- isys_obj_type_2_isysgui_catg_overview
- isys_obj_type_group
Tabelle für Organisationen
- isys_organisation_intern_iop
Tabelle für Kontakte
- isys_person_extern
- isys_person_intern
- isys_person_intern_iop
Port dialoge
- isys_port_duplex
- isys_port_negotiation
- isys_port_speed
- isys_port_standard
Stromverbindung
- isys_power_con
- isys_power_female_socket
- isys_power_fuse_ampere
- isys_power_male_plug
Kategorie Allgemein: Einsatzzweck
- isys_purpose
Rollen- und Rechteverwaltung
-
isys_right
-
isys_right_2_isys_role
- isys_role
SAN-Kapazitätseinheit
- isys_san_capacity_unit
Suche
- isys_search
Service
- isys_service_manufacturer
Raidlevel
- isys_stor_raid_level
Tapelibrary
- isys_tapelib_type
Objektbaumgruppen (Infrastruktur, Software, Andere)
- isys_tree_group
Zeiteinheit
- isys_unit_of_time
User locales, Sessions und Einstellungen
- isys_user_locale
- isys_user_mydoit
- isys_user_session
- isys_user_setting
- isys_user_ui
WAN
- isys_wan_capacity_unit
- isys_wan_role
- isys_wan_type
Wifi-Angaben
- isys_wf_type_2_wf_tp
- isys_wlan_auth
- isys_wlan_channel
- isys_wlan_encryption
- isys_wlan_function
- isys_wlan_standard
Tabellen für Workflowmanagement
- isys_workflow
- isys_workflow_2_isys_workflow_action
- isys_workflow_action
- isys_workflow_action_parameter
- isys_workflow_action_type
- isys_workflow_category
- isys_workflow_status
- isys_workflow_template_parameter
- isys_workflow_type
Temporäre Tabellen
- temp_obj_data
Dialog-Plus-Tabellen#
-
isys_ac_air_quantity_unit => Klimaanlage: Einheit Luftmenge
-
isys_ac_refrigerating_capacity_unit => Klimaanlage: Einheit Kühlleistung
-
isys_guarantee_period_unit => Garantiezeit: Einheit
-
isys_memory_unit => Speicher: Einheit
-
isys_stor_unit => Storage: Einheit
-
isys_temp_unit => Temperatur: Einheit
-
isys_ac_type => Klimaanlage: Art
-
isys_catd_drive_type => Laufwerk: Typ
-
isys_catg_cpu_type => CPU: Typ
-
isys_catg_formfactor_type => Formfaktor
-
isys_cats_prt_type => Drucker: Art
-
isys_client_type => Client: Typ
-
isys_controller_type => Controller: Typ
-
isys_filesystem_type => Dateisystem
-
isys_memory_type => Speicher: Typ
-
isys_monitor_type => Monitor: Typ
-
isys_port_type => Port: Typ
-
isys_power_fuse_type => Stromobjekt: Sicherungstyp
-
isys_power_connection_type => Stromobjekt: Typ der Buchse
-
isys_room_type => Raum: Typ
-
isys_stor_con_type => Storage: Anschluss
-
isys_stor_type => Storage: Gerätetyp
-
isys_ui_con_type => Schnittstelle: Verbindungstyp
-
isys_ui_plugtype => Schnittstelle: Anschlusstyp
-
isys_application_manufacturer => Anwendungen: Hersteller
-
isys_catg_cpu_manufacturer => CPU: Hersteller
-
isys_controller_manufacturer => Controller: Hersteller
-
isys_graphic_manufacturer => Grafikkarten: Hersteller
-
isys_memory_manufacturer => Speicher: Hersteller
-
isys_model_manufacturer => Modell: Hersteller
-
isys_sound_manufacturer => Soundkarten: Hersteller
-
isys_stor_manufacturer => Storage: Hersteller
-
isys_controller_model => Controller: Modell
-
isys_stor_model => Storage: Modell
-
isys_depth_unit => Formfaktor: Einheit
-
isys_iface_manufacturer => Interface: Hersteller
-
isys_iface_model => Interface: Modell
-
isys_pc_manufacturer => Verbraucher: Hersteller
-
isys_pc_model => Verbraucher: Modell
-
isys_plug_type => Port: Stecker
-
isys_netx_ifacel_type => log. Interface: Typ
-
isys_fc_port_type => FC-Port: Typ
-
isys_access_type => Zugriff: Zugriffstyp