XQuery as a general data processing language WAS: [xquery-talk] XQuery and Web 2.0

Jason Hunter jhunter at servlets.com
Fri Apr 25 15:31:37 PDT 2008


Christian Grün wrote:
>>  I think the most important part is to put out there open source XQuery
>> modules that do useful stuff, like an
>>  online store, a CRM app, and/or some fun stuff like some IPhone apps that
>> can be written nicely with XQuery.
> 
> Starting with the example of web applications.. I really miss standard
> modules for web servers (like Apache) to directly support XQuery
> scripts on server side.

Yes, it's very convenient that MarkLogic has the option to run as an 
HTTP server.  It makes writing XQuery modules feel like writing JSP or 
PHP pages, with all the pain and overhead of connecting to a database 
removed because you *live* in the database.  The front XQuery pages are 
like template pages using { $curlies } for substitution and calling on 
back-end XQuery libraries for heavy work.  Using XQuery as a template 
language is especially handy because you can't create malformed html; to 
try is a syntax error.

When app scalability requires it, you can go to a clustered database 
system.  A front layer of servers (still MarkLogic) do language 
execution while a back layer of servers manage the content.  All the 
database access internals are embedded within the language.  We're still 
using one server on MarkMail, but we have customers with hundreds of 
servers so we know we can handle hundreds more user load and content.

With MarkMail we put a Squid caching proxy in front so any time you 
request a page that's been seen recently by someone else we don't have 
to hit the database.  In front of that is an F5 load balancer.  It's an 
architecture that's working pretty well for us.

> the (current) limitations become quite obvious (no
> file access to store site statistics, troublesome handling of binary
> content, ...). This might be partially overcome in future if standard
> libraries are added - and this is probably the only way to convince
> most users that XQuery is not just academic and in fact a
> general-purpose programming language (correct me if I'm wrong..).

We use MarkLogic extensions for these things.  For example, all the 
attachment binaries in MarkMail are held inside the database.  We did 
that because then with private lists the db can handle all visibility 
issues without the XQuery code changing a bit.

-jh-


More information about the talk mailing list