9 Méthodes multidimentionnelles et représentation d'associations
Méthodes d ’organisation avancées
– Méthodes multidimensionnelles
combiner plusieurs clés
– Représentation d ’associations
9.1 Méthodes
multidimensionnelles
Méthodes d’accès par point (Point Access Method – PAM )
– objet représenté par un point
Méthodes d’accès spatiales (Spatial Acces Method - SAM )
– objets spatiaux complexes
segments droite, polygones, etc.
Catégories de requêtes
Type point
– objets spatiaux qui contiennent un point
Type fenêtre
– objets qui sont inclus dans un sous-espace
surface, volume, etc.
Type plus proche voisin
– objets les plus proches d’une région R
9.1.1Combinaison d’organisations secondaires unidimensionnelles
La ville dont la coordonnée x=10 et y=20
1. Utiliser index sur x
2. Utiliser index sur y
3. Utiliser index sur x et index sur y
– intersection de listes de références
Quel est le plus performant ?
9.1.2 Hachage partitionné
s
1= 7 MOD 4 = 3
= 11
2s
2= 2 MOD 4 = 2
= 10
29.1.3 Fichier quadrillé (grid)
9 , 5
c 1 c 2
3 , 3
c 1 c 2
9 , 5
9
c1 < 9 c 1 9
0 5
0 1 5
1 0 5
1 0
1 5
Insertion de (14,6)
3 , 3
c 1 c 2
9 , 5
9
c1 < 9 c 1 9
0 5
0 1 5
1 0 5
1 0
1 5
3 , 3
c 1 c 2
9 , 5
9
9 , 5 1 4 , 6 6
0 5
0 1 5
1 0 5
1 0
1 5
Insertion de (11,7)
3 , 3
c 1 c 2
9 , 5
9
9 , 5 1 4 , 6 6
0 5
0 1 5
1 0 5
1 0
1 5
3 , 3
c 1 c 2
9 , 5
9
9 , 5 1 1 , 7 6
1 4 , 6 1 4 , 6
1 4 0 0 5
1 5
1 0 5
1 0
1 5
9.1.4 Arbre quaternaire (quadtree)
3 , 3 9 , 5
0 x x x2, 0 x x x2 1 x x x2, 0 x x x2 0 x x x2, 1 x x x2 1 x x x2, 1 x x x2
0 5
0 1 5
1 0 5
1 0
1 5
0 x x x 2, 0 x x x2 1 x x x2, 0 x x x2 0 x x x 2, 1 x x x2 1 x x x2, 1 x x x2
3 , 3
0 x x x2, 0 x x x2 1 x x x2, 0 x x x2 0 x x x2, 1 x x x2 1 x x x2, 1 x x x2
1 0 x x2, 0 0 x x2 1 1 x x2, 0 0 x x2
9 , 5 1 4 , 6
1 0 x x2, 0 1 x x2 1 1 x x2, 0 1 x x2
0 5
0 1 5
1 0 5
1 0
1 5
Arbre quaternaire-
PR (~quadtrie)
Insertion de (11,7) et (6,9)
0 5
0 1 5
1 0 5
1 0
1 5 0 5
0 1 5
1 0 5
1 0
1 5
9.1.4.1 Arbre
quaternaire à point
0 5
0 1 5
1 0 5
1 0
1 5 0 5
0 1 5
1 0 5
1 0
1 5
Arbre quaternaire à point (point quadtree)
Arbre quaternaire-PR
(~quadtrie)
9.1.5 Arbre k-d
9 5
c1 < 9
3 3
c1 > = 9
c2 < 3 c2 > = 3
1 4 6
c2 < 6
1 1 7
c2 > = 6
6 9
c1 < 6 c1 > = 6 c1 < 7 c1 > = 7
0 5
0 1 5
1 0 5
1 0
1 5
9.1.6 Arbre-R
1 2 3 4 5 6 7 8 9
A B C D
3 2
1
4
6
7
8 9
A B
C
D
5
Arbre-R+
1 2 1 4 6 7 8 9
A B C D E
3 5
3 2
1
4
6
7
8 9
A
B
D
E C
5
Oracle spatial
UDT SDO_GEOMETRY
– représentation géométrique
– élément primitif
point, segment de droite, de courbe, polygone, ...
– élément complexe
collection d’éléments primitifs
Indexage par arbre-R
–
INDEXTYPE IS MDSYS.SPATIAL_INDEX
Système de coordonnées paramétrable
– cartésien, géodésique, …
Attributs de SDO_GEOMETRY
CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE
NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY);
SDO_GTYPE
– Type d’objet
SDO_SRID
– Identification du système de coordonnées
SDO_POINT
– CREATE TYPE sdo_point_type AS OBJECT ( X NUMBER, Y NUMBER, Z NUMBER);
– applicable si les attributs suivants sont NULL
SDO_ELEM_INFO
– Méta-données pour interpréter le tableau SDO_ORDINATES
SDO_ORDINATES
SDO_GTYPE
DL0
0 Inconnu DL0
1 Un point
DL0 2 Suite de segments (droite ou arc) DL0
3 Polygone ou surface composée de polygones
DL0
4 Collection d’éléments DL0
5 Collection de points DL0
6 Collection de DL02 DL0
7 Collection de DL03 DL0
8 Solide DL0
9 Collection de solides
27/02/22 © Robert Godin. Tous droits réservés. 17
D : nombre de dimensions (2,3 ou 4)
L : indice de la dimension de la mesure associée pour un objet suivant la
convention LRS
Prédicats spatiaux
SDO_FILTER
–
filtre primaire basé sur Rectangle Couvrant Minimal (RCM)
–
exploite l’index spatial
SDO_RELATE
–
filtre plus fin après recherche par RCM
–
paramètre : nature d’interaction spatiale
TOUCH, CONTAINS, COVERS, ANYINTERACT, …
paramètre de résolution
SDO_WITHIN_DISTANCE
–
à l’intérieur d’une distance fixe
SDO_NN
–
plus proches voisins
SDO_JOIN
–
jointure basée sur filtre spatial
Exemple de schéma
CREATE TABLE ObjetsSpatiaux ( idObjet NUMBER(2),
description VARCHAR (20), objetSpatial SDO_GEOMETRY )
/
CREATE INDEX indexSpatial ON
ObjetsSpatiaux (objetSpatial)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
/
Insertions
-- Point 2D : coordonnées(20,30) INSERT INTO ObjetsSpatiaux VALUES (1,'Point',SDO_GEOMETRY(2001, null, SDO_POINT_TYPE(20,30,null),null,null)) /
-- Segment de droite : (5,10) à (20,15)
INSERT INTO ObjetsSpatiaux VALUES (2,'Segment de droite', SDO_GEOMETRY(2002, null, null,
SDO_ELEM_INFO_ARRAY(1,2,1),
SDO_ORDINATE_ARRAY(5,10, 20,15)) )
-- Rectangle : coin inférieur gauche (10,50) -- coin supérieur droit (20,70)
/
INSERT INTO ObjetsSpatiaux VALUES (3,'Rectangle', SDO_GEOMETRY(2003, null, null,
SDO_ELEM_INFO_ARRAY(1,1003,3), SDO_ORDINATE_ARRAY(10,50, 20,70)) )
/
Requête : objets dans un rectangle
-- Extraire les objets dans un rectangle SELECT idObjet
FROM ObjetsSpatiaux O WHERE
sdo_filter(O.objetSpatial,
SDO_GEOMETRY (2003,NULL,NULL,
SDO_ELEM_INFO_ARRAY(1,1003,3),
SDO_ORDINATE_ARRAY(10,10,100,100)) ) = 'TRUE'
/
9.2Représentation des associations
Important dans les SGBD
9.2.1 Allocation sérielle par
grappe hétérogène
Cas IMS (hiérarchique)
RECORD
–
hiérarchie d ’enregistrements dans une grappe (HSAM)
–
séquence pré-ordre
COURS INF5110
30 GODR6
2 jeudi 2:00 C-8230 A
CCCC33333333 B BBBB22222222
GROUPE 20 GODR6
COURS
INF4010 BDI 4
ETUDIANT
AAAA11111111 A
HORAIRE 1 mardi 2:00 C-5110
LIVRE
McHo88 BDII 4
A FFFF66666666
C EEEE55555555 ETUDIANT
DDDD44444444 D
2 jeudi 2:00 C-5110 HORAIRE
1 lundi 9:00 C-4340 Date86
2
3 4
5
6 7 8 1
9 10
11
12 13 14
15 16
9.2.2Organisation secondaire basée sur un mécanisme de référence
9.2.2.1 Référence simple
Cas « un »
9.2.2.2 Collection de références
Cas « plusieurs »
9.2.2.3Listes inversées
~ index sur (mot-clé, IDE)
D o c u m e n t 1 D o c u m e n t 2 D o c u m e n t 3 D o c u m e n t 4 D o c u m e n t 5 D o c u m e n t 6 I n f l u x
I n f o r m a t i q u e I n f r a r o u g e
I n g é n i e r i e
D o c u m e n t s L i s t e s
i n v e r s é e s M o t s - c l é s
Arbre-B
+Allocation
par grappe
9.2.2.4 Représentation par liste
SET CODASYL
9.2.2.5 Référence par clé étrangère
Relationnel
– par valeur
9.2.2.6 Indexage et hachage hétérogène
Deux types d'enregistrements associés (ou plus)
Même clé
–
clé primaire/étrangère en relationnel
Oracle
–
HASH CLUSTER
–
INDEX CLUSTER