<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 31 Oct 2013, at 23:43, Pietro Zambelli <<a href="mailto:peter.zamb@gmail.com">peter.zamb@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: monospace; font-size: 9pt;"><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">On Thursday 31 Oct 2013 21:17:24 Pietro wrote:</div><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">> quindi ora sto trasformando il mio codice per farlo assomigliare al mio</div><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">> codice d'esempio e vediamo se riesco a capire cosa non andava.</div><p style="white-space: pre-wrap; margin: 0px; text-indent: 0px;"> </p><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">sono riuscito a completare l'operazione, anche se al limite della memoria... temo sia necessario un ripensamento della struttura della (mia) libreria :-P</div><p style="white-space: pre-wrap; margin: 0px; text-indent: 0px;"> </p><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">Credo che il problema sia dovuto al "circular reference". Io ho scoperto questo problema, questa sera... :-)</div><p style="white-space: pre-wrap; margin: 0px; text-indent: 0px;"> </p><div style="white-space: pre-wrap; margin: 0px; text-indent: 0px;">Quanto è "pericoloso", avete letture o link consigliati sull’argomento?</div></div></blockquote><div><br></div><div>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)</div><div>al modello dei dati che hai realizzato (e implementato in SQLite).</div><div><br></div><div>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</div><div>comp.lang.python da leggere.</div><div><br></div><div>Se, invece, la circular-reference riguarda il modello dei dati, allora ti condivido i miei 2 cents.</div><div>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.</div><div>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.</div><div>In soldoni, la domanda che mi porrei io fossi in te è: "la normalizzazione dei dati è necessaria? Mi da qualche vantaggio?"</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Al contrario, MongoDB [2] vince su HDF5 in termini di performance (query time - insert/select/update).</div><div><br></div><div>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].</div><div>Per MongoDB, invece, c’è pymongo [5]</div><div><br></div><div>Ciao.</div><div>Valerio</div><div><br></div><div><br></div><div>—</div><div>[0]: <a href="http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python">http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python</a></div><div>[1]: <a href="http://www.hdfgroup.org/HDF5/">http://www.hdfgroup.org/HDF5/</a></div><div>[2]: <a href="http://www.hdfgroup.org/HDF5/">http://www.hdfgroup.org/HDF5/</a></div><div>[3]: <a href="http://www.pytables.org/moin">http://www.pytables.org/moin</a></div><div>[4]: <a href="https://pypi.python.org/pypi/h5py">https://pypi.python.org/pypi/h5py</a></div><div>[5]: <a href="http://api.mongodb.org/python/current/">http://api.mongodb.org/python/current/</a></div><div><br></div></div>
<br></body></html>