Hay diferntes formas de representar las bases de datos de nodos de redes libres, desde simples tablas html con listados de nodos a aplicaciones más sofisticadas (guifi.net, por ejemplo, pero también tenemos nodedb, las bases de datos que cualquiera puede definir, ...).
La idea és crear un formato de intercambio estandarizado com informaciones comunes para permitir la sincronización en diferentes servidores, que incluso pueden utilizar modelos de datos direfentes (en función de cada aplicación particular). De esta manera se quiere conseguir que, independientemente de la aplicación de gestión, se pueda intercambiar i consolidar la información de diferentes aplicaciones i servidores.
Beneficios:
- Posibilidad de crear una base de datos global i consolidada entre servidores, redes y/o grupos locales.
- En el caso de que utilice la misma red o grupo, puede haber diferentes servidores distribuidos por la geografia gestionando áreas o zonas y podran intercambiarse información entre ellos, sincronizandose.
- Sin romper la globalidad de las bases de datos, diferentes aplicaciones podran coexistir i evolucionar de forma independiente.
Una primera aproximación podria ser un DTD como este:
<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ón:
- Los (...) representan que los elementos se pueden repetir "n" veces.
- Las diferentes opciones van entre "[]" y separadas por un "|".
- Cuando no aparece nada, se entiende que el nombre del tag ya es autodescriptivo.
De momento se llama "SNDX" (Simple Node Database eXchange)... hasta fijar un nombre mejor
En este DTD hay toda a aquella información "imprescindible" para conseguir el nivel de funcionalidad adequado pensando en un intercambio de datos, entiendiendo que todos los tags són opcionales (no és necesario informar aquella información que no exista en determinadas aplicaciones) también puede que falte mas información que sea necesaria para otras aplicaciones ... o sea que "comments welcome" así lo vamos editando y mejorando.
Otro tema importante és que cada uno tendrá que poner las condiciones que quiera para permitir la sindicación o no. Por ejemplo, en el caso de guifi.net, se considera que se puede dejar sindicar a aquellas organizaciones que se aconjan al Comuns Sensefils o, en caso de otras, con la autorización expresa para evitar que alguién haga un uso indebido.

