Fog Creek Software
Discussion Board




Help me with this design spec

A while back I asked this esteemed group about Java and SWT vs. C++ and wxWindows for an app that will deploy on both Win32 and Linux.  The consensus was the C++ route, we've written some test code for both cases and we agree.

The next (last) puzzle for our app is a local database engine.  The strategy is to make the single user version free or nearly free, we hope to develop our revenue around the enterprise model, where our customers our using their own server - MySQL, MS 2000, MSDE, Oracle, whatever they are running.

The question is what local (non-server) database to use.  It must deploy without serious effort on Win32 and Linux, must speak SQL, and the price need not be free but should be reasonable.  I was thinking of TinySQL until a recent thread here, maybe I should still consider it.

Suggestions and comments are welcome, and thank you.

Mitch & Murray (from downtown)
Tuesday, March 23, 2004

I think BerkeleyDB requires fees for windows, please correct me if I am wrong. It's a glorified hash tree with support for transactions

Li-fan Chen
Tuesday, March 23, 2004

Think SleepyCat, their db api is with Cygnus and Mac.  However, they have an interesting license structure.

Mike Way( Fla Southern )
Tuesday, March 23, 2004

The Borland folks had been maintaining a small db now maintained partly by the FireBird RDBMS OSS group (www.firebirdsql.org/). You should check them out if MySQL BerkeleyDB, or PostgreSQL is out of the question on multiplatform deployments.

Li-fan Chen
Tuesday, March 23, 2004

BerkeleyDB's licensing: http://www.sleepycat.com/download/index.shtml

Li-fan Chen
Tuesday, March 23, 2004

SQLite is exactly what it sounds like, its a very good little embedded database. Its public domain software, so no licensing issues and its very easy to use and deploy.

FullNameRequired
Tuesday, March 23, 2004

Here's a thought: since you are shooting for database independence you could have a different db for different clients.  I worked at a company that did that, PostrgeSQL on UNIX and SQL Server on Windows.  On Windows the MSDE seems like a good choice for an app like this.  Postgre does work on Windows nicely but it can be a pain to get working on Windows but was easy to deploy on UNIX box.

Bill Rushmore
Tuesday, March 23, 2004

Sorry, when I said "TinySQL" I meant "SQLite".

So many databases, so little time ...

Mitch & Murray (from downtown)
Tuesday, March 23, 2004

Firebird (open source Interbase) has already been mentioned. I'll add my endorsement of this product for an SQL implementation. It works, and works well.

A commercial alternative is Sybase Adaptive Server Anywhere. In fact, I use this in preference to Firebird, purely because I'm still not completely comfortable with open source products as the foundation for commercial applications software.

I strongly suggest that you restrict your database usage to ODBC, or its Linux equivalent. That way, you will have the option of future portability (to a greater extent) if required.

HeWhoMustBeConfused
Tuesday, March 23, 2004

Don't you have some history with Delphi?

You could consider two of the databases that come from Delphi world and are written in Delphi:

Advantage Local Server is free and available for both Win32 and Linux:  http://www.advantagedatabase.com/ADS/Product+Detail/Advantage+Local+Server/default.htm

Advantage Local Server is free because they want to suck you into the Database Server, which isn't.  But maybe the Advantage Database Server would be industrial strength enough for some of your enterprise clients; it has the benefit at least of being cheaper than the enterprise-level alternatives you mentioned.

Or try DBISAM, which costs a few hundred bucks for a royalty free license.  I use DBISAM myself on Windows, and I know there are some satisfied users who work with the Linux version.  I guess you have to buy Win32 and Linux versions separate, but it's still a deal.

Herbert Sitz
Tuesday, March 23, 2004

We do indeed have mucho history with Delphi.  Given Borland's current direction, or lack thereof, we are moving ahead with a decision to use _mature_ open source tools for our next big project if possible.  C++ and wxWindows fit that bill nicely, hence our database hunt.

The Delphi situation is just grim, and with Kylix in DOA mode, there is no case for a cross-platform Delphi-Kylix app these days.

What a shame ...

Mitch & Murray (from downtown)
Tuesday, March 23, 2004

Hmm, I'm not sure the Delphi situation is so grim.  Delphi for .NET is maturing (first update is out) and the VCL.NET provides the only true bridge between Win32 and .NET apps.  Major third party component providers like Developer Express plan to release VCL.NET versions of their VCL components, making porting of existing Win32 apps to .NET fairly easy.  And making continued development of desktop apps using Win32 fairly reasonably safe.  Anyway, my plan is to stick with Delphi on Win32 for hopefully another year or two.

Anyway, you don't have to think of Advantage or DBISAM as Delphi-native databases.  Just think of them as proven databases that you can access on either Win32 or Linux via an ODBC interface.  They're both being ported to .NET and I'm guessing they'll both be around for the long haul.

Herbert Sitz
Tuesday, March 23, 2004

Although, I guess, continued development of the Linux versions of DBISAM and Advantage brings up a question mark.  So, okay, nix my idea.  Damn.

Herbert Sitz
Tuesday, March 23, 2004

Agree with Herbert. Borland is screwing up all over the place (see C++BuilderX), but they seem to take Delphi.NET seriously. There have been two updates already, and they are finally planning a long-awaited update for Delphi 7 Win32. It may not be so grim after all.

Frederik Slijkerman
Wednesday, March 24, 2004

Mitch & Murray have specified that the database understand SQL.

AFAIK, Berkeley DB does not support SQL.  Their web page certainly doesn't mention it.

Berkeley DB is a fine product, and has its merits (the main one being that the DB is integrated into the application, and does not require the complexity or security issues of a separate server), but if the requirement is for complex queries, then it is likely not appropriate.

David Jones
Wednesday, March 24, 2004

Berkely DB doesn't support SQL.  In fact, the mySQL project started (and I think is still mainly) as a SQL parsing engine on top of BDB.  BDB is really, really good for applications that need fast, reliable transaction management, particularly in embedded applications.  In the enterprise space, Amazon uses it to speed up the web site for users.

But, given your SQL requirement, I would take a look at SQLlite.  Given that I'm a Java programmer, I've never used SQLlite, but if this were a Java app, you should look at HSQLDB.

Also consider something like The Prevayler, if you can relax your SQL requirement...

joev
Wednesday, March 24, 2004

*  Recent Topics

*  Fog Creek Home