Mehrfachabfragen, Revisited
May 04
Entwickler Tagebuch, PHP, WoW Data Access No Comments
Der gestrige Abend war sehr produktiv. Ich habe das Konzept des Hashings wieder über den Haufen geworfen und bin einen Schritt zurück gegangen um die Konsistenz zu wahren. Dies resultierte in folgender erfolgreichen Herangehensweise:
- Da ich die Parameter-Tupel ja als indiziertes Array erwarte, sind die Tupel somit schon vom externen System aus eindeutig identifiziert, selbst wenn dies nur implizit durch ein Weglassen der Schlüssel geschiet.
- Somit wäre die Konsistenz und auch der Bedienkomfort am größten wenn diese Schlüssel bei der Rückgabe der Datenobjekte identisch mit denen der zugeordneten Parameter wären.
- Um dies zu erreichen muss ich ein Ergebniss Objekt mit einem Parameter-Tupel vergleichen können, um zu ermitteln ob diese zusammen gehören:
- Erweiterung der Metadaten einer Daten ID um ein optionales Feld “param”, welches angibt ob dieser Daten ID ein Eingabeparameter zugeordnet ist, und falls ja, welcher Eingabeparameter dies ist.
- Eine öffentliche Methode “matchParams()” die zur WowData Klasse gehört. Diese erwartet ein Parameter-Tupel und prüft ob alle im Datenobjekt definierten Eingabeparameter auch im Tupel vorhanden sind und ob die Werte übereinstimmen.
- Nachdem diese Überprüfung nun stattfinden kann, habe ich eine Methode in “WowDataAccess” geschrieben welche ein Kanal-Ergebnis nimmt und mit einem Array von Parameter-Tupeln vergleicht und einen Ausschnitt aus diesem Array zurückliefert welches nur die Tupel enthält die auf kein Datenobjekt in der Ergebnismenge gepasst haben.
- Diese Teilmenge der Parameter-Tupel wird nun an den nächsten Datenkanal weiter gereicht. Und gleichzeitig werden die Schlüssel dieser Tupel gespeichert, um beim Schreibdurchlauf später auch nur die Daten zurück zu schreiben die in diesem Kanal nicht präsent waren.
Damit wären wir auch schon am Ziel angekommen.
RSS