Zum Inhalt

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
isys_catg_cpu_list__id
/\              /\
Tabelle CPU            Spalte (ID)
isys_catg_cpu_list__title
/\               /\
Tabelle CPU            Spalte (Titel)

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
isys_catg_cpu_list__isys_obj__id
/\                 /\      /\
Tabelle CPU    Tabelle Obj.   Spalte

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
SELECT
isys_obj__title,
isys_catg_graphic_list__title,
isys_catg_graphic_list__memory,
isys_memory_unit__title,
isys_catg_ip_list__hostname,
isys_catg_ip_list__address
FROM isys_obj
INNER JOIN isys_catg_graphic_list
ON isys_catg_graphic_list__isys_obj__id = isys_obj__id
INNER JOIN isys_memory_unit
ON isys_catg_graphic_list__isys_memory_unit__id = isys_memory_unit__id
INNER JOIN isys_catg_ip_list
ON isys_catg_ip_list__isys_obj__id = isys_obj__id

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
SELECT
isys_obj__title,
isys_cats_net_list__address,
isys_cats_net_list__dhcp_range_from,
isys_cats_net_list__dhcp_range_to,
isys_cats_net_list__dhcp,
isys_cats_net_list__def_gw
FROM
isys_cats_net_list
INNER JOIN isys_obj
ON isys_cats_net_list__isys_obj__id = isys_obj__id

Diagramm: Beziehung zwischen Kategorien und Objekten

datenbankmodell-beziehungen

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.

datenbankmodell-formfaktor

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