Wie werden Objekte tatsächlich innerhalb der DB verwaltet?

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Wie werden Objekte tatsächlich innerhalb der DB verwaltet?

Beitragvon helas » Di 4. Mai 2010, 10:00

Ich bin mal wieder ratlos: Wir arbeiten nun schon so lange mit webEdition aber ein Geheimnis bleibt uns noch immer verborgen.
Wie und wo werden Objekte innerhalb der Datenbank tatsächlich verwaltet und was passiert bei einem Rebuild?

Aktuell haben wir automatisiert (leider fehlerhafte) Daten in die Objekttabelle per<we:write type="object"> importiert. Vorab haben wir ein Backup der Objekttabelle gemacht. Dieses SQL-Backup nach dem ersichtlichen Fehler sofort wieder eingespielt. Mit dem Ergbnis, dass auf der Website alles wieder wie gewohnt zu sehen war. Nur innerhalb webEdition in der Objektverwaltung war und ist noch immer der alte Murks zu sehen. Da halfen auch die vielen Rebuilds nicht viel. Zumal hier auch nicht klar wird, was mit der Option: "Rebuild/Objekte: Wählen Sie diese Option um die Tabellen der Objekte neu zu schreiben. Dies ist nur notwendig wenn die Objekttabellen fehlerhaft sind." gemeint ist. Welche Daten werden als Ursprungsdaten verwendet: die in der Objekttabelle, die in der "tblTemporaryDoc" oder liegen vielleicht noch woanders welche rum (z.B. Versionsdaten)?

Aktuell verwendete webEdition Version: 6.0.0.6 (Update ist geplant)

Und zu guter Letzt noch ein Vorschlag für die Entwickler unter Euch: bei einem Import per PHP als per <we:write type="object"> sollte einfache eine neue Version der Objekte erstellt werden, dann kann ganz anders auf solch einen Fehlerfall reagiert werden. Gleichfalls sollte<we:write type="object"> ein Attribut für den Redakteur erhalten, damit klar ist, wer die Version erstellt hat.

Ansonsten bin und bleibe ich ein großer Fan von webEdition.
<we:can>yes</we:can>

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon we:willRockYou » Di 4. Mai 2010, 10:25

Wahrscheinlich habt Ihr nur eine Tabelle gesichert und wiederhergestellt.

Die Daten werden leider redundant in den Tabellen tblObjectFiles und tblObject_X abgelegt, wobei das X für die Klassen-ID steht. Das Backend greift, glaube ich, auf die tblObjectFiles zu.
EOF; //totally retired

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon helas » Di 4. Mai 2010, 10:35

...das ist richtig - nur die relevante tblObject_x wurde als Backup erstellt und wieder eingespielt. In der Tabelle tblObjectFiles werden doch keine Inhalte - also Datenfelder abgelegt?!?
Ich gehe im Moment noch davon aus, dass hier die schicke Tabelle "tblTemporaryDoc" noch die Finger im Spiel hat. Aber von der möchte ich nicht immer ein Backup erstellen wollen, denn die hat eine stattliche Größe von 595 MB.

Die wichtigste Frage die mich jetzt beschäftigt: Kann ich die Objektdaten anhand des SQL-Backups wieder herstellen?

Bin für jeden Hinweis dankbar. helas
<we:can>yes</we:can>

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon we:willRockYou » Di 4. Mai 2010, 10:43

