MTBASE / SYBASE DE COLOMBIA
 
Búsqueda avanzada...
Versión para imprimir Versión para imprimir Enviar vínculo por e-mail Enviar por e-mail Ver atributos del documento Atributos del documento
 

Acceso a Sistemas de Archivos Externos en Adaptive Server Enterprise

Tabla de Contenido

1.0 ¿Qué es Acceso a Sistemas de Archivos Externos?
2.0 Alistándose
    2.1 Licenciamiento del Acceso a Sistemas de Archivos Externos
    2.2 Habilitando el Acceso a Archivos
3.0 Utilizando el Acceso a Archivos
    3.1 Acceso a Archivos
    3.2 Acceso a Registros de más de 255 Bytes
    3.3 Definición de Columnas en Archivos Externos
    3.4 Comandos Soportados para el Acceso a Archivos
4.0 Utilizando el Acceso a Directorios
    4.1 Acceso a Directorios
    4.2 Reglas para Acceso a Directorios
    4.3 Comandos Soportados para Acceso a Directorios
5.0 Usando el Acceso a Archivos con Enhanced Full Text Search (EFTS)
    5.1 Creación y Verificación de Índices
    5.2 Consulta desde Tabla e Índice, y Borrado del Índice
6.0 Temas Adicionales
    6.1 Seguridad
    6.2 Solución de Problemas
    6.3 Otras Lecturas

 

1.0 ¿Qué es Acceso a Sistemas de Archivos Externos?

Adaptive Server Enterprise (ASE) Versión 12.5 introduce varias características nuevas. Una muy poderosa y útil herramienta para su negocio en el componente de Acceso a Sistemas de Archivos Externos.

Este documento técnico explica las diferentes capacidades y métodos disponibles, y los comandos Transact-SQL asociados a esta característica.

Nota:
El Acceso a Sistemas de Archivos Externos está disponible en todas las plataformas soportadas por ASE. Los ejemplos de este documento están basados en un sistema de archivos Unix.

En el mundo de los negocios de hoy, no todos los datos pueden ser efectivamente incorporados a la infraestructura de una base de datos relacional. Frecuentemente, los datos se mueven y cambian rápidamente desde y hacia el sistema de archivos del sistema operativo. Con la llegada de la versión 12.5, su negocio puede integrar estos datos a la base de datos, o manejar datos externos como si estuvieran en la base de datos. Esto puede ser especialmente útil en el escenario de un ambiente e-Business.

Una tabla proxy es creada para asociar archivos externos individuales o a un árbol completo de directorios. Las tablas proxy usan los Servicios de Integración de Componentes (CIS) de ASE. Usando comandos Transact-SQL estándar sobre la tabla proxy, es posible crear, borrar, escribir y consultar archivos e índices. La característica también permite modificar propiedades del archivo, como permisos, dueño y grupo.

El Acceso a Sistemas de Archivos Externos brinda dos conjuntos distintos de capacidades:

  1. Usando Acceso a Archivos, usted puede asociar una tabla proxy a un archivo ASCII individual.
  2. Usando el Acceso Recursivo a Directorios, usted pude asociar una tabla proxy a un directorio padre, y a todos sus archivos y directorios subordinados.

Ambas capacidades involucran diferencias en los comandos Transact-SQL soportados.

Adicionalmente, a partir de la versión 12.5.0.1 IR, usted puede indexar texto en archivos externos usando el Acceso a Sistemas de Archivos Externos y el Enhanced Full Text Search (EFTS) de ASE. Antes de la versión 12.5.0.1 el EFTS requería que el texto estuviera almacenado en la base de datos.

 

2.0 Alistándose

Esta sección explica cómo adquirir y configurar el Acceso a Sistemas de Archivos Externos.

2.1 Licenciamiento del Acceso a Sistemas de Archivos Externos

En versión 12.5, el Acceso a Sistemas de Archivos Externos es un componente opcional que se debe licenciar por separado; una vez usted obtenga su licencia, el componente debe ser registrado usando SySAM.

A partir de la versión 15.0, el Acceso a Sistemas de Archivos Externos hace parte de los componentes incluidos con el producto base; no se requiere de una licencia adicional.

