Le blog de Fabien DUMINY

Un blog utilisant WordPress

Skip to: Content | Sidebar | Footer

Devoxx France 2013 – No(Geo)SQL

25 avril, 2013 (09:00) | Devoxx France 2013, Java | By: fabien

A l’occasion de Devoxx France 2013, j’ai assisté à la conférence intitulée « No(Geo)SQL » présentée par Nicolas Helleringer.

La modélisation géographique (aussi appelée spatiale) est possible dans les SGBD depuis longtemps mais ne fait toujours pas partie des fonctions de base. Les systèmes d’information géographiques (SIG) fournissent des services basés sur la localisation (en anglais, on dit LBS pour Location Based Services). La représentation du monde physique et le Géomarketing sont des utilisations typiques qui nécessitent un fond de carte associé à des informations spécifiques au système.

Il est difficile de représenter un polygone dans une colonne de SGBD car celui-ci est défini par des points et des vertex, en 2 ou 3 dimensions et souvent de manière dense.

L’OpenGIS Consortium a créé une surcouche complexe pour SQL, spécifiée par plus de 50 normes sur les SIG !

Parmi les plateformes LBS, la plus connue est Google Maps qui fourni une abstraction du format des adresses (l’europe, l’amérique et la ville de tokyo n’utilisent pas les même formats). Celui-ci gère la localisation des adresses, l’affichage des rues, du fond de carte, la prise en compte du navigateur. Il ne reste plus au client qu’à gérer ses données spécifiques sur son propre serveur. Celles-ci sont modélisées en SQL avec une latitude et une longitude. Cela présente des inconvénients, même sur un petit interval, car il faut un index sur la longitude et la latitude, ce qui peut être assez lourd.

Il existe différents algorithmes permettant de rechercher des données géographiques de manière optimale : arbre équilibré (en anglais B-tree), Quadtree (partitionnement d’un espace bidimensionnel), R-tree. En NoSQL, certaines bases de données gèrent les données spatiales : Neo4j (R-tree et Quadtree), mongoDB (B-tree).

Hibernate Search Spatial est une extension Hibernate ajoutant la gestion des données spatiales. L’indexation utilise l’algorithme Quadtree pour répartir l’ensemble des valeurs sur un maillage plus ou moins serré afin d’encadrer rapidement le secteur recherché. Cette extension introduit l’annotation @Spatial, à placer sur une classe (entité), ainsi que les annotations @Longitude et @Latitude à placer sur les champs de l’entité qui définissent un emplacement.

Pour terminer, Nicolas nous parle de la base de données libre GeoNames, qui contient les noms de nombreux lieux dans tous les pays (ville, rue, lac …). Comme exemple d’utilisation, il suggère une application mobile qui utilise la position GPS courante pour trouver un coiffeur à proximité.

Be Sociable, Share!
Share and Enjoy

Write a comment





If your website is claim enabled, it will be notified that you have posted here.

MySQL query error