Bases de Datos - Vistas

   
Vista:

Vistas

Publicado por Rosario (3 intervenciones) el 27/09/2007 13:45:54
Hola,
Estamos desarrollando una aplicacion que se tiene que conectar a distintos centros ubicados en sitios fisicos distintos. Se nos plantea una duda,
1.Usamos vistas ubicadas en nuestra BBDD que accedan a las BBDD de los centros
2.Creamos un DataSource desde la aplicacion que acceda a la BBDD de los centros.

La consulta (y por tanto la vista) es sencilla, pero se nos plantea la duda si la operatibilidad de las vistas será buena o será mejor que las conexiones las gestione el servidor de aplicaciones.
Porque, internamente, ¿cómo funciona una vista? ¿El gestor que la contiene accederá a los datos más optimamente que una aplicacion?
Ambos gestores son Informix

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Respuesta

Publicado por Leopoldo Taylhardat (183 intervenciones) el 27/09/2007 14:19:10
Saludos desde Maracay, Venezuela...

Te explico...

Una vista es una instrucción sql que se encuentra almacenada en la BD, es decir, una tabla virtual que se arma cuando haces el select de la vista (no hablemos de los update y/o delete a las vistas ya que estos se manejan por eventos cuando la BD lo permite, es decir que tenga la opción de manejar triggers las vistas), esta instrucción normalmente es un select sobre varias tablas con sus relaciones (y joins)...
Cuando se ejecuta la primera vez, el gestor "pseudo-compila" la instrucción y arma la tarea, es decir establece la mejor ruta (según su criterio) , es decir:que tabla primero, cual índice tomar de cada tabla, etc. etc. etc... para el acceso a los datos y armara la "tabla virtual" con los campos que correspondan y la almacena en el caché de la BD (hasta que bajes el gestor).
Es decir despues que la ejecutas, esta instrucción queda almacenada en tablas internas de la BD en forma "pseudo_compilada" para su posterior ejecución de forma mas rápida.

Cuando trabajas desde la aplicación con ODBC (u OLEDB) en forma general, la aplicación arma la instrucción, se la pasa al ODBC. el ODBC la valida, luego la pseudo-compila para el gestor, se la pasa al gestor y espera la respuesta desde el gestor... Ni que decir si esta se aplica muchas veces en el día...
Por otro lado, si cambias el select en la aplicación (no sé como la trabajas) tienes que propagar la aplicación con todos los clientes.
Si la trabajas en una vista de la BD, solo la cambias en la BD y voilá!!!! listo para todo el mundo...

Espero que te ayude...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta

Publicado por rosario (3 intervenciones) el 27/09/2007 14:27:27
Sí, me ayudas gracias, pero otra pregunta....

¿Si yo accedo a través de JDBC (ODBC o lo que sea), cuando la consulta llega a la BBDD de destino, se tiene que compilar siempre? ¿El orden de los joins, en este caso, es el que le digo yo o el que el gestor destino entiende que es el más óptimo (como sucede en el caso de las vistas en el gestor origen)?

Y una pregunta tonta para finalizar....¿qué quiere decir exactamente pseudo-compilar??? (explicacion tecnica, me refiero)

Muchas gracias y un saludo !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta 2

Publicado por Leopoldo Taylhardat (183 intervenciones) el 27/09/2007 14:38:17
Cuando la instrucción llega al gestor este interpreta que es lo que quieres hacer... y entonces cuando hablamos de pseudo compilación es que el va a disolver tu instrucción en instrucciones más pequeñas de acuerdo a los select y los join que tu hayas definido es decir... arma pequeños select de las tablas de acuerdo a tu necesidad... para eso y no tener que interpretar por ejemplo la palabra "select" el genera un pseudocódigo (interno) que convierte la palabra (en este caso "select") a uno o dos caracteres especiales para entender que es la instrucción select y así sucesivamente con las palabras reservadas (aunque nosotros veamos la palabra "select")..... esto es la pseudo_compilación, no es lenguaje de máquina que sería de verdad una compilación...
No sé si has visto alguna vez un programa de fox (foxpro) compilado... en realidad es una pseudo-compilación que el foxr (runtime) interpreta para mayor rapidez de proceso...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta 3

Publicado por Leopoldo Taylhardat (183 intervenciones) el 27/09/2007 18:16:06
Disculpa pero faltó una parte que no te respondí...
¿El orden de los joins, en este caso, es el que le digo yo o el que el gestor destino entiende que es el más óptimo (como sucede en el caso de las vistas en el gestor origen)?
El orden de los join le dá una idea parcial de lo que tu quieres hacer, pero el gestor es el que decide realmente de como lo va a hacer...

Eso se llama establecer el trabajo (o factor) POR COSTO!, el analiza las diversas rutas de como puede realizar la(s) accion(es), y decide cual es la mejor ruta para hacerlo... a veces leer toda la data o a veces un determinado índice, otras veces la relación de claves (claves foranes) le indica cual es la ruta más rápida y de mejor calidad para realizar la búsqueda de datos...
A veces el tiempo que tarda en establecer la ruta es mayor que la búsqueda en sí misma, todo depende de lo complejo de la selección y/o del gestor de la BD...

espero que estés más clara...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta 3

Publicado por rosario (3 intervenciones) el 27/09/2007 18:35:46
pues la verdad es que si, muchas gracias !!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nota adicional...

Publicado por Leopoldo Taylhardat (183 intervenciones) el 27/09/2007 14:29:07
Nota... faltó decirte que tanbién cuando la llamas desde la aplicación..
Cada vez que la ejecute, el gestor "pseudo-compila" la instrucción y arma la tarea, es decir establece la mejor ruta (según su criterio) , es decir:que tabla primero, cual índice tomar de cada tabla, etc. etc. etc... para el acceso a los datos y armara la "tabla virtual" con los campos que correspondan y la almacena en el caché de la BD (hasta que bajes el gestor).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar