datenvergleich
cheops
- php
hallo zusammen,
A)
ich habe ein zweidimensionales array (1-n)(1-128) mit jeweils einem int-wert (0-128).
B)
zusätzlich habe ich ein zweites zweidimensionales array mit der gleichen struktur, jedoch entschieden kleiner (1-n minus X)(1-128)
die zweite dimension der arrays (1-128) KANN komplett übereinstimmen, muss es jedoch nicht... oder hat nur minimale abweichungen.
problem:
-von den arrays aus A) habe ich sehr viele vorliegen und will/muss sie irgendwie in eine datenbank verfrachten
-das array von B) dient lediglich als vergleichswert und muss gegen alle anderen aus A) verglichen werden
-wie speichere ich diese daten sinnvoll in der DB, dass ich minimale abweichungen innerhalb des selects als toleranz durchgehen lassen kann und das ganze auch bei tausenden von einträgen noch performant bleibt?
danke und gruß
cheops
Ich weiß ja nicht um was es geht, mir kommen da einige Fragen. Die schreib ich jetzt mal, vielleicht helfen dir die Antworten ja selber schon. Ansonsten solltest du genauer erzählen was das werden soll.
-von den arrays aus A) habe ich sehr viele vorliegen und will/muss sie irgendwie in eine datenbank verfrachten
Wirklich nur irgendwie, oder muss damit DB-seitig noch was bestimmtes gemacht werden können? Zum Beispiel Vergleiche anstellen, so wie du das später noch schreibst?
die zweite dimension der arrays (1-128) KANN komplett übereinstimmen, muss es jedoch nicht... oder hat nur minimale abweichungen.
Bezüglich was stimmt das überein? Die B Elemente sind also in der zweiten Dimension alle (ziemlich) gleich? Was heißt minimale Abweichung, wann ist die im Rahmen und wann nicht mehr? Also z.B. darf jeder Wert wenig abweichen, oder dürfen nur wenige Werte abweichen, das dann aber stark usw.
-das array von B) dient lediglich als vergleichswert und muss gegen alle anderen aus A) verglichen werden
Wie genau verglichen? B hat ja weniger erste Dimensionen als A. Wird jeder Eintrag der ersten Dimension aus A mit jedem aus B verglichen?
Und wenns dann verglichen wurde, was passiert mit dem Ergebnis?
-wie speichere ich diese daten sinnvoll in der DB, dass ich minimale abweichungen innerhalb des selects als toleranz durchgehen lassen kann und das ganze auch bei tausenden von einträgen noch performant bleibt?
Auch hier wär wieder die Frage, was wird mit wem verglichen? Stehen die B auch in der DB oder wo passiert der Vergleich überhaupt?
Vielleicht kannst du (je nach der Bestimmung der Toleranz) einen (oder auch mehrere) Zusatzwert zu den Arraydaten mitspeichern, der dann zum Vergleichen hergenommen wird.
Hello,
A)
ich habe ein zweidimensionales array (1-n)(1-128) mit jeweils einem int-wert (0-128).B)
zusätzlich habe ich ein zweites zweidimensionales array mit der gleichen struktur, jedoch entschieden kleiner (1-n minus X)(1-128)die zweite dimension der arrays (1-128) KANN komplett übereinstimmen, muss es jedoch nicht... oder hat nur minimale abweichungen.
problem:
-von den arrays aus A) habe ich sehr viele vorliegen und will/muss sie irgendwie in eine datenbank verfrachten
-das array von B) dient lediglich als vergleichswert und muss gegen alle anderen aus A) verglichen werden
-wie speichere ich diese daten sinnvoll in der DB, dass ich minimale abweichungen innerhalb des selects als toleranz durchgehen lassen kann und das ganze auch bei tausenden von einträgen noch performant bleibt?
Du kannst die hierarchische Struktur auflösen in eine linearisierte Pfad-Darstellung.
Wie das gehen kann, habe ich hier schon mal gepostet.
http://forum.de.selfhtml.org/archiv/2009/5/t187309/#m1244872
http://forum.de.selfhtml.org/archiv/2009/8/t189395/#m1261782
Mit der funktion linearize() kannst Du die Baumstruktur in ein eindimensionales Array, dessen Bezeichner die Pfad-Strings und dessen Values die zugehörigen Werte enthalten, umwandeln.
Diese kannst Du dann bequem in einer SB abspeichern oder mit dem Vorgabe-Array, das ebenfalls linearisiert wurde, vergleichen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg