Oracle Spatial de la A a la Z - Unidad 7

8
7 Índices espaciales OBJETIVOS Explicar el concepto de indexación espacial. Generar un árbol R índice espacial. Estimar el tamaño de un índice R-tree. Oracle Spatial utiliza un índice espacial para optimizar el rendimiento de las consultas espaciales, de la misma manera que se crea un índice en los datos escalares para mejorar el la obtención de información. Oracle Spatial utiliza índices de árbol R para un acceso eficiente a los datos. Los índices espaciales se pueden construir en dos, tres o cuatro dimensiones; siendo el de default el de dos dimensiones. Un índice espacial puede ayudar a encontrar: •Objetos dentro de un espacio de datos indexado, mismos que interactúan con un punto o área de interés (ventana de consulta) •Pares de objetos que interactúan unos con otros (spatial join). 1 INDEXANDO DATOS ESPACIALES

description

by Jorge Ulises Gonzalez Medina

Transcript of Oracle Spatial de la A a la Z - Unidad 7

Page 1: Oracle Spatial de la A a la Z - Unidad 7

7 Índices espaciales

OBJETIVOS•Explicar el concepto de indexación espacial.•Generar un árbol R índice espacial.•Estimar el tamaño de un índice R-tree.

Oracle Spatial utiliza un índice espacial para optimizar el rendimiento de las consultas espaciales, de la misma manera que se crea un índice en los datos escalares para mejorar el la obtención de información.

Oracle Spatial utiliza índices de árbol R para un acceso eficiente a los datos. Los índices espaciales se pueden construir en dos, tres o cuatro dimensiones; siendo el de default el de dos dimensiones.

Un índice espacial puede ayudar a encontrar:•Objetos dentro de un espacio de datos indexado, mismos que interactúan con un punto o área de interés (ventana de consulta)•Pares de objetos que interactúan unos con otros (spatial join).

1 INDEXANDO DATOS ESPACIALES

Page 2: Oracle Spatial de la A a la Z - Unidad 7

2 INDEXADO CON ÁRBOLES R

El indexado con árboles R está basado en el MBR (minimum bounding rectangles ) para el caso de dos dimensiones, mientras que para tres dimensiones se utiliza el MBV (minimum bounding volumes ).

La indexación utilizando árboles R es usada como técnica debido a que prácticamente no requieren de que se realice de manera continua un tunning (optimizacion).

Cada entrada al índice aproxima una geometría utilizando MBR para 2D y MBV para 3D.MBRs y MBVs son indexados internamente utilizando una estructura de árbol.

Cada nodo hoja del índice árbol R almacena un MBR y un puntero a la geometría original.

3 ¿CÓMO SON INDEXADAS LAS GEOMETRÍAS EMPLEANDO ÁRBOLES R?

Cuando un índice de árbol R se genera, un rectángulo mínimo (MBR) es construido alrededor de cada geometría. En la figura de arriba, hay nueve rectángulos mínimo de delimitación, una para cada geometría. En el nivel más bajo de un índice árbol R, hay un puntero hacia la geometría real (para el identificador de la geometría) y el MBR asociado a esa geometría. Índices árbol R tienen una entrada de índice (o nodo de la hoja) para cada geometría.

Page 3: Oracle Spatial de la A a la Z - Unidad 7

Después de que el MBR se construye alrededor de cada geometría, las aproximaciones se agrupan de manera que las geometrías que están cercanas unas a otras

En el nivel más bajo (o nivel hoja) del árbol-R, A, B, C y D contienen MBR para cada una de las geometrías, así como enlaces o apuntadores a cada una de estas geometrías.

A continuación, A, B, C y D se agrupan en función de su proximidad. En este caso, A y B se agrupan en R, mientras que y C y D se agrupan en S.

El nivel superior (o raíz) de los índices de árbol R, contiene enlaces a R y S, así como a los rectángulos de delimitación mínimas asociados con esos dos nodos.

Nota: la estructura de árbol R está optimizado para el acceso a elementos que están cerca unos de otros.

El número de ramas de un árbol R se calcula automáticamente basado en el tamaño de bloque de base de datos utilizado para la instancia, así como el número de dimensiones que se indexan.

Page 4: Oracle Spatial de la A a la Z - Unidad 7

4 SINTAXIS “CREATE INDEX”

CREATE INDEX <index-name>

ON <table-name> (<column-name>)

INDEXTYPE IS MDSYS.SPATIAL_INDEX

