[Zope] Where to store my data?

Randall Kern randy@teamkern.net
Mon, 13 Nov 2000 12:00:50 -0800


This is a multi-part message in MIME format.

------=_NextPart_000_12E6_01C04D69.5D6AF790
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

I've just started playing with Zope again, and this time I'm going to =
spend enough time with it to actually decide if it's crazy or I am :)

My project currently consists of a bunch of community "modules" written =
in PHP using MySQL as a data store.  Each modules PHP code produces an =
XML page, by running a bunch of queries in the database, and performing =
some logic.  These XML pages are then processed using XSLT, with a model =
very similar to Acquisition.

I'm getting very tired of the poor language design inherent in PHP, and =
wanted to start using Python again.

(Big reason for doing this work:  In the current package, each module is =
only accessible from a hardcoded URL, such as /links for the Links =
module, etc.  Many of my customers want to change the layout of their =
site, and in fact maybe have two Links modules, etc.)

So far, sounds like Zope would be a great system for me.  It would give =
my customers a good platform to customize their sites, and give me a =
good platform to build my modules with.

Now, short of just doing it and then discovering what I did wrong, I'm =
hoping to get some advice from the Zope community on how to structure =
this system.

This is a fairly large system, I host about 10 customers per box, =
serving about 4MM page views.  99% of the pages are dynamic, doing =
real-time database queries.

Some of my first questions:
-Is Zope a good choice for this kind of project?
-Which is better:  Store my content (Forum posts, Links, etc) in ZODB, =
or a MySQL database?
-Build my Product (right term?) in DTML/ZClasses (seems easier for my =
users to customize?) or build it in Python?
-Can I (easily) build this system in 4 layers:
    Content    -- actual low-level storage, rarely customized
    Logic/Object Representation    -- layer used to interact with the =
content, also rarely customized, although does have configuration =
options
    XML (page contents)    -- every URL should result in an XML =
document, containing all the information that will be presented on that =
page.  Written in DTML?
    XSLT (page rendering)    -- the XML documents must be transformed =
into HTML/etc.  These transformations, like the page contents should be =
inherited; excuse me, acquired.
-Simple things should be simple, Complex things should be possible. -- =
My users should be able to plop a Links module into their site, edit the =
Properties for that Object, and it works.  If they want to change the =
way Links are categorized, they should be able to, although it'll take a =
while longer :)

Thanks for your Zen,
-Randy

------=_NextPart_000_12E6_01C04D69.5D6AF790
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>I've just started playing with Zope =
again, and this=20
time I'm going to spend enough time with it to actually decide if it's =
crazy or=20
I am :)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>My project currently consists of a =
bunch of=20
community "modules" written in PHP using MySQL as a data store.&nbsp; =
Each=20
modules PHP code produces an XML page, by running a bunch of queries in =
the=20
database, and performing some logic.&nbsp; These XML pages are then =
processed=20
using XSLT, with a model very similar to Acquisition.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I'm getting very tired of the poor =
language design=20
inherent in PHP, and wanted to start using Python again.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>(Big reason for doing this work:&nbsp; =
In the=20
current package, each module is only accessible from a hardcoded URL, =
such as=20
/links for the Links module, etc.&nbsp; Many of my customers want to =
change the=20
layout of their site, and in fact maybe have two Links modules,=20
etc.)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>So far, sounds like Zope would be a =
great system=20
for me.&nbsp; It would give my customers a good platform to customize =
their=20
sites, and give me a good platform to build my modules =
with.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Now, short of just doing it and then =
discovering=20
what I did wrong, I'm hoping to get some advice from the Zope community =
on how=20
to structure this system.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>This is a fairly large system, I host =
about 10=20
customers per box, serving about 4MM page views.&nbsp; 99% of the pages =
are=20
dynamic, doing real-time database queries.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Some of my first =
questions:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Is Zope a good choice for this kind of =

project?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Which is better:&nbsp; Store my =
content (Forum=20
posts, Links, etc) in ZODB, or a MySQL database?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Build my Product (right term?) in =
DTML/ZClasses=20
(seems easier for my users to customize?) or build it in =
Python?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Can I (easily) build this system in 4=20
layers:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
Content&nbsp;&nbsp;&nbsp; --=20
actual low-level storage, rarely customized</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Logic/Object=20
Representation&nbsp;&nbsp;&nbsp; -- layer used to interact with the =
content,=20
also rarely customized, although does have configuration =
options</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; XML (page=20
contents)&nbsp;&nbsp;&nbsp; -- every URL should result in an XML =
document,=20
containing all the information that will be presented on that =
page.&nbsp;=20
Written in DTML?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; XSLT (page=20
rendering)&nbsp;&nbsp;&nbsp; -- the XML documents must be transformed =
into=20
HTML/etc.&nbsp; These transformations, like the page contents should be=20
inherited; excuse me, acquired.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Simple things should be simple, =
Complex things=20
should be possible. -- My users should be able to plop a Links module =
into their=20
site, edit the Properties for that Object, and it works.&nbsp; If they =
want to=20
change the way Links are categorized, they should be able to, although =
it'll=20
take a while longer :)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks for your Zen,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>-Randy</FONT></DIV></BODY></HTML>

------=_NextPart_000_12E6_01C04D69.5D6AF790--