Allgemeine Fragen zum G-ORM

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Allgemeine Fragen zum G-ORM

Beitrag von Thalo » 23.02.2010, 08:33:27

Morgen,

beim durchstöbern der Dokumenation für den GORM ist mir aufgefallen, dass dort die ID-Spalten immer vom Typ tinyint sind. Tinyint ist ja nun sehr klein gewählt. Gibt es hier einen besonderen Grund?

Was mich auch irritiert ist, dass die Relationstabellen einen Primärschlüssel benötigen. Wofür genau wird der benötigt? :geek:

Desweiteren wäre eine Mehode sich den Query zu Debuggingszwecken ausgeben zu lassen sinvoll. :)
Zuletzt geändert von Thalo am 23.02.2010, 20:56:18, insgesamt 1-mal geändert.

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Allgemeine Fragen zum GORMMo

Beitrag von MrNiceGuy » 23.02.2010, 09:16:56

Moin!

Also erstmal sind die PKs vom Typ INT und nicht TINYINT.

Das mit dem PK in den Relation-Tables habe ich auch schon mehrfach angesprochen, aber bisher wurde das noch nicht geändert ;)

Zum Thema Debugging kann ich nicht viel sagen, aber es gibt wohl eine Möglichkeit das Logging zu aktivieren (wenn es das nicht schon standardmäßig ist) und diese schreibt dann ja eventuell den Query in die entsprechende Log-Datei!?

MfG
Lutz
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Allgemeine Fragen zum GORMMo

Beitrag von dr.e. » 23.02.2010, 10:18:14

Hallo ihr beiden,
Was mich auch irritiert ist, dass die Relationstabellen einen Primärschlüssel benötigen. Wofür genau wird der benötigt? :geek:
Das erhöht bei großen Daten-Mengen die Selektivität des Indizes auf der Tabelle, sofern mehrere Beziehungen des gleichen Typs zu den gleichen Objekten vorhanden sind. Es handelt sich also um eine Optimierungs-Maßnahme, die IMHO nicht schadet. Denn: eine INT-Spalte belegt nicht so viel Speicherplatz.
Desweiteren wäre eine Mehode sich den Query zu Debuggingszwecken ausgeben zu lassen sinvoll. :)
Das gibt es natürlich, denn nur so ist es möglich, die erzeugten Abfragen zu Performance-Optimierungs-Zwecken auch analysieren oder zum Debuggen der Anwendung nutzen zu können. Hierzu muss beim Erzeugen des GORM über die Factory der 5.te Parameter auf true gesetzt werden. Dieser bewirkt, dass alle Abfragen in eine Log-Datei geschrieben werden. Eine direkte Ausgabe macht keinen Sinn, denn sonst produzierst du bei Session-basierten Applikationen ständig "Cannot send session limiter"-Fehler. Die Doku zu diesem Parameter findest du im Kapitel Erzeugen einer Instanz des GORM.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Allgemeine Fragen zum GORMMo

Beitrag von Screeze » 23.02.2010, 15:35:31

Zu der sache mit dem Bigint als ID, das wolltest du doch mal einbaun Christian, was ist daraus geworden?
Alternativ kann ich natürlich noch eine Option in das Setup- und Update-Tool einbauen, mit dem der Datentyp für Index- und ID-Spalten definiert werden kann - parallel zu Storage-Engine?
Ich baue eine Option ein und melde mich, sobald der Code im SVN verfügbar ist.
Zitat aus
viewtopic.php?f=1&t=80&hilit=ID+int&start=120

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Allgemeine Fragen zum GORMMo

Beitrag von dr.e. » 23.02.2010, 16:01:30

Hallo Ralf,

das ist eine berechtigte Frage, das muss bei mir untergegangen sein. Damit das nicht nochmal passiert habe ich das gleich in die Roadmap aufgenommen. :) Einbauen werde ich das zusammen mit den zusätzlichen Indizes.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Allgemeine Fragen zum GORMMo

Beitrag von Screeze » 23.02.2010, 18:42:45

Ok.

Wo wir grade dabei sind, ich hätt auch ne Frage:
Um sicherzugehen dass ich in einer Funktion das RICHTIGE GenericDomainObject bekomme, müsst ich auf $__ObjectName zugreifen, allerdings scheint keine solche funktion vorhanden zu sein, und die get() funktionen bist du ja grad alle am rauswerfen.
Wie finde ich raus welcher Objekttyp (name) das genau ist?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Allgemeine Fragen zum GORMMo

