Well, here I am sitting at one of the handy power and internet outlets in Changli Airport in Singapore, hoping the paranoia caused by missing an international flight the last time I lost track of time sitting here will prevent the same from happening again. Checking in to the transit check-in desk, they informed me of a slight delay in my outgoing flight to Amsterdam, of the order of 5-7 hours. So, I've got another all-nighter to pull through - I wonder if I'll be ID'd at 4am by any assault rifle clad security staff this time around. On the bright side, that means I should be taking off between 8am and 10am in my home time zone. So, if I sleep deprive myself now I'll hopefully get some sleep on the 10+ hour leg over the continent, and also hopefully not miss a boarding call for my delayed flight being brought forward. Fun, fun, fun.
What better thing to do when sleep deprived but write talks, or in this case, the second set of rants I'm passing off as substitutes for my withdrawn YAPC talks. This second talk I really hated withdrawing; but sadly, I had some crazy things happen to me in the 11th hour of preparation, and when you're a hard core procrastinator like me, that can really throw a spanner in the works because that last hour is where most of the work gets done. So, I'll put the material and 'argument' here, and hopefully still be in the position to turn it into a good talk with slides and examples for the Australasian Perl conference in December (OSDC). Much, much kudos to my employer, Catalyst IT, for sending me to speak at such an insane number of international conferences this year (OSDC will be my third).
In case anyone missed it, this was the advertised talk topic:
Database - Slave or Master? DBIC vs Tangram
Whilst the DBI may be an excellent provide of database driver independence, just about every programmer who starts using the DBI ends up either building their own abstractions to its interface, or using somebody else's. As a result there are a multitude of modules in this space with significant overlap in functionality.
This talk compares two major categories of database management libraries - "Database Abstration" (DDL driven) and "Object Persistence" (metaclass driven). DBIx::Class (a module with some design roots in Class::DBI ) and Tangram (a prevayler-style persistence system) are examined as mature examples of each of these styles of access.
The plan at this point is to break it into three logical chunks - in the first part, I will put across my thoughts about the traditional approach of Database Abstraction used by DBIx::Class and other modules, where the database is considered to be the centre of the information. If nothing else, that should help clarify things like terminology and make sure that readers of the later parts are on the same page as me. In the second part, I will discuss the alternate approach used by Tangram, as well as its key advantages and failings. In the third part I will outline how I see this schism can be closed without losing the benefits of either or having to rebuild your applications from scratch (again).
Let the rambling begin.