Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 403
  • Last Modified:

New "Developer" considering Delphi as a database Solution. Seeking Advice/Direction.


It has been years since I have done any programming or work with databases, all of which was done in Paradox (4.0 & 5.0) and the Windows 3.1 environment.  My new task at had is selecting a development environment and database solution for a project.  The makeup of this database will really not be extremely complex (15-20 tables).  In attempting to get up to speed with technology changes in programming & databases, I am finding that for the most part the BDE is being abandoned and SQL/Web-solutions/.NET are here/replacing older database solutions.

One option “seems” to be using Access as a development environment, but I was leaning towards Delphi 7/8 which leaves the choice of a database solution up in the air.  Mainly I am asking for advice on what type of database/development platform to use.  Our work environment consists of Windows XP machines and Windows Server 2003 (w/SQL Server 2000).  The final application/database will probably need to be client/server, although very few users will ever access the database simultaneously (maybe 4-8).  The data, due to government regulations, would eventually need to be backed up and easily accessible for 7 years, but the application/database would not be distributed to a large user base (10 people max).

I don’t really know much about .NET, ASP etc, and whether that is something I should investigate/consider more either.  Any advice/direction appreciated with regard to Delphi and Database solutions.
3 Solutions

Development Tool:
With Delphi 7 you can develop your system in a C/S
way and port that solution (depending on how much
dependence you have from WinAPI  tricks) to .NET
On the .Net Framework, there is Delphi 8 where you
can use your VCL code created on D7.
There's a few components that don't go on .NET but
majority of the D7 components will be there.

If you go .NET framework straight, many experienced developers
gets troubled with its workings, including myself I've got perplexed
some times. Is not their fault, it is .NET that created such a revolution
on the way of how a application interact with the system. For good
or evil, this is another discussion that I will NOT enter. (It's perfect
flame wars).
With Delphi you can also develops Web front-ends for your business
rules either using ASP Active Server Objects, WebSnap
(Borland's architecture for creating dynamic front-end) and Intraweb
applications - these 3 with Delphi 7. You can compile either CGI, ISAPI,
Apache Modules and stand-alone apps for debugging.
With Delphi 8 for .NET, your web front-end can be ASP.NET  or Intraweb
(but you'll have to buy IntraWeb because is not included on D8 now. It
is included on Delphi 7). Note: ASP.NET is COMPLETELY different in
structure and concept from classic ASP.

I go for Delphi. (But I am Delphi developer)

Database Manager:

I'm consider myself a good MSSQL 2000 DBA. But I don't like much
the philosophy of MSSQL 2K. If you are considering a database change,
I'd go FirebirdSQL. Free, robust and outperforms SQL Server on high
contention environment.
If you need replication, there are some third-party replication modules.
(The way you describe your environment, doesn't seems that you'll need

For IDE - I recommend you Delphi 7. If you are going to have some clients simultaneously - you should think of some sort of application server. This could be MTS COM+ object or SOAP web service. I would recomment you SOAP. Delphi 7 can create them both. The web service can easily be ported to Kylix and running under Linux.

Connecting to DB from Delphi ... The best option is Direct Access Components, they are faster, but the disadvantage is that if you want to change the database - you will have to rewrite part of the code. While using SOAP applications, you DataBase components will sit in the server and you can use TDataSetProvider and TClientDataSet to transfer the data. If you want more DB independance - consider dbExpress as good choice. Borland made it as a replacement of BDE.

About the database... If you want FREE database server - the best one is PostgreSQL. There is a version for Windows, I think the site was PgFoundry.com. Large part of the stuff in this DB is "imitated" from Oracle. The SQL dialect is called PGPL/SQL, something like PL/SQL in Oracle, but if you want, you can add modules and write stored procedures in other languages like C or Perl... So it is good choice.
If you want something PAID - then Interbase is for you. The only thing I hate in Interbase/Firebird is that after a SELECT statement it enters a transaction, but I can live with that...
> If you want something PAID - then Interbase is for you
Of course, there is also the OpenSource branch of Interbase ... www.ibphoenix.com
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

D7 + InterBase is a perfect solution!

I use old components named FreeIB to direct connect to the DB, but now-a-days, the equivalent components come with delphi 7 and are named IBX... I didn't change to them as it was easier for me to trick the FreeIB to work with lates releases of both, D7 and InterBase 1.5 (I can mail them to you if you want, but better use IBX as they are supported by Borland, and tricked FreeIB are only supported by me!).

Also, to mamage the DBs I use IBOConsole, and have done a tool to translate DBF or CSV tables into FireBird DBs easily, that again can mail to you if you feel in the need (or can find it yourself at http://www.hcsoft.net/hclabwin/archivos.php?haz=lista&ruta=%2F2.+Bases+de+datos/Utilidades).

Wim ten BrinkSelf-employed developerCommented:
Since you already have SQL Server, I'd just suggest that you use it. Don't even bother with Interbase, Access or whatever else. SQL Server, especially on a dedicated system, will perform well enough.

Delphi 7 would be a nicer solution than Delphi 8, though. And all you will need are the ADO components. Keep in mind however that designing client-server databases is completely different from what you've been used to.

Now, you have two possible setups. Either do a two-tier application where your client connects directly to the database through ADO or create a multi-tier application where you create your own server components to install on some special server system. The 2-tier solution is relatively straightforward for you. It's quite similar to what you're already used to. For a multi-tier solution you will have to think about the best way to set up the middle tier. (The server with your server components.)

There are quite a few solutions for multi-tier applications. SOAP has been mentioned already but Delphi's implementation of SOAP is flawed, making it incompatible with many SOAP clients. With Delphi 8 you can consider .NET Remoting but this technique hasn't proven itself yet. It's still to experimental. You could create your own TCP/IP protocol to send data between client and server but this requires a lot of work. You could use DCOM but this requires lots of insight in security issues and requires things to be set up correctly. MIDAS is an option too, with CORBA but I consider then a bit too expensive for what they offer.
The solution I once chose for in a similar situation was COM+ though. (Used to be known as MTS.) It's free and works well on W2K and better. You create a COM+ component in Delphi that exposes several methods and install it as a COM+ application. Then any client can connect to this server, call the COM+ component and access it's methods.

However, all these multi-tier solutions are only usable when you have at least a dozen or so users active at the same time. It allows you to divide processing time over multiple systems. Actually, some multi-tier solutions have been created to even support thousands of simultaneous users thus it is a bit overkill if no more than 4 users are active at the same time. A 2-tier solution would be a lot better in that case.
The only other advantage of multi-tier applications would be that you tell the client to which server it has to connect and the server knows to which database you have to connect. In a 2-tier application, every client needs to know where the database is...

So, open Delphi 7, drop an ADOConnection component and some ADOQueries to it (avoid ADOTables!) and set it up correctly. Add the data-aware components you need and this whole thing might be finished in about a week. ;-)
Keep it Simple!
> The solution I once chose for in a similar situation was COM+
So what is the solution that you use now, Alex? hehe ;-)
Wim ten BrinkSelf-employed developerCommented:
Well, my current solution was to go to a different employer, move back in time to use Delphi 5 and work with applications that use FlashFiler as database. And these applications are just desktop applications that can communicate with each other through a simple TCP/IP protocol, if needed.
My current projects have become a lot easier with databases but more complex with the real internal works of the PC and telephony. (Sending faxes, connecting to a PBX system, etc.) Less administrative and more technical. A better challenge for me. :-)