2.2 Habilitando el Acceso a Archivos

Una vez usted ha registrado la licencia, arranque ASE y habilite el Acceso a Sistemas de Archivos Externos siguiendo estos pasos:

  1. Verifique que el parámetro estático de configuración enable cis está en 1.
sp_configure "enable cis", 1
  1. Habilite el Acceso a Sistemas de Archivos Externos en sp_configure.
sp_configure "enable file access", 1
Nota:
Este parámetro no se activará hasta tanto el componente de no haya sido licenciado. Dado que el parámetro es dinámico, usted no necesita reiniciar ASE. El log de errores de ASE mostrará la entrada "Checked out license ASE_XFS".

 

3.0 Utilizando el Acceso a Archivos

A través de esta característica única, usted puede tener acceso a archivos individuales fuera de ASE, dentro del alcance del sistema operativo.

3.1 Acceso a Archivos

En éste ejemplo, creamos una tabla proxy llamada Xerrors asociada a un archivo ubicado en el directorio $SYBASE/install.

create proxy_table Xerrors
    external file at "/home/sybase/ASE-12_5/install/server.log"

Esto crea una tabla que contiene una columna, llamada 'record', de tipo varchar(255). Ahora podemos consultar esta tabla proxy para ver el contenido del archivo.

select record from Xerrors
    where record like "%ASE_XFS%"


record
------
00:000:0000:2001/11/20 09:55:57.87 kernel  Checked out license ASE_XFS

Existen ciertos requerimientos para tablas proxy asociadas a un archivo:

  • Los archivos deben ser archivos de texto ASCII, tales como el log de errores de ASE.
  • El proceso ASE (el dataserver) debe tener por lo menos permisos de lectura sobre el archivo.
  • Si el archivo va a ser creado, ASE debe tener permisos de escritura en el directorio en donde el archivo será creado.
  • Los registros (o líneas) individuales del archivo deben estar separados por el caracter "\n" (newline). Cada "\n" se interpreta como "fin de línea".

3.2 Acceso a Registros de más de 255 Bytes

Si usted desea usar esta opción para archivos con registros que exceden los 255 bytes, use la opción create existing para aumentar el tamaño de la columna record, hasta el máximo permitido según el tamaño de página de su servidor. 

Por ejemplo,

create existing table Xtext(record varchar(512) null)
    external file at "/usr/sybase/data.txt"

Nota:
Para los ejemplos de acceso a archivos, create table trabajará sin la cláusua existing, siempre y cuando usted incluya las columna(s), tipos de datos, y la cláusula external file. La opción existing se incluye como una forma de ayudarle a diferenciar las tablas proxy de las tablas locales.

3.3 Definición de Columnas en Archivos Externos

Una característica muy valiosa es la habilidad de especificar la estructura de una archivo externo:

  • Usted pude definir columnas y tipos de datos para sus tablas proxy.
  • Esta característica puede reemplazar bcp con sentencias insert/select. Los datos externos pueden ser modificados, luego copiados nuevamente hacia la base de datos tan fácilmente como fueron copiados hacia afuera.
  • Las columnas pueden ser de cualquier tipo, excepto text, image o TADs de Java. El uso de la cláusula external es opciónal y no tiene efecto en el procesamiento de las sentencias.

En todos los casos, si el archivo al cual se hace referencia no existe, éste será creado. Si existe, su contenido no es sobrescrito.

Por ejemplo:

create existing table Xpublishers
(
    pub_id   char(4),
    pub_name varchar(40),
    city     varchar(20),
    state    char(2)
)
external file at "/home/sybase/pubfile.txt"

Note que:

  • Esta sintaxis crea el DDL (esquema de una tabla) para una tabla proxy asociada a un archivo externo llamado pubfile.txt.
  • El delimitador predeterminado de columnas es el 'tabulador', a no ser que se especifique otro al final del comando usando la opción column delimiter "<string>".

3.4 Comandos Soportados para el Acceso a Archivos

El Acceso a Archivos Externos soporta los siguiente comandos:

  • insert
  • select
  • truncate
  • drop

Aunque varios comandos Transact-SQL están disponibles para el acceso a archivos individuales, otros comandos no se soportan. A continuación algunos ejemplos.

