[Ninux-Wireless] wnmap - next

Clauz clauz a ninux.org
Lun 7 Mar 2011 13:57:47 CET


On 03/07/2011 11:42 AM, Claudio wrote:
> Il 07 marzo 2011 11:38, Clauz <clauz a ninux.org> ha scritto:
>> Pensandoci: se usassimo un database testuale potremmo anche usare git (o
>> mercurial) come backend...
> 
> esplicita meglio la tua idea, come faresti? dettagli architetturali plz

Innanzitutto si potrebbero (o anche no) implementare gli utenti, con
differenti permessi: tutti possono vedere la history, magari con diff
tra revisioni, ma solo gli admin possono fare i revert.

Ho in mente una cosa tipo questa:
http://battlemesh.org/BattleMeshV4?action=info


Con git:

Sotto vengono fatte chiamate a git (diff, log, etc) parsate e presentate
agli utenti.

Drawback: per fare questa cosa serve un database dei nodi su file
testuale, rinunciando a mysql o postgres.


Senza git:

C'e' un modo nativo di 'versionare' la tabella di un database? So che
postgresql di fatto sotto tiene traccia delle versioni [0] (e, scopro
ora da wikipedia, anche mysql!) ma non credo che siano accessibili
all'utente del database...

Se no si fa una nuova tabella con la lista di operazioni effettuate
sulla mappa:

operations (timestamp, node_id, user, op_type, op_params)

- timestamp e user sono momento e utente (o indirizzo IP) che effettua
l'operazione
- node_id e' l'id del nodo coinvolto nell'operazione
- op_type puo' essere: insert, delete, edit_type, edit_location, edit_ip
- op_params e' un campo il cui significato varia a seconda del tipo di
operazione (hai presente assembler? :)) per cui, nel caso di:
   - 'insert' dentro op_params ci va null (tutti i dati del nodo stanno
nella tabella dei nodi)
   - 'delete' dentro op_params ci va null, ma bisogna fare in modo che
il nodo non venga effettivamente cancellato dalla tabella dei nodi ma
solo marcato come cancellato (impostando il tipo di nodo a -1 per esempio)
   - 'edit_type' dentro op_params ci vanno il tipo di nodo vecchio ed il
tipo di nodo nuovo, separati da punto e virgola
   - 'edit_location' dentro op_params ci va: old_lat,old_lng,old_alt;
new_lat,new_lng,new_alt (si capisce?)
   - 'edit_ip' dentro op_params ci mettiamo: ip_vecchio; ip_nuovo

Clauz


P.S. in realta' i database relazionali, soprattutto in ambito web, sanno
un po' di vecchio se confrontati con roba come couchdb [1], ma la curva
di apprendimento e' piuttosto ripida...

[0]
https://secure.wikimedia.org/wikipedia/en/wiki/Multiversion_concurrency_control
[1] http://couchdb.apache.org


-------------- parte successiva --------------
Un allegato non testuale รจ stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  262 bytes
Descrizione: OpenPGP digital signature
URL:         <http://ml.ninux.org/pipermail/wireless/attachments/20110307/d8a89bf6/attachment-0001.sig>


Maggiori informazioni sulla lista Wireless