Programmieren - alles kontrollieren 4.936 Themen, 20.625 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
ChrE Yves3 „Es sind ungefähr 1200. Das Problem ist aber nicht die Datenbank, da sie nicht...“
Optionen

Hallo!

Oh. Das wird dann wohl sequenziell gemacht, wenn es 10 Min. dauert.
Und Du möchtest es parallelisieren.
Oder?

Gruss

ChrE

bei Antwort benachrichtigen