[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