[Python] Concatenazione lato DB => Rebus
Daniele Varrazzo
piro a develer.com
Mer 21 Mar 2012 15:39:13 CET
> 2012/3/21 Daniele Varrazzo <piro a develer.com>
>> Una relazione generica io non nego sia utile:
On Wed, 21 Mar 2012 15:15:33 +0100, Simone Federici wrote:
> Per le relazioni generiche invece dissento.
Stiamo dicendo la stessa cosa: anche io penso siano utili. Però...
> E dai l'hai detto pure tu che il mono tabella fa cagare quindi perche
> sputare su una soluzione ibrida?
...sto solo dicendo che se vuoi relazioni generiche devi accettare
*altri* limiti, sia nel design che nelle performance, perché il design
dei db relazionali è tipicamente pensato per sfruttare la specificità. È
come il C: è veloce perché la struttura degli oggetti si conosce prima
di eseguire il programma, e il compilatore, furbacchione, ne approfitta.
Questo è troppo limitante? Allora c'è il Python, dove le strutture sono
generiche, la cosa ci piace tanto, ma devi fare lookup anche quando
respiri, e il linguaggio è 100 volte più lento.
Un db con relazioni generiche è come Python implementato in C: non è
una cattiva idea di per sé, ma non puoi aspettarti che un "for" in
Python sia veloce quanto un "for" in C.
E, al di là delle prestazioni, il tuo problema è che vuoi offrire tutte
le feature del db (più qualcuna che non esiste e ti sei inventato sul
momento... ;) *e* relazioni generiche. Qui hai un problema diverso: con
il db ci puoi fare tanto, i db relazionali consentono di creare
strutture troppo generiche... per offrire relazioni generiche. Strano ma
vero. E buona fortuna a combatterci contro questa natura.
> comunque il mio proposito è quello di dare una features in più a
> Django che
> adesso non ha, quindi non la posso dare dicendo:
> "non usate le generic relation cretini :-)"
Una affermazione più ragionevole sarebbe: se usate relazioni generiche
e sperate che un join con quelle sia efficiente quanto una nativa,
ALLORA sì che siete cretini. :)
Tra l'altro aggiungere una feature utile (pkey composte: hai tutto il
mio appoggio) ma che finisce col non essere usabile con un'altra feature
(generic relations: buone ma devi sapere quello che stai facendo) non
sarebbe male comunque. Aggiungere una overgeneralizzazione che faccia
andare django ancora più lento di quanto non sia... questo a me farebbe
girare le scatole di più.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python