insert

Aquí hay un ejemplo de cómo mover bajar datos desde una tabla a un archivo. Antes de la versión 12.5, bcp era la única manera de hacer esto. Arriba creamos la tabla externa Xpublishers. Este comando escribe todos los datos de la tabla publishers en ese archivo externo.

insert into Xpublishers
    select * from publishers

Usted puede usar esto como una alternativa al bcp out.

Nota:
sp_dboption "select into" debe definirse en true para estas funciones.

El siguiente ejemplo es el inverso del anterior: trae los datos hacia la misma tabla (también podría ser una tabla nueva, un servidor nuevo, una máquina nueva, etc.)

insert into publishers
    select * from Xpublishers

Usted puede usar esto como una alternativa al bcp in.

Finalmente, usted también puede insertar filas individuales usando Transact-SQL. Usted sólo necesita saber los tipos de datos, que se pueden ver con sp_help <tablename>.  Este ejemplo inserta nuevas filas al archivo externo /home/sybase/pubfile.txt.

insert into Xpublishers
    values("8010", "Coffe Table Publishers", "Englewood", "CO")

select

Las siguientes consultas:

select pub_name from Xpublishers
    where pub_id = "8010"


select pub_name from Xpublishers
    where pub_id != "0000"
    and pub_name like "%Coffe%"

retornan:

pub_name
--------
Coffe Table Publishers

Usted puede:

  • Consultar cualquier columna y usar cualquier argumento de búsqueda en la cláusula where.
  • Editar el archivo externo, usando un editor de texto, agregar o borrar filas, y así sucesivamente. Los cambios que usted haga se reflejarán en la salida del comando select.

truncate

El comando truncate borra el contenido del archivo (no borra el archivo). En otras palabras, la longitud del archivo se vuelve 0:

truncate table Xpublishers

drop

drop table Xpublishers

borra la tabla proxy. El archivo /home/sybase/pubfile.txt aún existe externamente. Si se requiere, asegúrese de borrar el archivo usando el comando rm pubfile.txt en UNIX.

Nota:
Los comandos update o delete resultan en error si la tabla proxy está asociada a un archivo individual. Estos comandos sólo se soportan para tablas proxy asociadas a directorios.

 

4.0 Utilizando el Acceso a Directorios

Esta sección describe cómo usted puede usar el Acceso a Sistemas de Archivos Externos para tener acceso y manipular directorios del sistema operativo.

4.1 Acceso a Directorios

Con las tablas proxy es posible tener acceso a un directorio de un sistema de archivos y a sus archivos y subdirectorios asociados.

Es posible:

  • Manipular directorios, subdirectorios, y los archivos dentro de esos directorios.
  • Eficazmente insertar nuevos archivos con contenido.
  • Insertar nuevos subdirectorios.
  • Copiar el contenido de un árbol de directorios hacia tablas dentro del servidor, o hacia otros directorios externos, de manera similar a tar/zip y cp/copy.
  • Borrar archivos, actualizar nombres de archivos, y alterar o visualizar el contenido de un archivo externo con readtext y wreitetext.

4.2 Reglas para Acceso a Directorios

El directorio especificado debe hacer referencia a un directorio del sistema de archivos visible y accesible por ASE. El servidor crea una tabla proxy la cual asocia nombres de columnas a atributos de los archivos que existen en ese directorio. Si usted agrega la extensión ";R" (lo que indica "recursión") al final del nombre del directorio, CIS extrae la información de los archivos de todos los subdirectorios del directorio.

Aquí hay un ejemplo de la sintaxis de creación:

create proxy_table Xdirect
    external directory at "/home/sybase/dir1;R"

Cuando usted crea una tabla proxy asociada a un directorio, la tabla proxy automáticamente asume las definiciones de las columnas. La siguiente tabla describe las columnas contenidas en una tabla proxy asociada a un directorio.


Columna

Descripción

filename

Nombre completo del archivo

filetype

directorio, link, archivo regular, etc.

access

Permisos de acceso

uid

Id del dueño del archivo

gid

Id del grupo al que pertenece el archivo

size

Tamaño del archivo en bytes

atime

Fecha/hora de último acceso

