Analyse
An eine bestimmte Menge an Daten eines Systems soll ein definierter Abfragetyp
mit einer großen Anzahl an Parametern gestellt werden. Kennzeichnend ist, daß die Kombination dieser Parameter
frei wählbar ist und sich somit eine sehr große Zahl möglicher, sich unterscheidender Abfrageausprägungen ergibt.
Konkrete Beispiele für solche Szenarien sind in zahlreichen Webanwendungen als "Konfiguratoren"
oder Produkt-Suchdienste zu finden.
Eine Nebenanforderung ist ggf. eine schnelle Reaktionszeit.
Lösung
Folgende Schritte führen zu einer Lösung:
- Herstellung eines denormalisierten Datenmodells (optimal mit einer Entität)
- Darstellung der Attribute in binärer Logik
- Abbildung des so gewonnenn Modells in den Arbeitspeicher
- Abbildung der Abfrage in genau der selben Struktur
- Herstellung eines Mapping Algorithmus nach "Für jeden Datensatz im Modell => if(Abfrage==Datensatz)"
Vor-/Nachteile
Mögliche Vorteile sind:
- Durch den Verzicht auf ein RDBMS entfallen die Kosten für Software-Lizenzen
- Die beschriebene Lösung ist für bestimmte Anwendungsfälle leicht zu implementieren
- Die explizite Ausführung im Arbeitspeicher in Verbindung mit einem effizienten Algorithmus
verspricht schnelle Ausführungszeiten
Mögliche Nachteile sind:
- Die beschriebene Lösung kann für bestimmte Anwendungsfälle komplex ausfallen. In diesen
Fällen ist die Verwendung eines RDBMS evtl. vorzuziehen. Es ist auf jeden Fall
eine sorgfältige Abwägung der unterschiedlichen Alternativen zu empfehlen
- Evtl. hohe Hardware-Anforderungen an den Arbeitsspeicher, da die Denormalisierung
(erwünschte) Redundanzen erzeugt