Eventually, you are going to need persistent objects, or just some way
to store and retrieve data. The approach you use depends on many
factors, such as:
- Do you have a lot of data to store?
- Must you work with an existing database schema, or can you start from scratch with a new schema?
- Do you need/want to have a traditional relational model so that you or your users can use standard report generating tools?
- Do you need close control over the database schema for purposes of optimization?
- If you must use an RDBMS, does it have object-relational features (e.g., inheritance) like say, PostgreSQL?
- Do you need support for transactions to commit changes to one or more objects/data fields atomically?
- Do you care about ACID compliance (because your data and/or transactions are mission critical)?
- Do you care about closed source vs. open source?
- Must you support ad-hoc online queries, report generation, hot database backups, and heavy multi-user or transaction intensive use?
- How much do you want to spend?
The following is a list of possible solutions:
- Use an object-oriented database or object store like ZODB
- Use an RDBMS and the Webware MiddleKit object-relational mapper
- Use an RDBMS and some other object-relational mapper. Possibilities include:
* Database Objects (dbObj)
- Forget about object-relational mapping--use the Python DB API and an RDBMS directly
- Use DBUtils on top of the Python DB API
- Use Python's pickle and shelve modules
- Roll your own system with a flat file
- Informix? (proprietary)
- InterBase? (open source)
- MySQL (open source)
- Oracle? (proprietary)
- PostgreSQL (open source)
- SAP DB (now open source, based on ADABAS code)
- SQL Server? (proprietary)
- Sybase? (proprietary)
- Database Debunkings is a great place to look for intelligent
discussion about database issues by people like C.J. Date and Fabian
- searchDatabase.com seems to be another great site to start
exploring the literature on databases.
- When will they ever learn is a critique (by Fabian Pascal) of an
exchange on whether MySQL and Innobase are DBMSs, or even
relational. C.J. Date makes an appearance, and you get to hear the
horses speak directly.
- Linux RDBMS Library Compilation of free readings on Linux
- What exactly is a relational database? C.J. Date explains in A
Closer Look at Relational Database. This site requires free
- Fabian Pascal explains why SQL sucks and why all SQL DBMS violate
important relational features, some more than others in Little
Relationship to Relational.
- Think OODBMS are the bee's-knees? Better read this first.
-- EdmundLian - 30 Dec 2001