SNDX: Fent un XML-DTD per a l'intercanvi de bases de dades de xarxes sense fils entre servidors
Avui dia ja tenim diverses formes de representar les bases de dades de nodes de les xarxes lliures, des de simples taules html amb llistats de nodes, a aplicacions més sofisticades (guifi.net n'és un exemple, però també tenim el nodedb, la base de dades que s'hagi definit cadascú... etc).
La idea és fer un format d'intercanvi estandaritzat amb aquells factors comuns d'aquesta informació per així poder sincronitzar servidors diferents, que eventualment poden fins i tot fer servir models de dades diferents (típicament en funció de cada aplicació). D'aquesta manera es pretèn aconseguir que inpendentment de l'aplicació que ho gestioni, es pugui bescanviar i consolidar la informació de diferents aplicacions i servidors.
Beneficis:
- Possibilitat de crear una base de dades global i consolidada entre servidors, xarxes i/o grups locals
- En el cas de que es faci servir una mateixa xarxa o grup, encara que hi hagi diferents servidors distriguits per la geografia gestionant àrees o zones, podent intercanviar-se informació entre ells i sincronitzar-se.
- Sense trencar la globalitat de la base de dades, que aplicacions diferents puguin coexistir i evolucionar de forma independent
Una primera aproximació podria ser un DTD com aquest:
<network nodes="<num>">
<network_id></network_id>
<network_name></network_name>
<network_url></network_url>
<network_base_url>[common prefix for url if they are not complete]</network_base_url>
<zone child_zones="<num>" zone_nodes="<num>" total_nodes="<num>">
<zone_id></zone_id>
<zone_title></zone_title>
<zone_parent_id></zone_parent_id>
<zone_description></zone_description>
<zone_url></zone_url>
<zone_map_url></zone_map_url>
<node devices="<num>">
<node_id></node_id>
<node_title></node_title>
<node_type> [backbone|AP|Client] </node_title>
<node_description></node_description>
<node_lat></node_lat>
<node_lon></node_lon>
<node_status></node_status>
<node_url></node_url>
<node_created>YY/MM/DD HH:MI</node_created>
<node_updated>YY/MM/DD HH:MI</node_updated>
<device interfaces="<num>" links="<num>" services="<num>">
<device_id></device_id>
<device_title></device_title>
<device_type> [LinuxAP|Linksys WRT54GL| (...)] </device_type>
<device_ssid></device_ssid>
<device_mode></device_mode>
<device_status></device_status>
<device_url></device_url>
<device_description></device_description>
<device_created>YY/MM/DD HH:MI</device_created>
<device_updated>YY/MM/DD HH:MI</device_updated>
<interface>
<interface_type> [ethernet|wLAN] </interface_type>
<ip_address> [ip address|dhcp] </ip_address>
<ip_netmask></ip_netmask>
</interface>
(...)
<link>
<linked_network> [empty = current network]</linked_network>
<linked_device_id></linked_device_id>
</link>
(...)
<service>
<service_id></service_id>
<service_type> [DNS|email|NTP|Proxy|(...)</service_type>
<service_url></service_url>
</service>
(...)
<graphs>
<graph>
<graph_type> [latency|bandwidth|(...)]</graph_type>
<graph_url></graph_url>
</graph>
(...)
</graphs>
(...>
</device>
(...)
</node>
(...)
</zone>
(...)
</network>
(...)
Explicació:
- Els (...) representen que l'element es pot repetir "n" vegades.
- Les diferents opcions van entre "[]" i separades per un "|".
- Quan no hi surt res, s'entèn que elnom del tag ja és autodescriptiu.
De moment el batejo com a "SNDX" (Simple Node Database eXchange)... fins que s'ens acudeixi un nom millor
En aquest DTD hi estic posant tota aquella informació "imprescindible" per aconseguir el nivell funcional equivalent al de guifi.net i pensant en un intercanvi de dades, entenent però que tots els tags són opcionals (és a dir, no cal informar de tot el DTD si hi ha informació que no existeix en determinades aplicacions), també pot ser que hi observeu que hi falta informació que seria necessària per a altres aplicacions... o sigui que "comments welcome", i l'anem editant, s'inicia a partir d'una primera impressió més o menys ràpida i convé de reflexionar-hi.
Llavors cadascú posa les condicions que vulgui alhora de permetre fer sindicació o no. Per exemple, en el cas de guifi.net, jo només ho deixaria sindicar amb aquelles organitzacions que s'acullin al Comuns Sensefils, o en el cas d'altres, amb autorització expressa (per evitar que algú en faci un ús indegut).


