[Dizionario] Collaborazioni

Davide Dozza davide.dozza a yacme.com
Mer 25 Set 2002 20:37:25 CEST


Andrea Sivieri wrote:
> Simone ha scritto:
> 
> 
>>Nelle poche chiacchierate che abbiamo avuto l'idea era quella di cercare
>>di fare uso di XML. Io pero` sono poco esperto sia di XML che di
>>database, anche se mi pare di aver capito che ci siano dei buoni metodi
>>automatizzati per fare interscambio dei dati fra i due.
> 
> 
> Scorrendo con un parser un documento XML e` proprio
> facile generare comandi SQL per popolare un database,
> oppure scrivere su di un file in formati diversi...
> 

Per quanto riguarda il database, terrei distinti il database di gestione da 
quello operativo.

- gestione: intendo il database generale dove vengono memorizzate le parole,
   e le regole di classificazione

- operativo: e quello utilizzato dallo strumento linguistico ed è estratto da
   quello di gestione

Quello di gestione non è importante la velocità di accesso quanto la 
manutenibilità e la possibilità di creare un bel front end, magari via web, per 
l'inserimento e la manutenzione dei dati. Pertanto un bel database SQL, magari 
PostgreSQL perche' relazionale e piu' facile da amministrare, potrebbe essere la 
scelta giusta.

Quello operativo invece deve essere di rapidissimo accesso *esclusivamente* in 
lettura. Da scartarsi quindi un database SQL ma bisognerebbe andare su qualcosa 
di compatto e che possa quindi risiedere in memoria.
Per ora tutti gli strumenti che ho visto utilizzano file di testo che vengono 
parsati e caricati in memoria all'interno di strutture apposite. Questo 
approccio e' sicuramente il piu' efficiente ma anche il piu' difficile da 
implementare. Onestamente non ho feeling con XML quindi non mi esprimo. Su 
Berkeley e file indirizzato concordo con l'analisi.

Riassumento il mio parere e' questo:

- Database di raccolta dati (gestione) -> PostgreSQL
- Database operativo -> file indicizzato, Berkeley DB o XML

Davide


> Pro e contro:
> 
> XML: 
> [+] facile gestire sia a mano che in automatico
> [-] per estrarre una parola con un parser tipo expat serve tempo O(N)
> (ovvero proporzionale alla lunghezza del file) (consultare M parole in 
> tempo O(N) e` un disastro perche` vuol dire operare in tempo O(M*N) )
> [+] puo` essere convertito facilmente in altri formati, che invece sono 
> piu` efficienti per la lettura sul campo
> 
> File indicizzato: (in teoria anche l'XML si puo` indicizzare)
> [+] si possono estrarre le informazioni in tempo O(1) oppure O(log N)
> a seconda del tipo di indice che si usa (hash oppure ricerca binaria)
> [+] l'indice puo` essere esterno, autogenerato, senza toccare il file
> [-] bisogna programmarselo
> [nota] non serve farselo se ci sono gia` dei formati target efficienti
> in cui convertire (ad esempio il formato dei programmi di spelling)
> [glossario] O(1) vuol dire tempo costante indipendente dalla lunghezza 
> del file, O(log N) vuol dire tempo proporzionale al logaritmo della 
> lungh. del file.
> 
> FIle ordinato con campi a lunghezza fissa:
> [+] accesso in tempo O(log N)
> [-] non flessibile e poi grande spreco di memoria
> 
> DB SQL tradizionale:
> [+] comodo da usare per lo sviluppatore
> [+] veloce se le tabelle sono indicizzate
> [-] non si puo` chiedere ad un utente che deve usare un programma
> di spelling di installare MySQL oppure PostgreSQL
> 
> DB embedded: (tipo Berkley)
> [+] e` un formato indicizzato ad accesso veloce (vedi file indicizzato)
> [-] non e` da considerare come formato di lavoro, perche` 
> difficilmente editabile, eventualmente puo` essere costruito 
> in automatico (mi sembra che Gnome lo usasse per certe configurazioni)
> 
> 
> Credo anche io che l'XML sia il formato piu` adatto per la raccolta dei dati.
> 
> Per progettare un formato XML estensibile e che eviti ridondanza credo 
> che converra` ragionare un po' in termini di tabelle e chiavi come si fa 
> per progettare un database tradizionale, anche se poi i dati non saranno 
> in un vero db (a meno che uno non ce li metta  :-)
> 
> Comunque alcuni tipi di ridondanza sono indispensabili per non
> fare impazzire chi inserisce i dati (ad esempio evitare dove possibile
> identificatori numerici nei file XML).
> 
> 
>>Al momento comunqne una minima classificazione (molto artigianale) c'e`
>>dato che ho diviso una word list (corta, ma accuratamente controllata),
>>in aggettivi, verbi, nomi, e per gli aggettivi pure in maniera piu`
>>dettagliata.
> 
> 
> E` una buona idea raccogliere le parole in liste omogenee come si sta facendo
> ora, perche` poi e` facile trasformarle in automatico in XML con due righe
> di script.
>  
> 
>>Tieni conto pero` che il semplice dizionario e` una cosa diversa, ed e`
>>gia` standardizzato (da dict).
> 
> 
> Il formato di dict e` furbo, perche` da quello che ricordo e`
> sia compresso, che indicizzato: hanno modificato il gzip
> per ottenere tutto cio`!  :-)
> 
> Ciao,
>           Andrea
> 
> _______________________________________________
> dizionario mailing list
> dizionario a softwarelibero.it
> http://lists.softwarelibero.it/mailman/listinfo/dizionario





Maggiori informazioni sulla lista Dizionario