[OSM-dev-fr] Une non base de données pour stoker les coordonnées des nodes...

sly (sylvain letuffe) sylvain at letuffe.org
Mar 6 Déc 20:23:19 GMT 2011


Salut, courageux codeur du soir !

> Petit historique qui m'a amené à cette idée:
> - j'aimerai purger un cache squid ou varnish des tuiles obsolètes en
> parsant les minute-diff

Soit ;-)

> - il faut donc maintenir une base pour avoir retrouver les coordonnées
> des noeuds

ça ne te suffira pas pour ton objectif final !

Car tu souhaites (mais tu ne le sais pas encore) aussi expirer des tuiles dans 
lesquels aucun noeud n'a été modifié. Si si ;-)

2 cas que je connais :
- ta tuile est traversée par un way dont les noeuds sont à l'extérieur
- ta tuile est intégralement incluse dans un polygone OSM que le rendu veut 
remplir (lac, forêt, etc.)

Donc, et sauf erreur, je crois qu'il te faut aussi... une base des ways et des 
relations.

 
> D'où une idée sotte et grenue de maintenir un fichier "à plat" ne
> stockant QUE les coordonnées des noeuds.
> Vu que les ID des noeuds s'incrémentent et le peu de noeuds supprimés
> sur les 1,5 milliards de noeuds créés depuis le début il n'y aura pas
> trop de place de perdue.
> Sachant que 24bits suffisent pour une précision de l'ordre de 2,5m, il
> faut 6 octets par noeuds pour stocker sa position.
> Le fichier "plat" fait 9Go pour les 1,5 milliards de noeuds actuels et
> pour récupérer la position d'un noeud il suffit d'un fseek sur l'ID du
> noeud x 6 puis d'un fread de 6 octets.

ça ne m'a pas l'air trop mal comme idée par rapport à une base de donnée avec 
des indexes sur des entiers. 
Vu de loin, on dirait que tu ré-inventes un moteur de base de donnée, mais ton 
truc semble indiquer que la récupération d'un point va bien plus vite qu'avec 
un arbre binaire

Toutefois, voir si le seek sur disque magnétique pour aller chercher 3 octets 
ne devient pas limitant.
(peut-être que la cache disque d'un noyau linux peut te sauver les meubles)


-- 
sly (sylvain letuffe)



Plus d'informations sur la liste de diffusion dev-fr