Hola a todos !
Haciendo pruebas con Xailer.
Casi dos dias me tome para hacer unas pruebas utilizando las siguientes
Bases de Datos.
FireBird
Access
SqlLite
MySql
Advantage Data Server
Utilizando los DataSoureces y DataSets he aqui los Resultados
Una Base de Datos de 1,110,260 (1 millon cientodiez mil dosciento sesenta )
Renglones ó Rows
Utilize DBManager para Migrar la Inf. de una Base de Datos a otra.
Una Forma puse el DataSource, un DataSet y un DBBroswe, el DataSource con su
respectiva cadena de conección a cada base de datos.
FireBird tarda en mostrar los datos en el browse 25 segundos
Access tarda en mostrar los datos en el browse 4 segundos
SqlLIte tarda en mostrar los datos en el browse mas de 60 segundos
MySql tarda en mostrar los datos en el browse 15 segundos
Advantage tarda en mostrar los datos en el browse 12 segundos (Con los
Componentes Ado)
Advantage con los Componentes TAdsDataSource y el TDbfDataSet tarda menos
de1 segundo
Ahora tengo unas preguntas ?
La literatura de Advantage dice que Abramos la Base de Datos al principio de
la Aplicación con todas las Tablas a utilizar.
1.- Esto es aplicable tambien a los DataSets, o sea que debo de abrir en la
forma principal todos los datasets necesarios correspondientes a todas las
tablas a utilizar?
2.- He visto que en Clase TAdsDataSource existen dos metodos QueryArray() y
QuerryRow() y al parecer funcionan distinto que el metodo Query() de
TAdoDataSource.
Porque no se puede utilzar el DataSet TSqlQuery en conjunción con
TAdsDataSource ya que de esa manera tendria los Resultados de los "Select *
from Tabla " en el Datset directamente y
no en un Array como lo hacen QueryArray() y QuerryRow() de
TAdsDataSource.
Creen que seria posible implentar TAdsDataSource->TSqlQuery ?
Gracias
Saludos....
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Advantage el Rey
-
- Mensajes: 114
- Registrado: Dom Dic 18, 2005 7:50 pm
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Advantage el Rey
Martin,
No puede estar en más desacuerdo, lo siento.
La apertura de una tabla DBF, aunque tenga millones de registros, sólo tarda
un segundo, pues realmente no hay más que hacer un simple Fopen() y saltarse
el Header, eso es todo. No me parece la prueba más acertada. No obstante, si
tienes intención de mostrar Browses con miles o millones de registros, el
formato DBF es el rey, pero en mi opinión lo veo poco práctico.
> La literatura de Advantage dice que Abramos la Base de Datos al principio
> de la Aplicación con todas las Tablas a utilizar.
> 1.- Esto es aplicable tambien a los DataSets, o sea que debo de abrir en
> la forma principal todos los datasets necesarios correspondientes a todas
> las tablas a utilizar?
Si. Le recomiendo que utilice las funciones ADSCacheOpenTables() y
ADSCloseCachedTables()
/* $DOC$
* $FUNCNAME$
* ADSCACHEOPENTABLES()
* $CATEGORY$
* Advantage Database RDD
* $ONELINER$
* Provides caching of open tables
* $SYNTAX$
* ADSCACHEOPENTABLES(<nOpen>) -> nRetVal
* $ARGUMENTS$
* <nOpen> Number of tables to cache.
*
* $RETURNS$
* <nRetVal> ???
* $DESCRIPTION$
* AdsCacheOpenTables allows table closes to be cached in order for
* subsequent opens to occur faster. A call to AdsCloseTable with
* the table cache greater than zero results in the table appearing
* closed to an application, but still open on the Advantage server.
* AdsCacheOpenTables is a global setting that affects the behavior
* of the entire application. The default number of open tables that
* are cached is 0.
* $EXAMPLES$
* AdsCacheOpenTables( 25 )
* $STATUS$
* R
* $COMPLIANCE$
* Harbour extension
* $PLATFORMS$
* Windows 32-bit, Linux
* $FILES$
* Library is RddAds
* Header is ads.ch
* $SEEALSO$
* AdsCacheOpenCursors()
* $END$
> 2.- He visto que en Clase TAdsDataSource existen dos metodos QueryArray()
> y QuerryRow() y al parecer funcionan distinto que el metodo Query() de
> TAdoDataSource.
TAdoDataSource no tiene ningún metodo Query()
> Porque no se puede utilzar el DataSet TSqlQuery en conjunción con
> TAdsDataSource ya que de esa manera tendria los Resultados de los "Select
> * from Tabla " en el Datset directamente y
> no en un Array como lo hacen QueryArray() y QuerryRow() de
> TAdsDataSource.
Las clases TSqlQuery y TSqlTable estas pensadas para ser utilizadas con
cualquier datasource TIPO SQL REAL, que no es el caso de ADS. Los métodos
Query?? que incluye TADoDataSource sólo devuelven matrices por decisión
propia. Si lo que desea es un método que proporcionandole una instrucción
SELECT le retorne un Alias DBF válido le recomiendo que le eche un vistazo
al código del método QueryRow() donde puede observar fácilmente como
hacerlo.
Un saludo
No puede estar en más desacuerdo, lo siento.
La apertura de una tabla DBF, aunque tenga millones de registros, sólo tarda
un segundo, pues realmente no hay más que hacer un simple Fopen() y saltarse
el Header, eso es todo. No me parece la prueba más acertada. No obstante, si
tienes intención de mostrar Browses con miles o millones de registros, el
formato DBF es el rey, pero en mi opinión lo veo poco práctico.
> La literatura de Advantage dice que Abramos la Base de Datos al principio
> de la Aplicación con todas las Tablas a utilizar.
> 1.- Esto es aplicable tambien a los DataSets, o sea que debo de abrir en
> la forma principal todos los datasets necesarios correspondientes a todas
> las tablas a utilizar?
Si. Le recomiendo que utilice las funciones ADSCacheOpenTables() y
ADSCloseCachedTables()
/* $DOC$
* $FUNCNAME$
* ADSCACHEOPENTABLES()
* $CATEGORY$
* Advantage Database RDD
* $ONELINER$
* Provides caching of open tables
* $SYNTAX$
* ADSCACHEOPENTABLES(<nOpen>) -> nRetVal
* $ARGUMENTS$
* <nOpen> Number of tables to cache.
*
* $RETURNS$
* <nRetVal> ???
* $DESCRIPTION$
* AdsCacheOpenTables allows table closes to be cached in order for
* subsequent opens to occur faster. A call to AdsCloseTable with
* the table cache greater than zero results in the table appearing
* closed to an application, but still open on the Advantage server.
* AdsCacheOpenTables is a global setting that affects the behavior
* of the entire application. The default number of open tables that
* are cached is 0.
* $EXAMPLES$
* AdsCacheOpenTables( 25 )
* $STATUS$
* R
* $COMPLIANCE$
* Harbour extension
* $PLATFORMS$
* Windows 32-bit, Linux
* $FILES$
* Library is RddAds
* Header is ads.ch
* $SEEALSO$
* AdsCacheOpenCursors()
* $END$
> 2.- He visto que en Clase TAdsDataSource existen dos metodos QueryArray()
> y QuerryRow() y al parecer funcionan distinto que el metodo Query() de
> TAdoDataSource.
TAdoDataSource no tiene ningún metodo Query()
> Porque no se puede utilzar el DataSet TSqlQuery en conjunción con
> TAdsDataSource ya que de esa manera tendria los Resultados de los "Select
> * from Tabla " en el Datset directamente y
> no en un Array como lo hacen QueryArray() y QuerryRow() de
> TAdsDataSource.
Las clases TSqlQuery y TSqlTable estas pensadas para ser utilizadas con
cualquier datasource TIPO SQL REAL, que no es el caso de ADS. Los métodos
Query?? que incluye TADoDataSource sólo devuelven matrices por decisión
propia. Si lo que desea es un método que proporcionandole una instrucción
SELECT le retorne un Alias DBF válido le recomiendo que le eche un vistazo
al código del método QueryRow() donde puede observar fácilmente como
hacerlo.
Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com