mtime

Fecha/hora de última modificación

ctime

Fecha/hora en que el estado del archivo fue modificado

content

Contenido físico del archivo

[Tabla 1.] Las Columnas Contenidas en la Tabla Proxy Asociada a un Directorio

4.3 Comandos Soportados para Acceso a Directorios

Los siguientes comandos son soportados para directorios:

  • select
  • select into
  • insert
  • delete
  • update
  • writetext
  • readtext

A continuación algunos ejemplos.

select

select filename, filetype from Xdirect
    where filetype = 'REG'

Cualquiera de las columnas descritas en la [Tabla 1] puede ser usada en una sentencia select.

select into

Esta característica le permite copiar el contenido de una estructura completa de directorios hacia una tabla de base de datos u otra estructura de directorios externa.

Aquí usamos un simple select into para importar los datos del directorio dir1 a través de la tabla proxy Xdirect, hacia la tabla local local_table, la cual ahora almacena los datos y directorios de ese sistema de archivos:

select * into local_table
    from Xdirect

También podemos exportar dato desde local_table hacia el sistema de archivos:

select * into Xdirect
    from local_table

Usted también puede transferir el contenido de archivos desde un directorio hacia otro, una alternativa práctica a tar/zip o copiado.

Nota:
Hay algunos problemas en Solaris con tablas locales, subdirectorios y select into.

Primero, creamos la estructura de directorio destino:

create proxy_table Xtarget
    external directory at '/software/target_dir;R'

select * into existing table Xtarget
    from Xdirect

Esto no copia el directorio padre dir1 de la tabla proxy Xdirect. En su lugar, copia todos los sub-archivos y directorios en la tabla Xtarget. target_dir1 se vuelve el directorio padre de esos archivos.

Opcionalmente se puede especificar una cláusula where. Por ejemplo:

... where filetype = 'REG'

Esto copia cualquier archivo de tipo REG en la tabla Xtarget. Si uno o más archivos residen dentro de un subdirectorio, el directorio también es copiado.

Por razones de seguridad, los directorios y archivos copiados aceptan, en la coumna access, la definición para permisos umask del sistema operativo, sin importar su definición actual. Esto refleja la capacidad del comando cp (copiado) de UNIX.

insert

Al utilizar insert note que:

  •  Para recursividad de directorios, insert se utiliza de manera diferente con directorios recursivos a lo que se mostró en el ejemplo de la sección 3.4.
  • Nuevos archivos y subdirectorios pueden ser creados usando el comando insert.
  • Las únicas columnas que tienen signficado son filename y content; deje el resto de las columnas fuera de la sentencia insert.
  • Si el archivo requiere ser insertado en un subdirectorio, incluya la ruta completa.

Este ejemplo crea un nuevo archivo llamado inventory; si el subdirectorio dir2 no existiera, también sería creado:

insert into Xdirect(filename, content)
    values('dir2/inventory','valor1, valor2, valor3')

Comenzando con 12.5.0.1 IR, al crear un archivo regular, el valor de @@identity se actualiza después de que el insert se complete. El valor retornado con esta variable global representa la columna id para el último archivo o subdirectorio almacenado en el servidor.

También con 12.5.0.1 IR, usted puede insertar subdirectorios. El directorio del nivel superior debe ser creado con mkdir (Unix) or "New Folder" (Windows).

insert into Xdirect(filename, filetype)
    vales("subdir1","DIR")

delete

Usted usa el comando delete para remover archivos. Incluye la ruta completa si el archivo reside en un subdirectorio:

delete from Xdirect
    where filename = "dir2/dir3/farm_supplies.txt"

Nota:
Para borrar filas, use un editor del sistema operativo, como vi o Notepad.

En este momento, sólo archivos pueden ser borrados. Futuras versiones del Acceso a Sistemas de Archivos Externos puede que brinden la habilidad de borrar subdirectorios o una estructura entera de directorios, recursivamente.

update

Usted sólo puede cambiar el nombre de archivo con update. La actualización de directorios y subdirectorios no es posible.

update Xdirect
    set filename = 'just_cupcacke'
    where filename = 'dir2/dir3/baked_goods'

writetext

