Problème des données spatiales Index spatial Bibliographie Références Bases de données spatiales Intérêt et problèmes d’indexation Guillaume Matheron [email protected] 2015 1 / 19 Problème des données spatiales Index spatial Bibliographie Références I - Problème des données spatiales II - Index spatial III - Efforts de standardisation IV - Expérimentation avec MySQL V - Ouverture - Bibliographie 2 / 19 Problème des données spatiales Index spatial Bibliographie Références Indexation Facile à indexer : Entiers Texte Date Type de requêtes visées : Recherche d’un élément Énumération d’un intervalle Similarité / proximité 3 / 19 Problème des données spatiales Index spatial Bibliographie Références Requêtes difficiles/spécifiques : filtrage Éléments dont l’id est premier Éléments dont le nom comporte exactement 3 voyelles Difficile à indexer : Images, sons (requêtes de similarité - Shazam, reverse image search) Fichiers binaires (requêtes de similarité - Par exemple synchronisation de fichiers dépacés et modifiés) Géométrie 4 / 19 Problème des données spatiales Index spatial Bibliographie Références Problème des données spatiales Données spatiales : Géographiques (cartes, localisation, ...) Tridimensionnelles (scan 3d, imagerie médicale, ...) 5 / 19 Problème des données spatiales Index spatial Bibliographie Références Problème : trouver rapidement une donnée à partir de sa position approchée →métrique Applications : trouver les clusters, les points proches, le voisinage pour des transformations locales d’objets 3D, ... Un index ne suffit pas ! Problème de base de la rastérisation Exemple : masque de convolution [4] 6 / 19 Problème des données spatiales Index spatial Bibliographie Références Index spatial En 1D : arbre binaire En 2D : arbre quad (quadtree) En 3D : arbre 8-aire (octree) Problème : en 1D, on aime bien faire des arbres n-aires (pour remplir un bloc) ! 7 / 19 Problème des données spatiales Index spatial Bibliographie Références Arbre R [2] 8 / 19 Problème des données spatiales Index spatial Bibliographie Références Arbre R Équilibrage complexe (heuristiques pour les dépassements) Faible remplissage minimal (environ 30% contre 50% pour les arbres B) Arbre R* →minimation du recouvrement (overlap) [1] 9 / 19 Problème des données spatiales Index spatial Bibliographie Références Autres index spatiaux - Z-curve Interlacement des bits de coordonnées Généralisable en n dimensions Conversion facile en arbre R équilibré 10 / 19 Problème des données spatiales Index spatial Bibliographie Références Arbre R de Hilbert [3] Courbe de Hilbert Donne un ordre total sur Rn 11 / 19 Problème des données spatiales Index spatial Bibliographie Références Arbre R de Hilbert Les sous-rectangles sont triés par abscisse de Hilbert du centre de leur MBR (=minimal bounding rectangle) Remplissage aussi important que souhaité 12 / 19 Problème des données spatiales Index spatial Bibliographie Références Efforts de standardisation Open Geospatial Consortium, ’94 Simple Features standard, ’04 Définit les formats standard d’échange de données spatiales simples (points, polygones, ...) 13 / 19 Problème des données spatiales Index spatial Bibliographie Références Expérimentation avec MySQL Génération d’un grand nombre de données aléatoires (106 enregistrements créés en 5 minutes) CREATE PROCEDURE ‘InsertRand‘ (IN NumRows INT, IN MinVal INT, IN MaxVal INT) BEGIN DECLARE i INT; SET i = 1; START TRANSACTION; WHILE i <= NumRows DO INSERT INTO test (location) VALUES (POINT(RAND(),RAND())); SET i = i + 1; END WHILE; COMMIT; END 14 / 19 Problème des données spatiales Index spatial Bibliographie Références SELECT SQL_NO_CACHE AsText(location) FROM ‘test‘ IGNORE INDEX(loc) WHERE MBRContains( GeomFromText(’LINESTRING(0.39 0.39,0.4 0.4)’) ,location) 119 total, Query took 0.4115 seconds 15 / 19 Problème des données spatiales Index spatial Bibliographie Références Expérimentation avec MySQL SELECT SQL_NO_CACHE AsText(location) FROM ‘test‘ WHERE MBRContains( GeomFromText(’LINESTRING(0.39 0.39,0.4 0.4)’) ,location) 119 total, Query took 0.0012 seconds (300 fois moins !) 16 / 19 Problème des données spatiales Index spatial Bibliographie Références mysql> EXPLAIN (...IGNORE INDEX(loc)...) +----+-------------+-------+------+---------------+---------+ | id | select_type | table | type | possible_keys | rows | +----+-------------+-------+------+---------------+---------+ | 1 | SIMPLE | test | ALL | NULL | 1100008 | +----+-------------+-------+------+---------------+---------+ 1 row in set (0.01 sec) mysql> EXPLAIN (...) +----+-------------+-------+--------+---------------+---------+ | id | select_type | table | type | possible_keys | rows | +----+-------------+-------+--------+---------------+---------+ | 1 | SIMPLE | test | range | loc | 225 | +----+-------------+-------+--------+---------------+---------+ 1 row in set (0.01 sec) 17 / 19 Problème des données spatiales Index spatial Bibliographie Références Conclusion/ouverture Espaces de grande dimension →reconnaissance d’images/de sons, clustering Représentation de données linéiques →base de données orientée graphes 18 / 19 Problème des données spatiales Index spatial Bibliographie Références Bibliographie [1] H. P. ; Schneider R. ; Seeger B. Beckmann, N. ; Kriegel. The r*-tree : an efficient and robust access method for points and rectangles. [2] A. Guttman. R-trees : A dynamic index structure for spatial searching. [3] I. Kamel and C. Faloutsos. Hilbert r-tree : An improved r-tree using fractals. [4] George Politis. Scan line rendering of convolutions. 19 / 19