I found Propel today. The reason I found it was because I was looking for something somewhat similar to what Enterprise Objects do in WebObjects - basically, instead of writing SQL code I want to pass a bunch of variables (or an array, whatever) to an object and have it store it in the appropriate locations and take care of uniqueness and relationships where necessary. Propel does most of that. You can define the database schema in XML and Propel will automagically generate classes for you. It does introduce a compilation step, though. It also supposedly does persistence, but I haven’t gotten quite that far into it. The only real complaint I can see with it so far is that it doesn’t use PEAR DB or PDO - it uses its own thing called Creole - which limits its RDBMS support, and its architecture doesn’t lend itself quite as well to interfacing with things that aren’t RDBMSes (like XML files or LDAP or whathaveyou).
FWIW, PHP has something neat that’s being built into it that’ll do a lot of this too - SDO. It’s much the same concept as an EO but it’s part of the language (sort-of, it’s written in PHP) and should allow interfacing with stuff that’s not a relational database.
Still researching the ideas. Got some projects coming up at work that will lead me into dealing with this stuff more and more; in addition, it’ll be helpful when I start working on my stuff again (which should be Real Soon Now). Using either of these will save me from writing one myself, which would be excellent since I would end up getting stuck on writing a search engine that handles relationships between dissimilar data sources and all that haughty nonsense.
As an aside: dual monitors on the Mac Mini is out. I tried hooking up a dual-link (VGA+DVI) cable to my Mini - when you go to choose resolutions, it bongs confusedly when you tell it to refresh displays. The reason it Really Won’t Work: the port on that thing isn’t dual-link so there can only ever be one screen active at a time. When you choose a resolution not supported by your DVI display the VGA port kicks in and makes an attempt for it. Kinda sucks. Need a different monitor.