[PARAMETERS (

'SDO_RTR_PCTFREE = <param_value>

<storage_parameters> = <param_value> ... ')

] [PARALLEL [<parallel_degree>]];

La instrucción CREATE INDEX es exactamente la misma que cualquier otra instrucción CREATE INDEX Oracle, con algunas opciones adicionales.

<INDEX-NAME>: Nombre del índice. Se deben de respetar la serie dec onvenciones de nomenclatura en el nombre de índices. La longitud del nombre debe ser 30 caracteres o menos, y el nombre del índice debe comenzar con un carácter alfabético.<TABLE-NAME>: Nombre de la tabla que contiene la columna espacial que será indexada. La columna espacial es del tipo SDO_GEOMETRY.<COLUMN-NAME>: El nombre de la columna del tipo de SDO_GEOMETRY que se va a indexar espacialmente.

CREATE INDEX geod_states_sidx

ON geod_states (geom)

INDEXTYPE IS mdsys.spatial_index;

Cuando un índice árbol R se construye, una tabla de Oracle se crea. Esto también se conoce como la tabla de índice espacial. La tabla de índice espacial es visible para el usuario final, y se marca en las tablas de metadatos de Oracle (USER_TABLES, ALL_TABLES, DBA_TABLES) como secundaria = 'Y'.

El espacio de tablas para el índice espacial aparece como NULL si se busca en user_indexes. Esto es porque el nombre de índice espacial es sólo una estructura lógica asociada con otra estructura física (la tabla de índice espacial). Las tablas y los parámetros de almacenamiento pueden ser especificadas en la tabla de índice espacial asociada con el nombre de índice espacial.Nota: No actualizar, modificar o eliminar la tabla de índice espacial. Al colocar el índice, éstas se actualizan automáticamente.

Page 5: Oracle Spatial de la A a la Z - Unidad 7

<SDO_INDX_DIMS>:Define el número de dimensiones en que se construye el índice.Permite la indexación de más de dos dimensiones.

<SDO_RTR_PCTFREE>:Es el porcentaje de ramas de los árboles R reservadas en cada nodo del índice para dar cabida a futuras inserciones.Acepta el 10 por ciento como valor predeterminado, es decir, 10 por ciento de las ramas en el árbol, son reservadas cuando se crea el índice espacial.

<LAYER_GTYPE>:Es la restricción de tipo de capa para todos los tipos de índice espacial.Sólo permiten geometrías del tipo dado para que se indexe.Se utiliza para el funcionamiento y control de tipo de geometría.Los valores válidos son:

• POINT• LINE o CURVE • POLYGON• MULTIPOINT • MULTILINE or MULTICURVE• MULTIPOLYGON• COLLECTION

INITIAL: Tamaño de la medida inicial de la tabla de índice espacial.

TABLESPACE:Nombre del tablespace donde se aloja el índice.

WORK_TABLESPACE: Nombre del tablespace donde las tablas de trabajo son creadas durante el proceso de creación de índices árbol R.

Algunos parámetros de almacenamiento adicionales (no se usa con frecuencia):

NEXT: Tamaño de la medida siguiente de la tabla de índice espacial

PCTINCREASE:Porcentaje en que aumentará la medida utilizada anteriormente, cuando surgela necesidad de crear una nueva dimensión.

MINEXTENTS: Número mínimo de extensiones para crear la tabla de índice espacial.

MAXEXTENTS: El número máximo de extensiones para crear la tabla de índice espacial.

Page 6: Oracle Spatial de la A a la Z - Unidad 7

<SDO_DML_BATCH_SIZE>:Es un parámetro de ajuste a las actualizaciones de índice.Acepta 1000 como el valor predeterminado, que está bien para la mayoría de las cargas de trabajoPuede poseer un valor más alto si se dispone de más memoria.

<SDO_NON_LEAF_TBL>: Este parámetro permite que el índice de árboles R se divida en dos durante la creación del índice.

PARALLEL [<parallel_degree>]Esto rompe la labor de la creación del índice en trozos más pequeños que se pueden realizar en paralelo. Si el grado de paralelismo no se especifica, Oracle elige un valor por defecto en base a los algoritmos internos de Oracle, los cuales se encuentran basados en el número de CPU´s.

5 CREACIÓN DE UN ÍNDICE ESPACIAL EN PARALELO

Spatialclustering

Spatialclustering

Spatialclustering

Spatialclustering

MBR

MBR generation

MBR generation

MBR generation

MBR generation

Spatialindextables

CREATE INDEX….

PARALLEL 4;

Si un recurso del sistema (CPU, memoria, E / S) ya está saturado, el paralelismo puede afectar negativamente a ese recurso.

6 ANALIZANDO TABLAS ESPACIALES

exec dbms_stats.gather_table_stats(<schema_name>,<table_name>)

La información es recopilada para el optimizador de Oracle. La información recogida incluye el número de filas y de los índices, y demás información adicional. No hay necesidad de recopilar estadísticas sobre las tablas índice espacial.

Page 7: Oracle Spatial de la A a la Z - Unidad 7

7 SINTAXIS “DROP INDEX”

Esto sentencia elimina el índice espacial y su correspondiente tabla de índice espacial.Si CREATE INDEX en una columna de SDO_GEOMETRY no se llega a completar con éxito, se debe de tratar de hacer un DROP INDEX. Si eso no funciona, se debe de llamar a DROP INDEX mediante el uso de la opción FORCE.

DROP INDEX <index_name>;

DROP INDEX <index_name> FORCE;

8 SINTAXIS “ALTER INDEX REBUILD”

ALTER INDEX <index_name>

REBUILD

[PARAMETERS (<parameter string>)];

Esta sentencia vuelve a generar una tabla de índice espacial.Los parámetros se pasan como una cadena entre comillas.Por ejemplo, para cambiar la distribución espacial de tablas de índice de tablespace:

'Tablespace = indx_tblspc''Work_tablespace = work_indx_tblspc'

9 VISTAS DEL DICCIONARIO DE DATOS

USER_SDO_INDEX_METADATA: Muestra todos los metadatos de índice espacial para el usuario actual

ALL_SDO_INDEX_METADATA: Muestra todos los metadatos de índice espacial que el usuario actual tiene el privilegio de SELECT .

Oracle Spatial mantiene automáticamente las visitas del diccionario de datos.

Page 8: Oracle Spatial de la A a la Z - Unidad 7

USER_SDO_INDEX_METADATA

Otras vistas que son útiles para extraer información de índices espaciales son:USER_SDO_INDEX_INFOALL_SDO_INDEX_INFO

INDEX_NAME VARCHAR2(32)TABLE_NAME VARCHAR2(32)COLUMN_NAME VARCHAR2(2048)SDO_INDEX_TYPE VARCHAR2(32)SDO_INDEX_TABLE VARCHAR2(32)