On 31 Oct 2013, at 23:43, Pietro Zambelli <peter.z...@gmail.com> wrote:

> On Thursday 31 Oct 2013 21:17:24 Pietro wrote:
> > quindi ora sto trasformando il mio codice per farlo assomigliare al mio
> > codice d'esempio e vediamo se riesco a capire cosa non andava.
>  
> sono riuscito a completare l'operazione, anche se al limite della memoria... 
> temo sia necessario un ripensamento della struttura della (mia) libreria :-P
>  
> Credo che il problema sia dovuto al "circular reference". Io ho scoperto 
> questo problema, questa sera... :-)
>  
> Quanto è "pericoloso", avete letture o link consigliati sull’argomento?

Dalla tua risposta, non credo di aver capito a cosa si riferisca la “circular 
reference”. In particolare, non ho ben chiaro se sia relativa agli import dei 
tuoi moduli, alle reference tra gli oggetti o (come l’avevo intesa la prima 
volta che ho letto il tuo post)
al modello dei dati che hai realizzato (e implementato in SQLite).

Se le circular-reference riguardano il codice o gli import dei moduli, se 
cerchi in Google, troverai una marea di discussioni e argomentazioni a 
riguardo. Una su tutte, ti segnalo questo post su Stackoverflow [0], la cui BA 
punta ad un post su
comp.lang.python da leggere.

Se, invece, la circular-reference riguarda il modello dei dati, allora ti 
condivido i miei 2 cents.
Innanzitutto, le circular reference in un modello relazionale sono espresse 
mediante relazioni ricorsive. Le relazioni ricorsive sono ampiamente supportate 
dal formalismo, ma il loro supporto “concreto” varia da implementazione (del 
DBMS) a implementazione.
Ora, non saprei dirti nello specifico se e come SQLite gestisca le relazioni 
ricorsive, ma se proprio non riesci a semplificare il tuo modello e hai vincoli 
tecnologici legati all’uso di un Db-SQL, allora prova alternative *migliori* 
tipo PostgreSQL.
In soldoni, la domanda che mi porrei io fossi in te è: "la normalizzazione dei 
dati è necessaria? Mi da qualche vantaggio?"

Se, al contrario, SQLite è la “prima” soluzione di memorizzazione che ti è 
venuta in mente di usare e potresti in linea di principio rimpiazzarla con 
altro, io andrei di HDF5 o di MongoDB.

La /rule of thumb/ da seguire, imho, è la seguente: se vuoi rimanere su 
memorizzazione file-based, senza dover mettere su server e servizi, HDF5 [1] è 
la soluzione. Inoltre, HDF5 ti dà l’enorme vantaggio di essere *molto* più 
efficiente rispetto a MONGO in termini di storage (i.e., spazio su disco), 
considerando che si possono anche applicare algoritmi di compressione sul file.

Al contrario, MongoDB [2] vince su HDF5 in termini di performance (query time - 
insert/select/update).

In entrambi i casi (che te lo dico a fare :-), l’integrazione con Python è 
semplicissima. Per HDF5 hai due soluzioni: la più nota PyTables [3] o h5py [4].
Per MongoDB, invece, c’è pymongo [5]

Ciao.
Valerio


—
[0]: 
http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python
[1]: http://www.hdfgroup.org/HDF5/
[2]: http://www.hdfgroup.org/HDF5/
[3]: http://www.pytables.org/moin
[4]: https://pypi.python.org/pypi/h5py
[5]: http://api.mongodb.org/python/current/


_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a