• No results found

Financial hedging

In document Essays in cash holdings (Page 118-122)

4.2 Background and hypothesis development

4.2.2 Financial hedging

Debido a que las aplicaciones de usuario pueden configurar los hints, es necesario que el sistema proporcione reglas sint´acticas para establecer los par´ametros del sistema, los cuales permiten configurar el sistema de E/S.

8.5. CONFIGURACI ´ON DEL SISTEMA MAPFS 157

Sistema Almacenamiento

API de E/S API ConfiguraciónHints API Control de Usuario

Figura 8.3: API del Sistema de Almacenamiento

Por otro lado, si los hintsson creados por el subsistema multiagente, tambi´en es necesario alma- cenarlos de una forma predefinida. En cualquier caso, deben introducirse reglas l´exicas y sint´acticas en el sistema.

El sistema se puede configurar a trav´es de diferentes operaciones, que son independientes de las operaciones de E/S, aunque estas ´ultimas utilizan las primeras. Las operaciones de configuraci´on se dividen en:

1. Operaciones de configuraci´on dehints:Son operaciones para establecer loshintsdel sistema y, por tanto, permiten modificar y acceder a los diferentes campos de loshints.

2. Operaciones de control de usuario: Son las operaciones que utilizan de forma directa las aplicaciones de usuario. Las aplicaciones pueden gestionar el rendimiento del sistema s´olo a trav´es de este API.

La figura 8.3 muestra los tres niveles en los cuales el API del sistema de almacenamiento se divide, incluyendo el API de las operaciones de E/S.

Como muestra esta ´ultima figura, hay tres formas de acceder al m´odulo de configuraci´on dehints: 1. Las operaciones de E/S pueden solicitar informaci´on sobre valores de loshintsy modificarlos. 2. Las operaciones de control de usuario pueden modificar loshints. Esta es la forma normal en la

que las aplicaciones de usuario interacciona con loshints.

3. Con el objetivo de proporcionar flexibilidad al sistema, se puede acceder al m´odulo de configu- raci´on dehints directamente a trav´es de las operaciones de configuraci´on dehints, es decir, su API. El sistema multiagente puede construir los hints a trav´es de esta interfaz, ya que dicho sistema queda integrado dentro del propio sistema de ficheros.

El API de E/S MAPFS se describe en el ap´endice A. Las operaciones de configuraci´on de hints

son las siguientes:

Mapfs Hints * mapHintsNew(int block ident): Esta operaci´on crea una nueva estructura

hintpara el bloque cuyo identificador es block ident.

void mapHintsFree(Mapfs Hints *hint): Esta operaci´on libera una estructurahint.

int mapHintsSet(Mapfs Hints *hint, int code field, void * value): Esta operaci´on mo-

difica un campo de la estructurahintcon un valor. La operaci´on devuelve 0 si se realiza de forma correcta y -1 en caso contrario.

void * mapHintsGet(Mapfs Hints *hint, int code field): Esta operaci´on devuelve el va-

lor de un campo concreto de la estructura hint. Si el campo no est´a definido, esta operaci´on devuelve NULL.

Las operaciones de control de usuario tienen una estructura similar:

Mapfs CtrlUser * mapCtrlUserNew(Mapfs Tuples *tupl): Esta operaci´on crea una nueva es-

tructura de control de usuario para un conjunto de tuplas representado por tupl.

void mapCtrlUserFree(Mapfs CtrlUser *ctrlUser): Esta operaci´on libera una estructura de

control de usuario.

int mapCtrlUserSet(Mapfs CtrlUser *ctrlUser, int code field, void *expr): Esta ope-

raci´on modifica un campo de la estructura de control de usuario con una expresi´on. La operaci´on devuelve 0 si se realiza de forma correcta y -1 en caso contrario.

void *mapCtrlUserGet(Mapfs CtrlUser *ctrlUser, int code field): Esta operaci´on de-

vuelve el valor de un campo concreto de una estructura de usuario de control. Si el campo no es definido, esta operaci´on devuelve NULL.

Estas operaciones hacen llamadas internas a las operaciones del API de configuraci´on de hints. Por otro lado, las expresiones regulares proporcionadas por las aplicaciones de usuario se construyen a trav´es de la siguiente regla, basada en la inducci´on:

