Database Engines

Modern RDBMS help greatly with the storage and retrieval of structured infomration. We employ database engines in our development in order to ease the development process and help take care of many common storage and retrival tasks.

Desktop Databases

Network Databases

Choosing a desktop database engine

These engines/libraries do not support networking, writing concurrency (very well), or authentication. They are good for only a small number of users (preferably one) on a single machine.

For a standard Desktop application with only one client and no requirements for security it makes sense to use SQLite or Berkely DB. According to the SQLite website, "SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.". SQLite is a simple database which is stored in a single file. It allows for most SQL operations such as select, insert, update, delete to be performed on the data contained in the file.

Berkeley DB is different in that it does not allow for standard SQL to be used. Therefore, if there is ever a need to move to a heavier engine because of changing requirement, all the statements to access the database must be re-written. In general, unless there is a good reason to do so, we prefer to use SQLite in developing our desktop applications.

Choosing a network database engine

These engines are full Relational database management system (RDBMS) that have tons of features at the cost of bloat -- running a separate piece of software to support your server. This means that though they provide a lot of features, they may be overkill for a desktop application unless the application wishes to adopt a client/server model. In such a case it might be better to build a web application and run it on the Intranet rather than build a desktop application.

Other considerations

Another major consideration in choosing a database engine include the price. In the field of networked databases, price plays a big part. Oracle being the