[Dizionario] Collaborazioni

Andrea Sivieri andrea.sivieri a libero.it
Mer 25 Set 2002 18:58:35 CEST


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...

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




Maggiori informazioni sulla lista Dizionario