helas hat geschrieben: Und zu guter Letzt noch ein Vorschlag für die Entwickler unter Euch: bei einem Import per PHP als per <we:write type="object"> sollte einfache eine neue Version der Objekte erstellt werden, dann kann ganz anders auf solch einen Fehlerfall reagiert werden. Gleichfalls sollte<we:write type="object"> ein Attribut für den Redakteur erhalten, damit klar ist, wer die Version erstellt hat.
Da fällt mir gerade ein, das gibt es schon (fast). Ab WE 6.0.0.9 bekommt webEdition die Attribute "name" und "onduplicate".
Beim Anlegen von Objekten über Fontpage-Edit läst sich jetzt der Objektunterordner mittels des Attributs parentid spezifizieren. Ebenso läßt sich der Objektname über das Attribut name angeben und dabei über das Attribut onduplicate mit den Werten abort | overwrite | increment festlegen was bei Namensgleichheit passiert (#2860).
Mit onduplicate="overwrite" überschreibst Du das alte Objekt dann. Es würde noch ein Wert für eine neue Version fehlen. Kannst es ja als Feature-Request in den Tracker eintragen.
EOF; //totally retired

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon we:willRockYou » Di 4. Mai 2010, 10:52

helas hat geschrieben:Ich gehe im Moment noch davon aus, dass hier die schicke Tabelle "tblTemporaryDoc" noch die Finger im Spiel hat.
Bei aktivierter Versionierung ist das bestimmt der Fall. Kann ich aber nichts zu sagen, da ich die Versionierung nie verwendet habe.
helas hat geschrieben:Aber von der möchte ich nicht immer ein Backup erstellen wollen, denn die hat eine stattliche Größe von 595 MB.
Heisst das nun, Du hast die tblObjectFiles zurückgesetzt und die Einträge tauchen dennoch im Backend auf? Ich denke wenn die tblObjectFiles keine entsprechenden Einträge enthällt, ist der Inhalt der tblTemporaryDoc egal.
EOF; //totally retired

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon helas » Di 4. Mai 2010, 11:22

Ich habe nur die Objekt-Tabelle tblObject_x zurückgespielt. Und nun habe ich keine Ahnung woher sich webEdition die Daten zur Anzeige innherhalb webEdition zieht und wie ich die Daten wieder sauber an allen Stellen sehen kann. Denn im Moment können die Objekte nicht ordentlich in webEdition editiert werden - steht ja immer noch Murks drin.
Nach erster Sichtung stehen die Objektdaten auch in der Tabelle "tblTemporaryDoc". Hatte gehofft, diese dort mit einem Rebuild wieder zu "säubern" - ohne Erfolg.

Danke schon mal für Deine Mühe Daniel
<we:can>yes</we:can>

Creutzburg
Senior Member
Beiträge: 425
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Dresden
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon Creutzburg » Di 4. Mai 2010, 11:29

Meines Wissens schaut WE zunächst, ob es vom jeweiligen Objekt auch einen Eintrag in der Tabelle "tblTemporaryDoc" gibt. Wenn ja, wird dieser für den Editmode herangezogen. Wenn nein, wird direkt aus der tblObject_X gelesen. Die tblTemporaryDoc ist bei Objekten nur von Bedeutung, wenn Du entweder ein Objekt geparkt hast oder wenn es Objekte gibt, die nach dem Ändern noch nicht veröffentlicht (sondern nur gespeichert) wurden. Ist das nicht der Fall, kannst Du gnadenlos die entsprechenden Einträge aus der tblTemporaryDoc rauslöschen (über phpMyAdmin) und gut ist's.

Gruß,
Alex
http://www.xport.de – Internet-Agentur für Hotels
http://www.domainpreisvergleich.de – Domain-Preisvergleich inkl. Verfügbarkeits-Check – ist meine Wunschdomain noch frei, und wo registriere ich sie am günstigsten?

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon helas » Di 4. Mai 2010, 14:48

...zur Auflösung: in der Tabelle "tblTemporaryDoc" sind die Objekte redundant (wie von Alex gedacht) angelegt und können dort auch skrupellos gelöscht werden. Dann werden die Objetdaten (scheinbar) auch aus der jeweiligen Objekttabelle geholt.
Da in der Tabelle "tblTemporaryDoc" die Objekte mehrfach mit dem Unterschied in der Spalte "Active" (bei mir 0 oder 1) eingetragen waren, habe ich mich nicht getraut die Objekte selektiv zu löschen. Auf jeden Fall haben sie sich inhaltlich voneinander unterschieden - mit "1" waren die fehlerhaften abgelegt.

Eine Doku zum webEdition eigenen Handling der Objekte könnte hier Sinn machen. Vorallem bei der Arbeit direkt im Backend bzw. in der Datenbank. Oder wir tragen an anderer Stelle ein paar Tipps und Tricks zum Thema zusammen!?

Grüße aus Hannover, Lars
<we:can>yes</we:can>

ArminSchulz
Senior Member
Beiträge: 250
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Berlin
Kontaktdaten:

Re: Wie werden Objekte tatsächlich innerhalb der DB verwalte

Beitragvon ArminSchulz » Mi 12. Mai 2010, 10:20

Hi
[quote="we:willRockYou"]
Bei aktivierter Versionierung ist das bestimmt der Fall. Kann ich aber nichts zu sagen, da ich die Versionierung nie verwendet habe.
quote]

Versionierung hat damit nichts zu tun.
Das sind eigene Tabellen und unabhängige Prozeduren

Die versuchen beim Zurücksetzen auf eine alte Version dann auch die TemporaryDocs wieder auf den alten Stand zu bringen (was es nicht gerade einfacher macht).

Versionierung sollte eigentlich auch bei einem Import (und overwrite) die alte Version in einer eigenen Tabelle sichern. Von dort hätte man dann einfach zurücksetzten können.

Zum Thema temporarydocs überlege ich zur Zeit, ob es nicht sinnvoll wäre, beim Publizieren die entsprechenden Einträge aus den Temporarydocs zu löschen (was die Tabelle kleienr machen würde, eentuell auch einen Rebuild um diese Tabelle zu bereinigen).
Der Eintrag mit Active=0 ist sowieso sinnlos - da war wohl mal irgendwas angedacht um den wiederherstellen zu können, was aber nie realisiert wurde und mit der Versionierung ist das jetzt eigentlich völlig redundant.
Dr. Armin Schulz

Astendo GmbH
www.astendo.de


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste