7
votes

We have a Delphi 5 app connecting to an Oracle 8i database.

Most logic is siting in the database as Stored Procedures. Currently we are using the Borland Database Engine (BDE) to connect to Oracle via OCI client 9.2.

This app was originally written in '96 using Delphi 1 then upgraded to Delphi 5 in '99.

The plan is to upgrade to XE client and Oracle 11g.

What are what the options to simply replace the BDE with something else and keep the effort to a minimum?

So far I have seen:

  • AnyDAC (http://www.da-soft.com/anydac/)
  • devart ODAC (http://www.devart.com/odac/)
  • DOA (http://www.allroundautomations.com/)

I am not considering DBExpress as I do not believe that it will have the performance that we need.

Things that are important are:

  • ease of upgrade, e.g. wizard or some other tool to convert DBE components,
  • Good Performance.

I am leaning towards devart as they do have a migration tool (although it only does a partial job) and they have a direct TCP option to connect to database without the need for a client.

2
What makes you think dbExpress won't have "the performance you need". do you have any facts or are you making the decision purely on "belief" without data? dbExpress can be very high performance indeed, especially if you do it right. And any Data access layer implemented poorly will result in a slow app.Warren P
I would go for devart, we are using it to connect to postgres databases for a little over a year and we are very pleased with performance, the only "issue" we have thus far is the lack of multithreaded connectionuser497849
OK so know I believe that I was getting DBExpress and ADO mixed up. With a typical query I got the following: - ODAC 2.7s - DBExpress 2.8s - ADO 9.5sAnts
dbExpress itself is fast. But dbExpress + DSP + CDS is slow. But to make bidirectional cursor you will need to use this bundle. Also, we migrated our applications to AnyDAC - work great, fast and stable !robmil
AnyDAC is ideal for migrating from BDE because, among other things, there is no problems with fields mapping (persistent fields, ...). You can map all fields exactly as BDE.Branko

2 Answers

4
votes

You will need to learn about the differences between BDE and other architectures. Whether you plan to move to dbExpress or not you should read and learn from this whitepaper.

The architecture of dbExpress is an intentional architecture, designed to address critical flaws not only in the BDE's lowest levels, but also in its upper levels (the TTable/TQuery components) and architecture. Understanding the reasons for those changes, and the limitations in the BDE that they address, is a key element in moving your app off the BDE, to anything.

As for your contention on performance, I like to see people use real data, not form opinions based on hand-waving, or adjectives like "fast" imparted upon objects, without experimental backing.

I have not personally used DOA, but if I wasn't going to use dbExpress, that would be the next thing I would evaluate, for Oracle-only environments. nevertheless, I wouldn't assume that dbExpress is slower, without testing both in my own environment.

Updated: Originally I mentioned Delphi OCI, but it turns out it's out of date, and not very active. DelphiOCI project on sourceforge, works with Delphi 7 and before, not on unicode delphi, and only with older (Oracle 8i and older) oracle versions... If this was able to work in my environment, I'd have tried it. Oh, and it's GPL. Okay. Not so great.

1
votes

Both ODAC and DOA (although DOA development is pretty stale lateley) will give you access to Oracle features dbExpress and other generic DB access libraries will usually not allow access to. If your application does support Oracle only, and doesn't need to support other DBs, it's IMHO far better to exploit Oracle capabilites fully. The ease of port depends on how you wrote you BDE component code. ODAC has tools to simplify BDE porting (I never used them, though), while AFAIK DOA has not. DOA TOracleQuery is not a TDataset descendant, and thereby is not a direct TQuery replacement, although it has less overhead, and thereby has good performance, while TOracleDaset is the only dataset-like component. I would not use the ODAC direct TCP connection to Oracle without the Oracle client but for very special needs - it is an unsupported (by Oracle) connection, I'd prefer to use Oracle Instant Client if a small (relatively...) footprint is needed, at least it is a fully supported option and let you (or your customers) open support request with Oracle if needed.