php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.01.2012, 21:17  
Neuer Benutzer
 
Registriert seit: 03.01.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Kamikurt befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Erfassen von Infrastrukturebenen

Hallo,

ich könnte eine Anregung gebrauchen, wie ich folgende Frage in einer relationalen DB löse. Für mein Ticketsystem brauche ich zu grunde liegende Infrastruktur, um Alarme und Tickets zu ordnen zu können.

In meiner "Welt" gibt es folgende Elemente:

Server
Hosts
Enclosures
Racks

1. Server ist ins Rack geschraubt

Iteration ist einfach, da ich einen Server in ein Rack setze. Dazu baue ich mir eine Tabelle mit Rackdaten, eine mit Serverdaten und eine Tabelle, in der ich die Beziehungen abbilde.

2. Server ist auf einem Host, der in einem Rack steht

Schon anspruchsvoller. Ich habe drei Tabellen mit Stammdaten (Server, Hosts, Racks). Nun kann ich auch hier einfach sagen: Jeder Server hat einen Host und jeder Host ein Rack - das kann ich über Tabellen und Joins abfangen.

3. Server sind auf dem Host oder im Rack

Da kommen wir dem Problem näher. Ich kann natürlich eine Tabelle bauen, die jedem Server einen Typ zuordnet (z.B. Rack, Host, Enclosure) und eine UUID zur Identifizierung des Ortes. Damit weiß ich, wo der Srever steht. Wenn es nicht direkt das Rack ist sondern z.B. ein Host, weil er eine VM ist, weiß ich damit noch nicht, in welchem Rack er ist. Um das zu erfahren, kann ich eine weitere Abfrage starten, in der ich Host und Enclosure joine und danach Enclosure und Rack.Dazu brauch eich dann aber drei Beziehungstabellen und Abfragen. Oder ich entwickle im Code mehr Logik und versuche, Statements per JOIN über den Typ zu entwickeln, d.h. wenn ich weiß, der Server steht ist ein Blade, brauche ich ja nur das Enclosure ermitteln und das Rack. Ist er eine VM muss ich mehr abfragen.

Soweit läßt sich das alles bauen - skaliert aber irgendwie nicht so recht. Hat jemand ggf. einen Schubs für mich, wie man Tabellen in Beziehung setzt, wenn es unterschiedliche Konstellationen geben kann:

Server - Host - Enclosure - Rack
Server - Rack
Server - Enclosure - Rack

Im Endeffekt will ich - wenn ich einen Server kenne - ermitteln, wie der Server verbaut ist.

Für Tipps oder Gedankenanregungen dankbar
_kami
Kamikurt ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.01.2012, 21:31  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kamikurt Beitrag anzeigen
Hallo,

ich könnte eine Anregung gebrauchen, wie ich folgende Frage in einer relationalen DB löse. Für mein Ticketsystem brauche ich zu grunde liegende Infrastruktur, um Alarme und Tickets zu ordnen zu können.

In meiner "Welt" gibt es folgende Elemente:

Server
Hosts
Enclosures
Racks

1. Server ist ins Rack geschraubt

Iteration ist einfach, da ich einen Server in ein Rack setze. Dazu baue ich mir eine Tabelle mit Rackdaten, eine mit Serverdaten und eine Tabelle, in der ich die Beziehungen abbilde.

2. Server ist auf einem Host, der in einem Rack steht

Schon anspruchsvoller. Ich habe drei Tabellen mit Stammdaten (Server, Hosts, Racks). Nun kann ich auch hier einfach sagen: Jeder Server hat einen Host und jeder Host ein Rack - das kann ich über Tabellen und Joins abfangen.

3. Server sind auf dem Host oder im Rack

Da kommen wir dem Problem näher. Ich kann natürlich eine Tabelle bauen, die jedem Server einen Typ zuordnet (z.B. Rack, Host, Enclosure) und eine UUID zur Identifizierung des Ortes. Damit weiß ich, wo der Srever steht. Wenn es nicht direkt das Rack ist sondern z.B. ein Host, weil er eine VM ist, weiß ich damit noch nicht, in welchem Rack er ist. Um das zu erfahren, kann ich eine weitere Abfrage starten, in der ich Host und Enclosure joine und danach Enclosure und Rack.Dazu brauch eich dann aber drei Beziehungstabellen und Abfragen. Oder ich entwickle im Code mehr Logik und versuche, Statements per JOIN über den Typ zu entwickeln, d.h. wenn ich weiß, der Server steht ist ein Blade, brauche ich ja nur das Enclosure ermitteln und das Rack. Ist er eine VM muss ich mehr abfragen.