exprbooles una expresi´on v´alida;

siexpres una expresi´on v´alida, entoncesNOT (expr)es tambi´en una expresi´on v´alida; siexpr1 yexpr2 son expresiones v´alidas, entonces(expr1 AND expr2)es tambi´en una expresi´on v´alida;

siexpr1 yexpr2 son expresiones v´alidas, entonces(expr1 OR expr2)es tambi´en una expresion v´alida;

dondeexprbool es una expresi´on booleana aplicada a un atributo o un conjunto de atributos. Debido al car´acter recursivo de la regla, se pueden construir expresiones con infinitos t´erminos. Para que una expresi´on pueda calcularse en poco tiempo, es necesario limitar esta recursividad. Por tanto, se debe introducir otra regla:

Una expresi´on debe tener como m´aximo diez t´erminos.

Este n´umero de t´erminos es configurable por el sistema concreto que utilice MAPFS.

8.5.1. Un ejemplo de aplicaci ´on de los modelos de E/S: un sistema de

Data Mining

Como ejemplo de aplicaci´on se va a considerar un conjunto de tuplas de una tabla con productos y sus precios correspondientes (v´ease la tabla 8.1)

Podemos utilizar tres expresiones regulares diferentes para optimizar los accesos a la tabla:

Barato (B): Esta etiqueta se aplica a aquellas tuplas cuyo precio es menor que 10e.

Precio Medio (M): Esta etiqueta se aplica a aquellas tuplas cuyo precio es mayor que 10e y menor que 1000e.

8.5. CONFIGURACI ´ON DEL SISTEMA MAPFS 159

Identificador Nombre Descripci´on Precio

21 “Item21” “Descripci´on de Item21” 5e 23 “Item23” “Descripci´on de Item23” 6e 26 “Item26” “Descripci´on de Item26” 100e 27 “Item27” “Descripci´on de Item27” 200e 30 “Item30” “Descripci´on de Item30” 1500e 32 “Item32” “Descripci´on de Item32” 2000e

Cuadro 8.1: Tabla de productos

Hints Identificador Nombre Descripci´on Precio

B 21 “Item21” “Descripci´on de Item21” 5e

B 23 “Item23” “Descripci´on de Item23”’ 6e

M 26 “Item26” “Descripci´on de Item26” 100e

M 27 “Item27” “Descripci´on de Item27” 200e

C 30 “Item30” “Descripci´on de Item30” 1500e

C 32 “Item32” “Descripci´on de Item32” 2000e Cuadro 8.2: Asociaci´on entre la tabla de productos y loshints

En este caso, se asocia unhintpor cada tupla con el valor correspondiente. La tabla 8.2 muestra esta asociaci´on.

En este ejemplo, el bloque corresponde a una tupla. Los hintsson utilizados en la resoluci´on de consultas relacionadas con el precio y permiten realizar elcachingyprefetchingde datos con similares precios, realizando un clusteringprevio de los datos. El uso de loshintsevita consultar registros que no comparten la misma categor´ıa respecto al precio. La clasificaci´on puede realizarla la aplicaci´on de usuario (a trav´es del API de control de usuario) o el sistema multiagente (directamente a trav´es del API de configuraci´on dehints).

8.5.2. Otro ejemplo de aplicaci ´on de los modelos de E/S: multiplica-

ci ´on de matrices

Como se describi´o anteriormente, en el caso de la multiplicaci´on de matrices, es posible aplicar diferentes reglas e incluso una combinaci´on de las mismas. Estas reglas se caracterizan por distintos par´ametros, que constituyen las expresiones a partir de las cuales formar la regla sint´actica corres- pondiente. Estos par´ametros y las expresiones asociadas son las que se detallan a continuaci´on:

Tipo deprefetching: Puede ser por filas (horizontal) o por columnas (vertical). Las expresiones correspondientes son:Tipo = FilaoTipo = Columna.

Tipo de ventana: Puede ser circular o no circular. Las expresiones correspondientes son:Tipo Ven-

tana = Circularo Tipo Ventana = No Circular.

Tama˜no de la ventana: Especifica el n´umero de elementos a leer en cada ciclo deprefetching. La expresi´on asociada es:Ventana = K.