La columna contentes es de tipo image. Para sobrescribir el valor, use el comando writetext de la siguiente manera:

declare @value varbinary(16)

select @value = textptr(content) from Xdirect
where filename = "batteries"

writetext Xdirect.content @value "solar calculators"

readtext

Para leer el contenido de una columna de una manera binaria, sencillamente use un select, o el más preciso comando readtext. Esta consulta retorna todo el contenido ne binario:

select content from Xdirect
where filename = "batteries"

Esta consulta arroja el contenido de los caracteres del 1 al 5, en binario:

declare @val varbinary(16)

select @val = textptr(content)
from Xdirect
where filename = "batteries"

readtext Xdirect.content @val 1 5 using chars

Nota:
  • Usted puede obtener los atributos y el contenido del archivo usando el comando select.
  • Las funciones para manejo de valores text (textptr, textvalid, patindex, pattern) están totalmente soportadas para la columna content

 

5.0 Usando el Acceso a Archivos con Enhanced Full Text Search (EFTS)

Usando la sintaxis de abajo, creamos un índice usando textsvr. El índice es llamado text_index.

sp_create_text_index 'textsvr', 'text_index',
    'Xdirect','content','filename'

5.1 Creación y Verificación de Índices

Para verificar que el índice fue creado, usamos la tabla vesaux de la base de datos text_db que se crea con el script installtextserver.

select col_name, col_type from text_db.dbo.vesauxcol c,
  text_db.dbo.vesaux v where
  v.id = c.id
  and object_name like '%Xdirect'
  order by col_name

Esta consulta muestra:

col_name        col_type
--------        --------
filename        varchar(512)

5.2 Consulta desde Tabla e Índice, y Borrado del Índice

Aquí, estamos mirando por un archivo llamado test1, ubicado bajo el directorio dir1, asociado a la tabla proxy Xdirect.

select t.id, t.filename from Xdirect t, text_index v where
   v.id = t.id and index_any = '%test1%'

Resultado:

id                           filename
--------------------------   --------
35651594000001667775         test1

Para borrar éste índice, use sp_drop_text_index.

if exists (select * from sysobjects where name = 'text_index')
          exec sp_drop_text_index 'Xdirect.text_index'

 

6.0 Temas Adicionales

Esta sección contiene temas adicionales que le ayudarán en el uso del Acceso a Sistemas de Archivos Externos.

6.1 Seguridad

Sólo usuarios de ASE con rol SA o rol SSO pueden crear tablas proxy y asociarlas a archivos o directorios. Este requerimiento tiene que ver con los aspectos de seguridad relacionados al acceso a datos del sistema desde el proceso de ASE, el cual puede que no tenga privilegios adecuados (por ejemplo de 'root') al ejecutarse.

El Acceso a Sistemas de Archivos Externos es suficientemente flexible para asistir a los administradores de base de datos con todo tipo de operaciones rutinarias en el complejo ambiente de negocios de hoy; mejoras en la funcionalidad y en la seguridad aún están por venir. 

6.2 Solución de Problemas

Para ver lo que CIS está haciendo al usar el Acceso a Sistemas de Archivos Externos, use las opciones de arranque de ASE 11201 a 11206. Estas escribirán al log de errores cada paso que CIS lleva a cabo para completa una consulta o transacción que involucre el Acceso a Sistemas de Archivos Externos.

6.3 Otras Lecturas

La documentación de ASE contiene información sobre sobre Acceso a Sistemas de Archivos Externos. Esta documentación se encuentra en http://sybooks.sybase.com/nav/detail.do?docset=790

Atributos del Documento
Resumen: Este documento técnico explica las capacidades y beneficios del componente de Acceso a Sistemas de Archivos Externos en Adaptive Server Enterprise
Código: 10124 Última Modificación: Mar 27, 2006
Temas: Administración Tipo de Documento: Documento Técnico
Productos: Adaptive Server Enterprise Versión: 12.5.x en Adelante
Plataformas: Todas las Plataformas Sistema Operativo: Todos los Sistemas Operativos
 
 Inicio   Sobre MTBASE   Sobre Sybase   Empleos en MTBASE   Mapa del Sitio   Aspectos Legales y Políticas de Privacidad