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