Beitrag von dr.e. » 23.02.2010, 20:05:24

Hi Ralf,

ich habe in einem weiteren Checkin die Verwendung von get() für den Namen entfernt. Auf Basis der aktuellen SVN-Version kommst du wie folgt an den Namen:
$user = new GenericDomainObject('User');
echo $user->getObjectName();
Der Name des Objekts muss bei der Instanziierung immer mitgegeben werden. Erzeugst du selbst ein Objekt, bist du als Entwickler dafür verantwortlich. Beziehst du Objekte vom GORM, wird das für dich erledigt.

In 1.11 funktioniert das Code-Snippet wie folgt:
$user = new GenericDomainObject('User');
echo $user->get('ObjectName');
Viele Grüße,
Christian


Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Re: Allgemeine Fragen zum GORMMo

Beitrag von Thalo » 23.02.2010, 20:43:04

Hey Guys :),

Also erstmal sind die PKs vom Typ INT und nicht TINYINT.
Also in der Dokumenation unter Manuelles Setup

Code: Alles auswählen

`ApplicationID` tinyint(5) NOT NULL auto_increment, 

Code: Alles auswählen

 `GroupID` tinyint(5) NOT NULL auto_increment, 

Code: Alles auswählen

`UserID` tinyint(5) NOT NULL auto_increment, 
usw. :)
Das erhöht bei großen Daten-Mengen die Selektivität des Indizes auf der Tabelle, sofern mehrere Beziehungen des gleichen Typs zu den gleichen Objekten vorhanden sind. Es handelt sich also um eine Optimierungs-Maßnahme, die IMHO nicht schadet. Denn: eine INT-Spalte belegt nicht so viel Speicherplatz.
Das les ich nun zum ersten mal.. Im Manual hab ich dazu auch nichts finden können. Kannst du da etwas näher drauf eingehen? Meinem Verständnis nach kann immer nur 1 Index benutzt werden.

Wird der {AttributTyp} nur für das automatische Setup der Datenbank benötigt? Wenn ja, kann ich diesen nicht auch weglassen? Da beim automatischen Setup ja keine weiteren Konfigurationen möglich sind, muss ich ja sowieso noch mal Hand anlegen. Wenn ich dann im nachinein den Typ ändere, würde ich dies an zwei Stellen erledigen müssen.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Allgemeine Fragen zum G-ORM

Beitrag von dr.e. » 23.02.2010, 22:20:48

Hi Thalo,
Also in der Dokumenation unter Manuelles Setup
Korrekt, dort stehen in den Beispiel-Statements noch "TINYINT". Hierzu habe ich jedoch im SVN (ab Revision ) eine Möglichkeit hinzugefügt, dies beim Setup/Update ändern zu können. Beispiel:

Code: Alles auswählen

$setup = new GenericORMapperSetup();
$setup->setIndexColumnDataType('BIGINT(100) UNSIGNED');
Das les ich nun zum ersten mal.. Im Manual hab ich dazu auch nichts finden können. Kannst du da etwas näher drauf eingehen? Meinem Verständnis nach kann immer nur 1 Index benutzt werden.
Mir hat das mal ein Oracle-DBA erklärt und ich habe das deshalb so umgesetzt. Im Rahmen des neuen Features Zusätzliche Indizes für Setup-/Update-Tool GORM werde ich mir das Thema nochmal genauer ansehen und einige Performance-Tests für MySQL durchführen.
Wird der {AttributTyp} nur für das automatische Setup der Datenbank benötigt?
Ja, wird er.
Wenn ja, kann ich diesen nicht auch weglassen?

Nein, er gehört zur Definition eines Attributes schon dazu.
Da beim automatischen Setup ja keine weiteren Konfigurationen möglich sind, muss ich ja sowieso noch mal Hand anlegen. Wenn ich dann im nachinein den Typ ändere, würde ich dies an zwei Stellen erledigen müssen.
Warum ist beim automatischen Setup keine Konfiguration möglich? Du kannst jeden beliebigen Daten-Typen nutzen. Sofern du diesen ändern musst, kannst du das Update-Tool nutzen. So bleibt die config die zentrale Stelle der Änderung.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast