Forum OpenACS Q&A: Response to Article on ACS x Zope
requested notification for in the OpenACS compared to other toolkits and technologies bboard:
Subject: Response to Article on ACS x Zope
Very perceptive comments about acs vs zope, (and I quote)
7. Ecommerce happens to be one of the areas where an RDBMs is a REQUIREMENT. I
see nothing in in the Zope architecture that would prevent somebody competent
in both RDBMs design and Zope from re-implementing the ACS ecommerce module in
Zope (the same may also be true of other modules but I haven't looked). "
It has struck me many times and I have commented on this in zope mailing lists
- Zope's interface to RDBMS is so good, yet so incomplete. You have a wonderful
abstraction layer which easily allows you to move a zope application from
Oracle to PostgreSQL (or write support for both in the same applciation) - so
good, yet support for different RDBMS is so bad, Zope provides 'official'
support for Oracle, Sybase and ODBC (Win32 only), relying on third party
products for PostgreSQL, MySQL. No Linux ODBC, no Informix, no DB2, no
Interbase ... It seems to me that Zope could distinguish itself by supporting
'all' the RDBMS's likely to be used. Then you could write a Zope app which was
portable across any environment.
[AL] I gather OpenACS has concentrated on porting ACS from Oracle to Postgresql and is interested in also supporting other RDBMs but is hindered by the lack of ACS interest in a data abstraction layer. So each port will be a major development and subsequent maintenance undertaking to keep in sync with ongoing ACS development. Its interesting that the ACS interbase port seems to be an entirely separate project. I would have thought that adding the client drivers for each RDBMs to Zope (and likewise to AOLserver) can reasonably be left to those interested in supporting each particular RDBMs and neither will have great difficulty obtaining that when actually needed.
The real issue is the data abstraction layer. There's a LOT more to porting between different RDBMs than just the drivers.
BTW a couple of specific questions.
1. Is there any problem with the third party Zope Postgresql client driver that would make it more difficult to use the OpenACS Postgresql code with Zope? (I just assumed it "works" and will be more suitable for specific Postgresql facilities than going via ODBC, but have no knowledge).
2. Is there some difficulty implementing Linux (and FreeBSD etc) ODBC client drivers for Zope that explains why there is only a Win32 ODBC driver? I just assumed that since Zope itself is mainly python with no OS dependencies, all the Zope work would be on "talking to ODBC" which has already been done for Win32 ODBC and the remaining (much harder) work would be on the RDBM ODBC driver side, not on the Zope (or AOLserver) ODBC client side at all, which has already been done (and equally applicable for ODBC on AOLserver) for all the various OSes. I assumed that if Zope can talk to an ODBC client driver on one OS it could easily talk to an ODBC client driver on another OS and Linux, FreeBSD etc ODBC drivers are readily available. Likewise I assumed that when an ODBC client driver is available for any OS that AOLserver is implemented on, it would not be a major separate job to interface it to AOLserver on that OS. Again, I have no knowledge.
" 8. Unfortunately there seems to be little overlap and little appreciation of
the importance of an RDBMs for ecommerce apps in Zopeland so I am doubtful that
this will happen there soon."
There are Zopers with RDBMS background (like me) but we are in a minority. It
is hard to believe that people would seriously try to build an ecommerce
application using the Zope ODBMS but they have. Whether the idea of mapping the
Zope ODBMS onto an RDBMS ( someone has just releases this with the ODBMS
running in Interbase) is the best or worst of all worlds I'm not sure.
[AL] Well I can't be sure either as I'm no expert on any of RDBMs, ACS or Zope, but I very strongly suspect that any belief that this would be the best of all possible worlds simply arises from people with RDBMs background being a minority among Zopers. It just doesn't make sense to me because Ecommerce requires:
1) Concurrent shared access with entirely separate internal systems for accounting and fulfilment (and often for the product catalog), which can be be interfaced directly to a web RDBMS via ODBC or native RDBMs drivers if available, but will not benefit from either Zope or ACS web related stuff themselves. I don't see how the ZODB using an RDBMs for its "storage" helps with this at all. How would they interface to what the ZODB assumes is its private storage? If they have to interface via Zope as I assume, then the fact that Zope happens to be using the same RDBMs for storage is simply irrelevant.
[continued in next message due to 4K limit]