dbExpress vs native Drivers
I was reading Holgerwa's question and I have a question.
Is there any significant performance improvement by changing from dbExpress to other driver specific?
Can we use dbExpress and still use specific DB engine feature开发者_Go百科s?
Depends on which dbExpress driver and "other driver" to compare. But a good library may be faster than a standard dbExpress driver. You can see our benchmark results here. There
TADQuery
is AnyDAC query object.Borl TSQLQuery
is Delphi TSQLQuery using standard dbExpress driver.Yes, when a feature is accessible through database SQL dialect. No, if a feature is accessible through database client API. For example, using SQL Server dbExpress driver you can backup SQL Server database using
BACKUP DATABASE
SQL command. But using Firebird dbExpress driver you cannot backup Firebird database, as that requires to use Firebird services API. The similar with many other areas.
You can also use both type of drivers simultaneously in the same project:
A dbExpress driver for all things that do not need specific features, so you can achieve some kind of portability between different database systems while getting stuck to Delphi standard components, at the expense of a little decrease in performance.
A true native driver/component-set (like IBX) only for specific features that dbExpress can't address, like creating a database, doing a backup/restore or doing some kind of maintenance specific to the database vendor. Native drivers can also be used to optimize modules demanding high speed, such as bulk load operations.
There is also a third way, by using third-party database-independent components, like UniDAC and AnyDAC, that, according to its developers, are more lightweight, more optimized and more powerful than dbExpress, while preserving database independency and some access to specific features.
精彩评论