Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Jemand Erfahrung mit OpenPegasus?

Yves3 / 3 Antworten / Flachansicht Nickles

Hallo

Ich habe eine Datenbank mit gewissen DeviceIDs, die als gelöscht oder als nicht gelöscht bezeichnet sind. Ich muss jetzt den Status all dieser Instanzen aktualisieren, also bei jeder überprüfen, ob sie auf dem CIMOM (CIM Object Manager) existiert.
Mein aktueller Ansatz ist folgender:
Code:


bool CServiceLogic::IsVolumeOnCIMOM(Pegasus::String strVolumeID)
{
Array<CIMObject> oTestObject;
String strSelectQuery = "SELECT DeviceID FROM IBMTSDS_Volume WHERE DeviceID= \"";
strSelectQuery.append(strVolumeID);
strSelectQuery.append("\"");
oTestObject = m_oCIMClient.execQuery(m_oNamespaceName, String("WQL"), strSelectQuery);
return (oTestObject.size() == 1);
}


Diese Funktion führe ich einfach für jeden Datensatz in der Datenbank einmal aus.

Leider dauert das ungefähr zehn Minuten, bis es fertig ist (ca. 1200 Instanzen).
Alle Instanzen vom CIMOM auf einmal abzurufen dauert ungefähr 20 Sekunden, allerdings habe ich noch keine Möglichkeit gefunden um diese lokal effizient zu durchsuchen.
Einfach für jede Instanz in der DB das gesamte Array zu durchlaufen halte ich für keine besonders gute Lösung, da die Dauer mit der Anzahl Instanzen exponential ansteigt.

Ich hoffe hier hat schon mal jemand etwas ähnliches versucht.
Ich weiss, dass das API wahrscheinlich nicht so verbreitet ist, wüsste aber nicht, wo ich sonst fragen könnte....
bei Antwort benachrichtigen
Yves3 ChrE „Hallo! Habe keine Ahnung, aber: Wie viele Sätze stehen denn in der Tabelle...“
Optionen

Es sind ungefähr 1200. Das Problem ist aber nicht die Datenbank, da sie nicht dort, sondern auf den Systemen gesucht werden müssen

bei Antwort benachrichtigen