REST API Performance Optimierung
-
Hallo
Wir wollen per REST API regelmäßig/täglich einen Abzug eines Teil der Daten aus i-doit in unser DWH durchführen. Aktuell ca. 20.000 relevante Objekte und mehrere Kategorien.
Mit cmdb.objects.read (und limit) bekommt man den Aufruf ja relativ einfach hin. Holt man sich nur Objekte oder einfache Kategorien, so geht das auch recht schnell:
- 30.000 Objekte: 2s
- 1.100 Server mit Kategorie Modell: 1s
- 5.000 Virtuelle Server mit Kategorie Modell: 3s
Sobald Beziehungs-Kategorien ins Spiel kommen, dauert es deutlich länger:
- 1.100 Server mit Betriebssystem: 30s
Ein weiterer Punkt: Durch JDisc werden ein Großteil der Objekte täglich aktualisiert.
Habt Ihr Ideen oder konkrete Vorschläge bzw. Erfahrungen, so einen Abruf zu optimieren?
In der Doku wird von "Batch Requests" geredet. Im PDF von "Bulk Request". Hat jemand dazu ein Beispiel oder weitere Info?
Meine Ideen soweit
- Ich hole erst alle Objekte und Iteriere dann nur über die geänderten. Durch Jdsic kann ich aber nicht allzu viel reduzieren.
- I parallelisiere die Abrufe (z.B. auf Objekt-Typen). Dadurch habe ich natürlich mehr programmieraufwand und die Performance des Servers geht runter.
Grüße
Leo -
Ich denke das mit "Batch Requests" gemeint ist das man mit JSON-RPC mehrere API Call in einem Request an den Server bündeln kann, statt für jeden API Call einen eigenen Request zu machen.
Die JSON-RPC Spec fand ich da recht hilfreich zu lesen:
4 Request object > ID Parameter