> If you write SQL using specific database extensions (i.e., non-ANSI SQL)

Access isn't the only problem here. Oracle 8 does not support ANSI style
joins. For example,

SELECT A.column, B.column
FROM A LEFT OUTER JOIN B ON A.id = B.id

Note that the Oracle JDBC driver does not support {oj } escape sequences.

Does cocoon or BOX have any scope for a translation layer of some sort?

Cheers,
Zulq.

-----Original Message-----
From: jarvisd [mailto:jarvisd]On Behalf Of Dave Jarvis
Sent: 18 November 2001 00:03
To: Jakarta General List
Subject: Re: Business-Oriented XML


Hello, Pete.

> punts on database neutrality and just prays that the SQL between databases
is
> identical. And of course everyone who has worked with SQL knows that this
is
> far from being true.

You got me on this one.  If you write SQL using specific database
extensions (i.e., non-ANSI SQL), then you will be tying yourself to a
particular flavour of database.  This is a very important aspect that,
on a practical level, seriously needs further research.  In the ideal
world, of course, all SQL would port gracefully between database
vendors.  ;-)

> How do you handle different quoting requirements for different databases?
How
> do you handle different databases id generators? How do you handle
difference
> X ?

If you really need to do something different, and you want to abstract
it so that it's all in one place, you can wrap it in a function
(generateNextID):

<var name="nextID" expr="generateNextID( 'table', 'column' )"/>
<sql>
        <insert>INTO TABLE VALUES (?, 'John', 'Smith')</insert>
        <using>
                <value-of expr="$nextID"/>
        </using>
</sql>

I will freely admit this isn't a great way (heck it isn't even a _good_
way); just showing it can be done.

I will also admit that it doesn't have all the necessary bells and
whistles to take into consideration specific implementation differences
across all databases.  But even in Cocoon (and as you said, Turbine),
you can still do your own database-specific SQL which, in turn, lowers
the portability of the system.  No matter what you do, if you give the
programmer full control over the SQL query, they'll always be able cause
system dependencies.

And lastly, I will admit I'm open to ideas on how this could be
implemented in a simple, straightforward fashion.  :-)  Useful pointers
to research is appreciated!

> I still see your project as basically a Generator for cocoon + cut down
> processing engine. I would be surprised if you could reach the performance

Yes.  Simple, and quite focused.  Did I mention small and fast?  ;-)

> level of the Cocoon2 pipeline just because they have had a lot of people
> workin on it.

On a 96MB RAM, 266 MHz machine, 4GB 5400 RPM drive (I think), running
Mandrake Linux 8.1 (in low-security mode; X was not installed), Tomcat
3.2, JDK 1.3, Xalan 2.2 D6 (or so), and Xerces 2.0 beta 2, using a
remote Oracle 8i development server, it sustained a firing of more than
10 hits/sec. on the main page (using a 100MBit intranet). I could use
the site, but it was sluggish.

I tried again, using the same box, with hardware upgrades: 352MB RAM and
400MHz Pentium II.  Under the same load of 10 hits/sec. the sluggishness
disappeared.

Using IBM's 'jikes' to compile, the single supporting JAR file (without
manifest information) is exactly 48651 bytes.  The single servlet that
launches the processing engine is 6865 bytes.  I could use Hashjava to
get it maybe 15% smaller ... but 41300 bytes vs. 48600 bytes is not
worth the effort.

I've tested the architecture against an HTML-based servlet-only site
with the exact same functionality as the BOX code.  The servlets were
faster, but the difference in speed was less than a second.  Keep in
mind the servlets have no extra transformation step -- they output pure
HTML to the browser.

I have no doubts about the performance of the architecture.  Most of the
grunt work was already done for me (by lots of people whose work I
admire and appreciate): loading XML, parsing XML, rendering an XML
document, translating it into XSL, encapsulating HTTP, etc.  The only
layer I add is a simple set of statements that allow people to talk with
a database, file systems, and remote servers.  And I throw in a state
machine for good measure.  The bottleneck isn't BOX.  ;-)

How does Cocoon perform under the same minimal conditions as above?

Sincerely,
Dave Jarvis

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to