|
|
| Productos Soluciones Soporte y Servicios Contáctenos | MySybase Sybase.com |
|
Acceso a Sistemas de Archivos Externos en Adaptive Server Enterprise
Tabla de Contenido1.0 ¿Qué es Acceso a Sistemas de Archivos Externos?
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.
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:
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ándoseEsta 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:
sp_configure "enable cis", 1
sp_configure "enable file access", 1
3.0 Utilizando el Acceso a ArchivosA través de esta característica única, usted puede tener acceso a archivos individuales fuera de ASE, dentro del alcance del sistema operativo. En éste ejemplo, creamos una tabla proxy llamada Xerrors asociada a un archivo ubicado en el directorio $SYBASE/install. create proxy_table Xerrorsexternal 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 Xerrorswhere 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:
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"
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:
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:
3.4 Comandos Soportados para el Acceso a Archivos El Acceso a Archivos Externos soporta los siguiente comandos:
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 Xpublishersselect * from publishers Usted puede usar esto como una alternativa al bcp out.
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 publishersselect * 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 Xpublishersvalues("8010", "Coffe Table Publishers", "Englewood", "CO") select Las siguientes consultas: select pub_name from Xpublisherswhere 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:
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 Xpublishersdrop drop table Xpublishersborra 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.
4.0 Utilizando el Acceso a DirectoriosEsta sección describe cómo usted puede usar el Acceso a Sistemas de Archivos Externos para tener acceso y manipular directorios del sistema operativo. 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:
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 Xdirectexternal 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.
[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:
A continuación algunos ejemplos. select select filename, filetype from Xdirectwhere 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_tablefrom Xdirect También podemos exportar dato desde local_table hacia el sistema de archivos: select * into Xdirectfrom 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.
Primero, creamos la estructura de directorio destino: create proxy_table Xtargetexternal 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:
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 Xdirectwhere filename = "dir2/dir3/farm_supplies.txt"
update Usted sólo puede cambiar el nombre de archivo con update. La actualización de directorios y subdirectorios no es posible. update Xdirectset 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 Xdirectwhere 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
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 wherev.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 AdicionalesEsta sección contiene temas adicionales que le ayudarán en el uso del Acceso a Sistemas de Archivos Externos. 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. 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. 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Inicio Sobre MTBASE Sobre Sybase Empleos en MTBASE Mapa del Sitio Aspectos Legales y Políticas de Privacidad |