Laden...

bäume speichern/laden

Erstellt von Savage vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.337 Views
S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 18 Jahren
bäume speichern/laden

Wie speichere ich am besten Bäume mit x-beliebiger Tiefe in einer Tabelle ab bzw. lese es aus.
Beispiel wie hier im Forum wenn man sich Threads mit der Baumstruktur ansieht.
PS: bitte keine treeview beispiel. am besten wäre wohl xml

402 Beiträge seit 2005
vor 18 Jahren

Was jetzt? Tabelle oder XML? Also in einer Tabelle total einfach. Man nehme 2 Felder, z.B. "NodeID" und "ParentID" speichere in NodeID die UniqueID des Knoten und in ParentID die des übergeordneten Knoten usw. in belieber Tiefe und Breite! Der/die oberste(n) Knoten haben einfach eine ParentID=0.

Fertig.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

N
4.644 Beiträge seit 2004
vor 18 Jahren
402 Beiträge seit 2005
vor 18 Jahren

Original von Noodles

>

Da steht ja quasi das selbe in grün. 😉 Naja, die Tabelle kannst Du dann natürlich um beliebige Spalten für Detailinformationen erweitern.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

N
4.644 Beiträge seit 2004
vor 18 Jahren

Ja, aber mit etwas suchen hätte man sich dann eben diesen Threa sparen können. 😉

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 18 Jahren

ich habe mich vielleicht nicht gut ausgedrückt.
wie bekomme ich nun wieder diese tabelle am besten in einen xml file (od. objekt) geladen?

402 Beiträge seit 2005
vor 18 Jahren

Na einfach rekursive auslesen! Beispiel Oracle (mit o.a. Feldnamen):

select * from mytree
start with parentid=0
connect by prior parentid=nodeid

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 18 Jahren

hm.. ich hab mir sagen lassen das rekursive datenbankabfragen sehr serverlastig sind. -- geht das überhaupt mit mysql oder mssql?

402 Beiträge seit 2005
vor 18 Jahren

Ich habe hier eine Tabelle mit 800.000 Knoten und bei eine rekursiven Abfrage mit Oracle zuckt die CPU (P4 1,8 GHz) nicht mal! MySQL weiss ich nicht, für MS-SQL gibts Funktionen.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

195 Beiträge seit 2004
vor 18 Jahren

Original von tomaten
Ich habe hier eine Tabelle mit 800.000 Knoten ...

Wie machst Du das?
Meine DB zuckt da schon merkbar und es sind unter 100.000, die an zwei Top-Nodes hängen X(

Was hast Du für Indices? Muß ich was besonderes beachten?

Umwege erhöhen die Ortskenntnis.

402 Beiträge seit 2005
vor 18 Jahren
  1. Oracle, 2. auf jedem ID-Feld ein Index bzw. auf den Kombinationen, denn bei mir werden die Knoten über 2 Felder aneinander gebunden.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

195 Beiträge seit 2004
vor 18 Jahren

Original von tomaten

  1. Oracle, 2. auf jedem ID-Feld ein Index bzw. auf den Kombinationen, denn bei mir werden die Knoten über 2 Felder aneinander gebunden.
  1. hab ich =)
  2. ich hab einen Index auf dem Primärschlüssel und einen Bitmap-Index auf dem Fremdschlüssel zum Parent

Es sind genau zwei Zweige über jeweils 4 Ebenen mit jeweils 32000 Datensätzen insgesamt im Zweig.
Um einen der zwei Zweige von ganz oben zu selektieren, brauche ich z.Z. 65 Sek mit Fetchen der Datensätze X(
Ein Count - also quasi ohne Fetchen der Daten - dauert über das Gleiche nur 4 Sek.

Das fetzt nicht so wein

Umwege erhöhen die Ortskenntnis.

402 Beiträge seit 2005
vor 18 Jahren

Original von Bini
Bitmap-Index

??? Was hast Du da für Mega-Daten drin? Bei mir sind es ja nu Nummern 😁 ! Poste doch mal Deine Tabellen Struktur.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

195 Beiträge seit 2004
vor 18 Jahren

Original von tomaten
??? Was hast Du da für Mega-Daten drin?

Och, das sind überhaupt keine Mega-Daten... X(

Hier (ungefähr) die Felder:

  • primary key
  • parent key
  • bezeichnung
  • kurzbezeichnung
  • Fremdschlüssel auf andere Tabelle
  • ev. noch ein, zwei Felder ohne große Bedeutung, bin grad zu Hause, da hab ich's nicht vor Augen

Die beiden Top-Nodes haben jeweils 16 Kinder, diese wiederum jeweils 25 Kinder und in der letzten Ebene liegen je 81 Datensätze pro Parent. Schön einheitlich 😉

Ich werde morgen mal den Bitmap-Index löschen und einen normalen Index auf den Parent-Key legen, bestimmt ist das der Übeltäter. 🤔

Umwege erhöhen die Ortskenntnis.

402 Beiträge seit 2005
vor 18 Jahren

Jaja, blos nichts normales benutzen 😜 . Wie oft ging das schon schief. 😉 Naja und Du redest wahrscheinlich über einen ADO-Zugriff, während ich gemeinerweise in einer Win32 Anwendung direkt über OCI gehe. 🙂

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

195 Beiträge seit 2004
vor 18 Jahren

Original von tomaten
Jaja, blos nichts normales benutzen 😜 . Wie oft ging das schon schief. 😉

Was soll ich dazu sagen? So ist die DB nun mal, aber ich habe jetzt (seit zwei Monaten) die alleinige Verantwortung und kann daher jetzt ändern, was immer ich will. Wenn ich nur wüßte, was ich will 😉

Original von tomaten
Naja und Du redest wahrscheinlich über einen ADO-Zugriff, während ich gemeinerweise direkt über OCI gehe. 🙂

Und? Warum soll OCI besser sein?

Umwege erhöhen die Ortskenntnis.

402 Beiträge seit 2005
vor 18 Jahren

Original von Bini
Und? Warum soll OCI besser sein?

Naja, direkter und schneller geht es nicht 😁 !

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

195 Beiträge seit 2004
vor 18 Jahren

Original von tomaten
Naja, direkter und schneller geht es nicht 😁 !

Hm, ich war der Meinung, der .Net OracleClient würde auch über OCI gehen. Hab ich irgendwo so gelesen, weiß allerdings auch nicht mehr, wo.

Aber ist sowieso alles egal, weil Chef heute verkündet hat, daß am Montag Insolvenz angemeldet wird schnief

Umwege erhöhen die Ortskenntnis.