[linux-l] Was mich an WebApplikationen immer und?immerwiderAnkotzt...

Rocco Rutte pdmef at gmx.net
Mo Aug 18 11:08:46 CEST 2008


Hi,

* Olaf Radicke wrote:

>Ich habe es schon versucht mit dem Pseudo-Code an zu deuten: Das ich mehr 
>Daten im Arbeitsspeicher habe, als ich tatsächlich nutze und das ich nicht 
>mehr Schleifendurchläufe habe, als unbedingt nötig....

Was wirklich im Speicher ist sollte man den Query Logs entnehmen. Die 
ORM Tools, die ich kenne, sind lazy, d.h. sie holen nur, was man 
wirklich braucht und nur dann, wenn sich der DB Zugriff nicht mehr 
vermeiden lässt. Zum Beispiel:

   List foo = orm.get(foo=bar or ...)

Dann ist foo nicht eine Liste mit Objekten sondern ein Objekt, dass 
weiss wie es SQL ausführen muss. Wenn man:

   int x = foo.size()

macht, wird nicht die Länge der Liste der Objekte im Speicher ermittelt 
sondern eine query ala 'SELECT COUNT(*) FROM (...) T' ausgeführt.  Wenn 
man:

   Object a = foo.get(3)

macht wird:

   'SELECT ... FROM foo LIMIT 1 OFFSET 3'

ausgeführt, etc. Wenn man darauf einen Pager implementiert:

   pager = Pager(foo, page_number=3, items_per_page=50)

kann man:

   'SELECT ... FROM foo LIMIT 50 OFFSET 150'

ausführen und erhält alle Objekte, so dass man loopen kann.

Als einzige Kritik an ORM bleibt also nur, dass möglicherweise mehr 
Queries ausgeführt werden als wenn man die Queries per Hand schreibt. 
Ich kann mir momentan nur falsche Benutzung von ORM als Grund 
vorstellen, dass man mehr im Speicher hat als man möchte bzw. mehr 
Loops.

MfG, Rocco



Mehr Informationen über die Mailingliste linux-l