Existencia de ciclo por fila o por columna: Dependiendo del tipo deprefetchingrealizado, esta- blece si se van a llevar a cabo ciclos por fila/columna o no. Las expresiones correspondientes son:

Ciclo por filao NOT(Ciclo por fila)yCiclo por columnaoNOT(Ciclo por columna).

Existencia de ciclo por matriz. Especifica el n´umero de ciclos realizados por matriz. Un valor 0 indica que no existe ciclo por matriz.

Prefetching transitivo. Establece la transitividad de las reglas de prefetching utilizadas. Las expresiones asociadas son:Transitivoo NOT(Transitivo).

Estas expresiones se combinan mediante operadoresANDpara formar la regla deprefetchingcorres- pondiente. Dependiendo de la matriz y operaci´on sobre dicha matriz que se considere, estos campos pueden tomar distintos valores, seg´un se describi´o en la secci´on 8.4.

Estos campos conforman el factor deprefetching, que se describe en la secci´on 6.3. En los ejemplos descritos, se ha utilizado la capacidad dehintsjunto a la optimizaci´on de cachingy prefetching. No obstante, loshints se pueden utilizar en conjunci´on de otras t´ecnicas o algoritmos diferentes, con el objetivo de mejorar las operaciones de E/S. En la secci´on 10.5 se puede ver un ejemplo de uso dehints

con un algoritmo que permite descartar l´ıneas de ficheros de entrada a fin de mejorar un algoritmo muy conocido en el campo de las bases de datos, el algoritmo Apriori.

8.5.3. Funciones de evaluaci ´on de

hints

Las expresiones regulares permiten establecer la sintaxis necesaria para configurar los hints de un sistema. No obstante, no son lo suficientemente gen´ericas para ser utilizadas en cualquier tipo de sistemas, ya que pueden existir sistemas que no se adapten adecuadamente a dichas expresiones. Para generalizar la idea anterior, se definen en esta tesis las funciones de evaluaci´on dehints, que consisten en funciones del tipo:

boolean func_evaluacion(int block_ident, Mapfs_Hints *hints);

que reciben un identificador de un bloque de datos que se desea evaluar y la estructura de hints

utilizada y devuelven un valor verdadero o falso asociado a dicho bloque de disco, dependiendo de los

hintsimplantados.

El ´unico requisito que deben cumplir las funciones de evaluaci´on es que est´en definidas para todos los identificadores de bloques de datos existentes, asoci´andoles un valor booleano. Por tanto, son menos restrictivas respecto a la forma de los hints. No obstante, su uso de los hints es m´as complejo. Por otro lado, existen dos alternativas respecto a la ubicaci´on de las funciones de evaluaci´on:

Pueden situarse en la parte servidora. El problema de esta opci´on es que sobrecarga el servidor de datos. Debido a que MAPFS se caracteriza por descargar al servidor de tareas diferentes a la del acceso a los datos, esta opci´on no es adecuada.

Pueden situarse en la parte cliente. De este modo, el cliente proporciona al servidor las funciones de evaluaci´on. El servidor simplemente se encarga de proporcionar los datos y los metadatos (en este caso los propioshints). Adem´as tiene sentido el hecho de que sea el cliente el que implemente la funci´on de evaluaci´on, ya que es el que tiene la l´ogica del procesamiento de la informaci´on. Por tanto, esta opci´on es la seleccionada.

Debido a que el cliente (en nombre de la aplicaci´on de usuario o no) puede generar las funciones de evaluaci´on, que utilizar´a el servidor para evaluar los diferentes bloques, es necesario establecer una forma de comunicar dichas funciones de evaluaci´on al servidor. A priori, pueden existir diferentes formas de llevar a cabo esta comunicaci´on, a saber:

1. El servidor puede tener una biblioteca de funciones de evaluaci´on, establecidas de forma est´atica por el cliente. Esta soluci´on no es v´alida, puesto que no permite incrementar el n´umero de funciones de evaluaci´on.

2. Se utilizan lenguajes interpretados, tipo Java, para permitir que el c´odigo sea transmitido y pueda ser ejecutado en cualquier nodo.

In document Essays in cash holdings (Page 118-122)