Soweit läßt sich das alles bauen - skaliert aber irgendwie nicht so recht. Hat jemand ggf. einen Schubs für mich, wie man Tabellen in Beziehung setzt, wenn es unterschiedliche Konstellationen geben kann:

Server - Host - Enclosure - Rack
Server - Rack
Server - Enclosure - Rack

Im Endeffekt will ich - wenn ich einen Server kenne - ermitteln, wie der Server verbaut ist.

Für Tipps oder Gedankenanregungen dankbar
_kami
Schau mal mein heute gezeigtes rekursives Query. Jedes Objekt hat entweder eine Parent-ID oder NULL, dann ist es 'ganz oben'. Mit solchen rekursiven Abfragen kannst Du in beiden Richtungen wandern, also auch wenn Du das 'Ende' kennst den 'Anfang' finden.


Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 31.01.2012, 22:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Inserate, Konzepte und Meinungsumfragen
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.02.2012, 08:12  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Depends. Es geht um Datenbanken, diese beginnen NICHT mit dem SELECT bla FROM foo, sondern enden an diesem Punkt. Beginnen tun sie mit der konzeptionellen Überlegung, wie man sein Problem in eine Tabellenstruktur bekommt. Sattelt man das Pferd falsch, dann kommen Fragen wie gestern nach dem Durchsuchen von 100 oder mehr Feldern. Dann ist es aber bereits zu spät.

Ich arbeite im Support bei einem Hoster, und sehe quasi täglich die Probleme falscher DB-Strukturen (und der falschen Wahl von MySQL, obwohl es verfügbare Alternativen gibt, die es besser können ...). Nicht mein Problem eigentlich, Kundenproblem, kann mir also egal sein. Aber wenn *hier* Anfänger solche Fragen stellen, sollte man sie IMHO nicht mit einer Default-Antwort wie Deiner verprellen.

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 01.02.2012, 19:23  
Neuer Benutzer
 
Registriert seit: 03.01.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Kamikurt befindet sich auf einem aufstrebenden Ast
Standard

Hi all.

@nikosch

Schade, daß Du diesen Eindruck gewonnen hast. Das wollte ich vermeiden. Ggf. siehst Du an dem Eintrag, daß ich bereits ein Ticketsystem geschrieben habe und einen konzeptionellen Anstoß für den Aufbau einer darunter liegenden CMDB gesucht habe - was bedeutet, daß ich schon mal eine Zeile Code geschrieben und ein SQL Statement gebaut habe. GGf. ist es mir auch nicht gelungen, mit meinen Zeilen darzulegen, daß ich im Prinzip bereits eine Lösung habe, aber gehofft habe, daß ggf. jemand was Besseres weiß. Wenn das hier nicht passt, egal - das Netz ist weit, nichts für ungut

@Andreas

Danke Dir, ich geh mal in mich und bastle ein bischen mit rekursiven Ideen, Dein Beitrag hat das erhellt. Wenn ich genug rumgestolpert bin, klopfe ich gern noch mal bei Dir an, wenn das ok ist.

Grüße von
kami
Kamikurt ist offline   Mit Zitat antworten
Alt 01.02.2012, 19:31  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kamikurt Beitrag anzeigen

@Andreas

Danke Dir, ich geh mal in mich und bastle ein bischen mit rekursiven Ideen, Dein Beitrag hat das erhellt. Wenn ich genug rumgestolpert bin, klopfe ich gern noch mal bei Dir an, wenn das ok ist.

Grüße von
kami
Beachte, daß meine Beispiele ein halbwegs aktuelles PostgreSQL benötigen. Angeblich haben das nicht alle Hoster ... wir aber

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 07.02.2012, 22:02  
Neuer Benutzer
 
Registriert seit: 03.01.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Kamikurt befindet sich auf einem aufstrebenden Ast
Standard

Hi alle,

noch ein kurzes Update. Die beste Lösung für mein Problem ist die Verwendung von nested sets (gute Einführung hier: http://www.klempert.de/nested_sets/).

Grüße von
Kami
Kamikurt ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Backup-Funktion, nur veränderte Dateien erfassen @lex PHP Tipps 2009 5 18.08.2009 15:11
Zeilenumbrüche mit Regex erfassen lithium PHP Tipps 2009 4 01.05.2009 23:42
Koordinatengruppen in Tabelle erfassen ssm Datenbanken 5 18.09.2006 16:52
[Erledigt] DAX-Kurse erfassen... PHP-Fortgeschrittene 3 09.12.2005 15:55
IP Adresse per php erfassen PHP Tipps 2005 1 01.04.2005 18:40
web daten in datenbank erfassen ???insert??? PHP Tipps 2004-2 2 10.12.2004 13:07
IP erfassen PHP Tipps 2004 12 31.08.2004 16:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
welche bereiche erfassen die infrastruktur, blade server

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum