Cuando crea una tabla o agrega una columna a una tabla de una base de datos, define un tipo de datos específico para la columna. Los tipos de datos determinan lo siguiente:
- Qué valores puede almacenar en la columna
- Qué operaciones puede utilizar en los datos de la columna
- Cómo se almacenan los datos de la columna en la base de datos
ArcGIS funciona con tipos de datos específicos. Cuando accede a una tabla de base de datos a través de una Conexión de base de datos o una capa de consulta, ArcGIS filtra todos los tipos de datos no compatibles. ArcGIS no mostrará los tipos de datos no compatibles, por lo que no podrá editarlos a través de ArcGIS. De igual modo, cuando utiliza ArcGIS para copiar y pegar tablas que contienen tipos de datos no compatibles de una base de datos a otra, ArcGIS solo pega las columnas que utilizan un tipo de datos compatible.
La primera columna de la tabla siguiente enumera los tipos de datos de ArcGIS. En la segunda columna hay una lista de los Oracle tipos de datos que crea ArcGIS. La tercera columna muestra qué otros Oracle tipos de datos (si hay alguno) se asignan al tipo de datos de ArcGIS cuando ve una tabla creada fuera de ArcGIS. La última columna ofrece información adicional cuando es necesario.
Tipos de datos de ArcGIS | Tipos de datos de Oracle creados | Otros tipos de datos Oracle que se pueden visualizar | Notas |
---|---|---|---|
BLOB | BLOB | ||
DATE | TIMESTAMP | ||
DOUBLE | NUMBER(38,8) | NUMBER(p,s) | La precisión y la escala especificadas en ArcGIS pueden afectar a los tipos de datos resultantes creados en la base de datos. Consulte Tipos de datos de campo de ArcGIS para obtener más información. |
FLOAT | NUMBER(38,8) | NUMBER(p,s) | La precisión y la escala especificadas en ArcGIS pueden afectar a los tipos de datos resultantes creados en la base de datos. Consulte Tipos de datos de campo de ArcGIS para obtener más información. |
GEOMETRÍA | ST_GEOMETRY, NUMBER(38), or SDO_GEOMETRY | El tipo de datos de Oracle que se crea depende del almacenamiento de geometría especificado al crear la clase de entidad. Binario comprimido o binario conocido (solo para geodatabases) = NUMBER(38); Oracle Spatial = SDO_GEOMETRY; tipo espacial = ST_GEOMETRY. Para usar ST_Geometry en una base de datos debe instalarlo. | |
GLOBAL ID | CHAR or NCHAR (UUID LEN) | Solo se admite en las geodatabases. El único identificador se creará como NCHAR si la palabra clave de configuración que especificó en la creación de la tabla tenía el parámetro UNICODE_STRING configurado en TRUE. | |
GUID | CHAR or NCHAR (UUID LEN) | El campo de identificador único se creará como NCHAR en una geodatabase corporativa si la palabra clave de configuración que se especificó en la creación de la tabla tenía el parámetro UNICODE_STRING definido como TRUE. | |
LONG INTEGER | NUMBER(38) | NUMBER (n) | El valor n puede estar en el rango de 5 a 10. Si se ha creado con ArcGIS for Desktop o con ArcObjects y la precisión se ha definido como 0, se crea un NUMBER(38) en la base de datos. De lo contrario, se utiliza la precisión especificada. |
OBJECT ID | NÚMERO(38) cuando se crea en una geodatabase corporativa NÚMERO(38) con secuencia y desencadenador cuando se crea en las siguientes circunstancias:
NUMBER(38) se genera siempre como identidad al usar ArcGIS para crear una clase de entidad o una tabla en una base de datos Oracle 12c o se utiliza la herramienta de geoprocesamiento Agregar campo Id. en aumento para agregar un campo de Id. en una tabla de una base de datos Oracle 12c. | El tipo de ArcGIS ObjectID es la columna de Id. de fila registrada de la tabla (o clase de entidad). Solo puede haber una por tabla. | |
RASTER | BLOB, LONG RAW, SDO_GEORASTER, or ST_RASTER | Los rásteres solo son compatibles con las geodatabases. El tipo de datos que se usa en el campo de ráster depende de la palabra clave de configuración que especifique al crear el catálogo de ráster, el dataset ráster o el dataset de mosaico. | |
SHORT INTEGER | NUMBER(5) | NUMBER(n) | El valor n puede estar en el rango de 1 a 5. Sin embargo, las columnas de enteros cortos solo pueden almacenar valores comprendidos en el rango de -32.768 a 32.767. Incluso si la precisión para el número es 5, no se puede almacenar un número mayor que 32.767 o menor que -32.768 en una columna de enteros cortos. Cuando se crea con ArcGIS for Desktop, n = 5. Esto permite almacenar enteros cortos que están dentro del rango permitido. |
TEXTO | VARCHAR2, CLOB, NVARCHAR2 o NCLOB |
Tipos de datos de texto
Si elige incluir un campo de texto en la tabla que crea con ArcGIS, se usará el tipo de datos VARCHAR2 cuando la base de datos no se configure para utilizar la codificación Unicode. Si se define un tamaño de campo de texto superior a 4000 y la base de datos no se ha configurado de modo que use la codificación Unicode, el tipo de datos de Oracle es CLOB.
Un campo de texto se creará como NVARCHAR2 si la base de datos se ha definido de modo que use la codificación Unicode. (Esta es la configuración predeterminada para las geodatabases en Oracle.) Si se define un tamaño de campo de texto superior a 2000 y la base de datos se ha configurado de modo que use la codificación Unicode, el tipo de datos de Oracle será NCLOB.
Tipos de geometría
Como se indica en la tabla, ArcGIS crea y puede trabajar con tres tipos de geometría en Oracle: Esri ST_Geometry, Oracle SDO_Geometry y binario comprimido. El almacenamiento de geometría binario comprimido solamente puede usarse en geodatabases.
ST_Geometry
La siguiente es una descripción general del tipo de datos espaciales ST_Geometry. Para obtener información específica de la implementación de Oracle, consulte ST_Geometry en Oracle.
El tipo de dato ST_Geometry implementa la especificación SQL 3 de los tipos de datos definidos por el usuario (UDT), lo que permite crear columnas capaces de almacenar datos espaciales como la ubicación de un hito, una calle o una parcela de tierra. Proporciona acceso de lenguaje estructurado de consultas (SQL) compatible con la Organización Internacional para la Estandarización (ISO) y con Open Geospatial Consortium, Inc. (OGC) a la geodatabase y a la base de datos. Este almacenamiento amplía las capacidades de la base de datos proporcionando almacenamiento para objetos (puntos, líneas y polígonos) que representan entidades geográficas. Se diseñó para utilizar de un modo eficiente los recursos de las bases de datos, para ser compatible con funciones de base de datos como la replicación y la partición y para brindar un acceso rápido a los datos espaciales.
Aunque puede definir una columna como tipo ST_Geometry, no puede insertar valores ST_Geometry en la columna ya que no se pueden crear instancias. En su lugar, debe insertar los valores de las subclases.
ST_Geometry en sí misma es una superclase abstracta sin instancias creadas. Sin embargo, se pueden crear. La creación de una instancia de tipo de datos se puede definir como una columna de tabla y posee valores de su tipo insertados en ella.
El siguiente gráfico muestra la jerarquía del tipo de datos ST_Geometry y las subclases.
Las subclases de ST_Geometry se dividen en dos categorías: las subclases de geometría base y las subclases de colecciones homogéneas. Las geometrías base incluyen ST_Point, ST_LineString y ST_Polygon, mientras que los conjuntos homogéneos incluyen ST_MultiPoint, ST_MultiLineString y ST_MultiPolygon. Como lo indica su nombre, los conjuntos homogéneos son conjuntos de geometrías base. Además, para compartir las propiedades de geometría base, los conjuntos homogéneos poseen algunas de sus propias propiedades.
Cada subclase almacena el tipo de geometría que implica su nombre; por ejemplo, ST_MultiPoint almacena multipuntos. Una lista de las subclases y sus descripciones se encuentra en la siguiente tabla:
Subtipo | Descripción |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
SDO_Geometry
SDO_Geometry se implementa mediante el sistema de tipo de objeto relacional extensible de Oracle. Oracle ofrece el tipo SDO_Geometry con dos opciones primarias:
- Oracle Spatial es un componente opcional de Oracle Database Enterprise Edition. Además de proporcionar el tipo SDO_Geometry, Oracle Spatial brinda una cantidad de capacidades geoespaciales adicionales.
- Oracle Locator brinda un subconjunto de capacidades de Oracle Spatial. Se incluye como un componente estándar de las ediciones Oracle Database Standard y Enterprise. Entre otras capacidades, proporciona el tipo de geometría de Oracle Spatial (al que se denomina SDO_Geometry) y una API de SQL a este contenido.
ArcGIS admite SDO_Geometry como método opcional para almacenar datos espaciales. Específicamente, la geometría de Oracle Spatial o Locator se puede utilizar para almacenar y administrar el contenido de entidad y ráster de datasets dentro de las geodatabases corporativas o las bases de datos Oracle.
SDO_Geometry almacena información acerca de una geometría que incluye el tipo de geometría, el Id. de referencia espacial, el tipo de interpolación (recto frente a curvado) y los valores de coordenadas. El tipo SDO_Geometry en geodatabases es compatible con la geometría de punto, línea y área única o multiparte. Las geometrías se pueden describir como con una interpolación lineal entre coordenadas según se define en OpenGIS Simple Feature Specification. Las geometrías también se pueden crear a partir de curvas circulares o una combinación de ambos métodos de interpolación. Los programas de aplicación son responsables de insertar, actualizar y recuperar correctamente el contenido del tipo SDO_Geometry mediante una interfaz de SQL relacional de objeto de Oracle. Las aplicaciones también son responsables de asegurar que el contenido de cada geometría se ajuste a las reglas definidas en la documentación de Oracle Spatial. Oracle brinda rutinas de validación de geometría que se pueden ejecutar después de insertar las geometrías. Además, a partir de Oracle 11.1.0.7, la geometría se valida en inserciones de índices.
Se debe registrar la información acerca de cada columna SDO_Geometry en el esquema de metadatos de Oracle Spatial, aunque Oracle Spatial no hace esto automáticamente. (El esquema de metadatos de Oracle Spatial se expone para cada esquema como la vista USER_SDO_GEOM_METADATA). El software que crea las columnas SDO_Geometry debe insertar los metadatos correspondientes a esas columnas. ArcGIS hace esto con todas las clases de entidad SDO_Geometry que crea. Los metadatos contienen el nombre de columna espacial, el nombre de la tabla en la que reside y del propietario, el Identificador de referencia de Oracle Spatial (SRID), el número de dimensiones, el rango de cada dimensión y la tolerancia de coordenadas.
Los índices espaciales brindan un acceso rápido a entidades basado en la ubicación de la geometría. Para SDO_Geometry, los índices espaciales de árbol R son en general los más eficientes y fáciles de crear; Oracle recomienda su uso en la mayoría de las situaciones. Oracle Spatial brinda la utilidad Spatial Index Advisor para ayudar a determinar el mejor tipo de índice espacial para una tabla determinada. Además, consulte la referencia y la guía del usuario de Oracle Spatial para obtener información detallada acerca de los tipos de índices espaciales admitidos, cómo crearlos, y las ventajas y desventajas de los diferentes métodos de índice espacial.
Oracle Spatial extiende SQL con funciones espaciales de búsqueda para el filtrado primario y secundario. Al incluir la función SDO_FILTER en una consulta SQL, se realiza una búsqueda espacial primaria con el índice espacial. Los predicados espaciales, como SDO_RELATE y SDO_CONTAINS, devuelven relaciones secundarias entre pares de objetos SDO_Geometry. Oracle Spatial tiene funciones espaciales de transformación que cambian la forma de un valor SDO_Geometry. Por ejemplo, la función SDO_BUFFER calcula las coordenadas de un nuevo objeto SDO_Geometry como un polígono de zona de influencia a una distancia determinada alrededor de la geometría original. Entre las demás funciones espaciales de transformación, se incluyen las siguientes: SDO_DIFFERENCE y SDO_INTERSECTION.
Oracle Spatial brinda acceso a una cantidad de sistemas de referencia de coordenadas predefinidos mediante un valor SRID. El valor SRID, almacenado en el objeto SDO_Geometry, especifica la referencia de coordenadas correspondiente a la geometría almacenada en ese objeto. Si no es NULL, el SRID del objeto SDO_Geometry es una clave externa en una tabla que contiene detalles acerca de cada SRID. Esta tabla es MDSYS.CS_SRS. La función SDO_TRANSFORM utiliza el ID de referencia espacial para establecer las transformaciones de referencia de coordenadas. ArcGIS también utiliza esta información para crear referencias espaciales.
Binario comprimido
El tipo de almacenamiento binario comprimido de Esri utiliza un mecanismo de almacenamiento binario para almacenar la geometría de entidades. Una clase de entidad de almacenamiento binario comprimido consta de tres tablas: negocios, entidades e índice espacial.
Tras comprobar la geometría, la aplicación cliente la comprime y envía a la geodatabase, donde se almacena en formato binario comprimido en una tabla de entidades o tabla F. Comprimir la geometría en el cliente descarga la tarea del servidor de base de datos y reduce el tiempo de transmisión para enviar la geometría. También ofrece un almacenamiento y una recuperación de datos espaciales eficaces al reducir el espacio necesario para almacenar datos en un 40 por ciento.
La tabla de negocios contiene atributos y una columna espacial. La columna espacial es una clave para las tablas de índices de entidad y espacial.
La relación entre la tabla de negocios y la tabla de entidades se administra a través de la columna espacial y la columna del Id. de entidad o FID. Esta clave, que se conserva en ArcGIS, es única.
Tipo de datos Ráster
Puede usar BLOB, Long Raw, ST_Raster o SDO_GeoRaster para las columnas ráster de datasets ráster, catálogos de ráster o datasets de mosaico.
Consulte la sección BLOB de este tema para obtener información sobre BLOB en Oracle.
Oracle ha dejado de utilizar el tipo de datos Long Raw; debe evitar usar este tipo antes de que sea incompatible. Aunque Long Raw siga funcionando, es mejor no utilizarlo; deberá migrarlo finalmente a un tipo de almacenamiento distinto si usa Long Raw.
En las dos subsecciones siguientes se describen los tipos de datos ráster restantes.
ST_Raster
ST_Raster es un tipo de datos definido por el usuario que puede instalar en geodatabases corporativas para proporcionar acceso SQL a los datos ráster.
Para utilizar ST_Raster, debe configurarlo en la base de datos. Consulte Instalar el tipo ST_Raster en Oracle.
Para obtener información más detallada sobre cómo se define el tipo de objeto ST_Raster, consulte El tipo de datos ST_Raster.
SDO_GeoRaster
El tipo de datos ráster de Oracle Spatial SDO_GeoRaster se implementa mediante el sistema de tipo relacional de objeto extensible de Oracle. El tipo SDO_GeoRaster almacena información sobre un ráster, que incluye el tipo de píxel, el Id. de referencia espacial y los valores de píxel.
El tipo SDO_GeoRaster es compatible con todos los tipos de píxeles de Esri: de 1 bit a 64 bits, con signo, sin signo y punto flotante. ArcGIS es compatible con el tipo de datos SDO_ GeoRaster de Oracle Spatial como opción para almacenar datos ráster.
Cuando se crea una tabla que contiene una columna SDO_GeoRaster de Oracle, ArcGIS completa el esquema de metadatos de Oracle que se requiere. Es responsabilidad de las aplicaciones como ArcGIS realizar esta tarea, dado que Oracle no la realiza automáticamente. En caso de registrar una tabla que contenga una columna SDO_GEORASTER de Oracle creada por un producto de terceros, es responsabilidad de dicho producto completar correctamente el esquema de metadatos de Oracle correspondiente a la columna SDO_GeoRaster.
Límites conocidos del uso de SDO_GeoRaster con una geodatabase
La siguiente es una lista de límites que hay que tener en cuenta al almacenar datos ráster en la geodatabase corporativa como SDO_GeoRaster.
- Oracle no admite actualizaciones por tramos de SDO_GeoRaster. Por lo tanto, no es posible crear un mosaico de los archivos de imágenes en un dataset ráster existente almacenado como SDO_GeoRaster.
- Las pirámides no se pueden construir durante la inserción de datos. Después de la inserción de datos de imágenes en SDO_GeoRaster, se requiere un paso de actualización aparte para construir la pirámide. Por este motivo, siempre debe desactivar la casilla de verificación Crear pirámide en el cuadro de diálogo de cualquier herramienta de geoprocesamiento de ArcGIS que crea datasets ráster o catálogos de ráster.
- No se puede usar el almacenamiento SDO_GeoRaster en una base de datos Oracle 11g R2 como resultado del error de Oracle 12537431. Si desea usar el almacenamiento SDO_GeoRaster, utilice Oracle 11g R1 o una versión posterior.
- Oracle implementa SDO_GeoRaster como arquitectura de banda integrada. Por lo tanto, no es posible agregar y eliminar bandas individuales de un dataset ráster.
- ArcGIS no admite varias columnas de ráster en una tabla. A las tablas con varias columnas SDO_GeoRaster se debe acceder mediante las vistas que contienen solo una columna SDO_GeoRaster. Cree una vista de la tabla e incluya solo una columna SDO_GeoRaster en la definición de la vista.
- Al utilizar el almacenamiento SDO_GeoRaster en una geodatabase, no se admite ninguna máscara de bits nodata. Por lo tanto, no es posible crear una pirámide en datos normales que no son cuadrados.
BLOB
BLOB es un acrónimo industrial del sistema de administración de bases de datos (DBMS) para objeto binario grande. Las columnas BLOB se implementaron hace varios años por parte de Oracle Corporation para reemplazar la tecnología LONG RAW para el almacenamiento de datos binarios.
La arquitectura del tipo de datos BLOB se divide en tres componentes básicos: la columna BLOB, el segmento LOB y el índice LOB. La columna BLOB almacena el localizador LOB (36 bytes) y los datos binarios en fila si son inferiores a 3.965 bytes y el almacenamiento en filas no se ha deshabilitado para la columna.
Si los datos binarios superan los 3.964 bytes, no se asigna el espacio de almacenamiento en filas de la columna BLOB y el localizador LOB se basa en los datos binarios almacenados en el segmento LOB.
Por lo tanto, el valor almacenado en una columna BLOB con el almacenamiento en filas habilitado es siempre de 36 bytes como mínimo (el espacio asignado al localizador LOB) y deberá tener el tamaño de 4.000 bytes (el espacio combinado asignado al localizador LOB y el espacio máximo que puede asignarse a los datos binarios almacenados en filas).
El segmento LOB se divide en dos tramos. Los tramos deben ser un múltiple del tamaño de bloque de datos de Oracle. Por ejemplo, si el tamaño de bloque de datos es de 8K, el segmento LOB puede crearse con un tamaño mínimo de trama de 8K. Si la longitud de los datos almacenados en el segmento LOB es de 5.000 bytes, se almacenan en el segmento LOB puesto que supera los 3.964 bytes y el tamaño de la trama es de 8K ó 8.192 bytes. En este caso, 3.192 bytes de la trama del segmento LOB permanece sin utilizar. La transferencia de datos de LONG RAW a BLOB puede provocar que se requiera más espacio—quizás hasta un incremento del 30 por ciento debido al espacio sin utilizar en el segmento LOB. Esto resulta inevitable si sus datos superan el umbral de almacenamiento en filas de 3.964 bytes de la columna BLOB.
El tamaño de trama de 8K experimenta el mejor rendimiento de E/S a la vez que ocupa el mínimo espacio. El tamaño de trama de 16K ocupa más espacio que el tamaño de trama de 8K. Por lo tanto, para evitar la pérdida de espacio, se recomienda que vuelva a crear la base de datos que actualmente tiene un tamaño de bloque de datos de 16K por un tamaño de bloque de datos de 8K o, si esto no es posible, que cree segmentos LOB en espacios de tabla que se han creado con un tamaño de bloque de 8K. Para hacerlo, deberá asignar una caché en búfer de 8K en el Área Global del Sistema de Oracle (SGA).
Se ha demostrado que los tamaños de trama de 4K y 2K ocupan menos espacio, pero el aumento del coste de E/S no garantiza su uso.
El índice LOB solo se utiliza si el número de tramas tratados por el localizador LOC supera 12; de lo contrario, las primeras 12 tramas son tratadas por el localizador LOB.
Las tres siguientes figuras ilustran los tres casos posibles de almacenamiento de datos binarios almacenados en una columna BLOB. En el primer caso, 3.000 bytes de datos binarios se almacenan en fila, ya que 3.000 bytes es inferior al umbral de almacenamiento en filas de 3.965 bytes. Si no está deshabilitado el almacenamiento en filas para la columna BLOB, no se utilizará el segmento LOB ni el índice LOB. Normalmente, esto origina una recuperación más rápida de los datos BLOB debido al reducido número de operaciones de E/S, puesto que Oracle no tiene que acceder al segmento LOB ni al índice LOB.
En la siguiente figura se ilustra el segundo caso, en el cual los datos binarios superan los 3964 bytes (en este caso, los datos son de 81.920 bytes) y no pueden encajar en la fila. Por lo tanto, el localizador LOB hace referencia a los datos binarios que están almacenados en el segmento LOB. Como los datos binarios no ocupan más de 12 tramas en el segmento LOB, el localizador LOB almacena sus direcciones. En este caso no hay ningún índice LOB en uso.
En la ilustración final, los datos binarios son tan grandes (106.496 bytes) que se requiere el índice LOB. En este caso, los datos binarios superan el almacenamiento en filas y además requiere más de 12 tramas en el segmento LOB para almacenarlos. Para datos de este tamaño, el localizador LOB se basa en el índice LOB para obtener la ubicación de las tramas en el segmento LOB. Se trata de un caso extremadamente raro para datos vectoriales y puede evitarse para datos ráster.
Para obtener información sobre la configuración del almacenamiento BLOB, consulte Parámetros de configuración de Oracle.