Still, if we would have to build a large database system then I would advise my employer to start using COM+ because it's quite easy to use, once you're past the huge learning curve. ;-)
COM+ ... gosh, that's one thing that I've been reminding myself to learn, but never managed to motivate myself enough to learn it ;-)

Been using FPiette's MidWare components as the application server/middleware instead, and it is still working reliably, with about 9k users and approx. 1k concurrent users.
hbtitansfanAuthor Commented:
Thanks for the Comments and Suggestions.  Very much appriciated.  I will close this question out as answered (New to this service).  For anyone that used Paradox, when i used it, i simply fell in love with ObjectPAL.  Eventually learning it inside out, before basically leaving the "computer-world" behind for a few years.  Once tried my hand at C, and Delphi 1.0 but could never "get into them" like i did Paradox/ObjectPAL.  Anyone that used Paradox and also "loved" ObjectPAL--Anything similar in/with Delphi?

Thanks again Folks
Wim ten BrinkSelf-employed developerCommented:
I've used Paradox too in the past. I still have it installed on my current system, although I don't really use it anymore. I never done much with ObjectPAL though, simply because I used Delphi even before I started using Paradox. (And before Delphi I used Turbo Pascal with DBase IV.) Paradox still exists but it's in the evil hands of Corel who have messed it up completely. Besides, Paradox has to compete with Access, MySQL and InterBase/Firebird these days and these other databases just perform better in multi-user environments. Paradox also had lots of problems with corrupt indices and can be quite slow when you're trying to use complex queries, compared to other databases.

These days SQL just happens to be the most important database language and Paradox just isn't good at supporting it. And especially in a commercial environment with dozens of users the preference would be to use a "real" SQL database like SQL Server or Oracle. (And perhaps InterBase, but Interbase is more somewhere in the middle, with SQL Server and Oracle on top and Access and MySQL at the bottom. It's like a link between simple systems on the bottom that can be used for simple projects and the complex systems at the top for real enterprise solutions.)

In the future, look at the bottom-left below the last post. There's an option there that you can use if you want to split the points over multiple experts, in case more than one person gave you a useful answer.

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now