How  XQuery and AtomPub Are About To Change Your World
Speaker: Kurt Cagle <ul><li>Online Editor, O’Reilly Media, xml.com </li></ul><ul><ul><li>[email_address] </li></ul></ul><u...
Overview <ul><li>The Rise of RESTful Services </li></ul><ul><li>Exploring Xquery </li></ul><ul><li>The Prescription of XRX...
The Web is not built around process. Rather, the Web should be seen as a database predicated not on the notion of absolute...
Defining Resource <ul><li>A  resource  is a  thing  that: </li></ul><ul><li>is  unique  (i.e., can be identified uniquely)...
Exploring Resources Resources: Not Resources*: <ul><li>Web Site </li></ul><ul><li>Resume </li></ul><ul><li>Aircraft </li><...
Representations A  representation  is a description of a resource that is used for some computational purpose.   Represent...
A Presentation of Representations Rendered Graphics Bitmap Images Jane Doe, Engineer (resource)‏ Jane Doe is an employee w...
Representational State Transfer <ul><li>A representation shows a reflection of the state of a given resource in a given fo...
REST is .... <ul><li>Re presentational  S tate  T ransfer </li></ul><ul><li>Resource based, rather than service based </li...
The Importance of Collections <ul><li>Collections are more important to REST than may be obvious: </li></ul><ul><li>A coll...
Identifying  RESTful  Services <ul><li>Use URIs to differentiate between representations </li></ul><ul><li>Expose only pub...
Sample RESTful Services (Atom)‏ <ul><li>Get a listing of employees as Atom feed: </li></ul><ul><ul><li>http://www.myserver...
REST and Databases In essence, a RESTful approach uses a similar metaphor to the CRUD (Create, Read, Update, Delete) metho...
If the web is becoming a database, then XQuery will very likely end up becoming its global query language.  Developed as p...
Data Abstraction 1990 In the late 1980s and early 1990s, the database market coalesced around a new standard called the St...
Data Abstraction 2000 <ul><li>By 2000, most databases used SQL, but SQL didn’t handle three areas well: </li></ul><ul><ul>...
Data Abstraction 2010 <ul><li>XQuery will serve to abstract the underlying data repository, regardless of whether that dat...
Components of XQuery 1.0 <ul><li>The core language is intended as a shell around XPath 2.0, and as such, should be seen as...
XQuery’s FLOWR <ul><li>FLOWR provides analogs to SQL query notation: </li></ul>SQL XQuery SELECT a FROM b F or $a in $b SE...
<employee id=&quot;be129&quot;> <firstname>Jane</firstname> <lastname>Doe</lastname> <title>Engineer</title> <division>Mat...
let $employees := collection(&quot;/db/assets/employees&quot;)‏ let $mat_employees := for $employee in $employees  where $...
 
XQuery Modulization <ul><li>XQuery Modules are “next generation” stored procedures </li></ul><ul><li>Modules make librarie...
(: Module emp.xq :)‏ module namespace emp = &quot;http://www.myco.com/xmlns/emp&quot;; declare function emp:division-emplo...
(: Module emp.xq :)‏ import module namespace emp=&quot;http://www.myco.com/xmlns/emp&quot; at &quot;emp.xq&quot;; let $emp...
Extension Modules for eXist <ul><li>Request </li></ul><ul><li>Response </li></ul><ul><li>Session </li></ul><ul><li>Util </...
XQuery Server Language <ul><li>Many XQuery implementations support using the language as a servlet, with considerable bene...
If you can abstract your data on the back end, shift towards a RESTful representation of that data through the server, the...
XQuery and AtomPub <ul><li>AtomPub  – using Atom syndication and RESTful interfaces as a way of publishing documents (of a...
XQuery and AtomPub (II)‏ <ul><li>On the other hand, different Atom services can filter or transform content in different w...
Typical AtomPub Pipeline Source Feed Sort Filter Query Filter Paging Filter Transform Filter Output URL Parameters
XRX <ul><li>XRX –  X query/ R EST/ X Forms </li></ul><ul><li>XForms , can be used to create either a read-only or read-wri...
XRX and AtomPub Projects <ul><li>XRX -  http://code.google.com/p/xrx/ </li></ul><ul><li>X2O –  http://code.google.com/p/x2...
XForms Engines <ul><li>Orbeon  – Server Based + AJAX, supports Xforms 1.1 + extensions </li></ul><ul><li>Chiba  – Server B...
REST (or Resource) Oriented Architectures represent a significant shift in the web services model, though one that is not ...
REST vs. SOA REST SOA <ul><li>Resources (noun) oriented </li></ul><ul><li>HTTP Transport </li></ul><ul><li>Uses XML or JSO...
ROA As SOA Complement <ul><li>RESTful services work far better for the creation, manipulation, and workflow management of ...
Upcoming Xquery Standards <ul><li>XQuery Update Facility (XUF)‏ </li></ul><ul><ul><li>Provides syntax to alter “inline” XM...
Conclusion <ul><li>While not yet mature, RESTful Web Services look to be a solid growth area for some time, especially wit...
 
The market for XQuery Engines and XML Databases has  exploded in the last couple of years, but there are a few that are be...
eXist XML Database <ul><li>Open Source Software, Java Based </li></ul><ul><li>Best tool for experimenting with XQuery and ...
MarkLogic XML Server <ul><li>Proprietary Software, Written in C++ </li></ul><ul><li>The Cadillac of XML Databases (both in...
IBM DB2 9 pureXML Database <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Combines XQuery and SQL Support in sa...
DataDirect XQuery <ul><li>Proprietary Software, Java Based </li></ul><ul><li>DD is not a database per se, but rather a gat...
Oracle XML DB <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Integrated XQuery and SQL Support in same interfac...
Microsoft SQL Server <ul><li>Proprietary Software, .NET Based </li></ul><ul><li>SQL Server 2008 does not support all of XQ...
TigerLogic Dynamic Data Hub <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Midrange solution, mixed XML and SQL...
 
Upcoming SlideShare
Loading in …5
×

RESTful Services

2,473 views

Published on

This talk was given at the Balisage XML Markup Conference in August 2008, focusing on the development and deployment of RESTful services.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,473
On SlideShare
0
From Embeds
0
Number of Embeds
125
Actions
Shares
0
Downloads
113
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

RESTful Services

  1. 1. How XQuery and AtomPub Are About To Change Your World
  2. 2. Speaker: Kurt Cagle <ul><li>Online Editor, O’Reilly Media, xml.com </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>Web Services, XML Data and Presentation, Publishing, Vertical Integration </li></ul></ul><ul><li>Architect, Metaphorical Web </li></ul>
  3. 3. Overview <ul><li>The Rise of RESTful Services </li></ul><ul><li>Exploring Xquery </li></ul><ul><li>The Prescription of XRX </li></ul><ul><li>The ROI on ROA </li></ul>
  4. 4. The Web is not built around process. Rather, the Web should be seen as a database predicated not on the notion of absolute data but instead upon the idea that behind every address is a multifaceted thing, one that, like the shadows upon Plato’s cave, never reveals itself in toto but instead only give hints about its true shape to those who are patient. That is what the RESTFUL web is all about.
  5. 5. Defining Resource <ul><li>A resource is a thing that: </li></ul><ul><li>is unique (i.e., can be identified uniquely), </li></ul><ul><li>has at least one representation , </li></ul><ul><li>has one or more attributes beyond ID, </li></ul><ul><li>has a potential schema , or definition, </li></ul><ul><li>can provide context , and </li></ul><ul><li>is reachable within the addressable universe, </li></ul>
  6. 6. Exploring Resources Resources: Not Resources*: <ul><li>Web Site </li></ul><ul><li>Resume </li></ul><ul><li>Aircraft </li></ul><ul><li>Airframe Specification </li></ul><ul><li>Airline Route </li></ul><ul><li>A Song </li></ul><ul><li>A Transaction </li></ul><ul><li>An Employee </li></ul><ul><li>An Application </li></ul><ul><li>Mailing Address </li></ul><ul><li>$32.76 </li></ul><ul><li>A Gallon of Gasoline </li></ul><ul><li>June 25, 1963 </li></ul><ul><li>Love </li></ul><ul><li>* Note: Even these COULD be resources in the right context, but you have to stretch some to find it. </li></ul>
  7. 7. Representations A representation is a description of a resource that is used for some computational purpose. Representations can be thought of as models of the resource in question, and as is the case with any modeling, a given resource may have any number of distinct representations.
  8. 8. A Presentation of Representations Rendered Graphics Bitmap Images Jane Doe, Engineer (resource)‏ Jane Doe is an employee who works at ACME Widget Works as a Senior Design Engineer. He’s been here nce 1995 .... Text Description Video Audio <employee> <firstname> Jane </firstname> <lastname> Doe </lastname> <title> Engineer </title> XML Print Formatted (PDF)‏
  9. 9. Representational State Transfer <ul><li>A representation shows a reflection of the state of a given resource in a given form </li></ul><ul><li>This “representational state” collapses to the resource description itself when the resource is static, but will change if the resource itself changes. </li></ul><ul><li>The transfer of this representation state between nodes in the network is the fundamental operation of the web. </li></ul>
  10. 10. REST is .... <ul><li>Re presentational S tate T ransfer </li></ul><ul><li>Resource based, rather than service based </li></ul><ul><li>Publishing oriented verbs: </li></ul><ul><ul><li>GET things from an address </li></ul></ul><ul><ul><li>PUT things back to an address </li></ul></ul><ul><ul><li>POST things to a collection (more on this soon...)‏ </li></ul></ul><ul><ul><li>DELETE things at an address </li></ul></ul><ul><li>The way that the web itself is built </li></ul>
  11. 11. The Importance of Collections <ul><li>Collections are more important to REST than may be obvious: </li></ul><ul><li>A collection is a set of related resources. </li></ul><ul><li>A collection is also a resource – it has an address, has one or more representations, is discrete and so forth. </li></ul><ul><li>Files in a folder may be a collection, but collections are more inclusive, and can include database records, devices and so forth. </li></ul>
  12. 12. Identifying RESTful Services <ul><li>Use URIs to differentiate between representations </li></ul><ul><li>Expose only publishing verbs </li></ul><ul><li>Provide access to binary content, XML instances and collections. </li></ul><ul><li>Use query parameters to filter items from a collection. </li></ul><ul><li>Representations may be data, presentation, state or all three. </li></ul>
  13. 13. Sample RESTful Services (Atom)‏ <ul><li>Get a listing of employees as Atom feed: </li></ul><ul><ul><li>http://www.myserver.com/atom/feed/employees (GET)‏ </li></ul></ul><ul><li>Get a single employee’s XML record: </li></ul><ul><ul><li>/atom/content/employees?/jane_doe (GET)‏ </li></ul></ul><ul><li>Add a new employee to a collection </li></ul><ul><ul><li>/atom/feed/employees (POST)‏ </li></ul></ul><ul><li>Get a picture of an employee </li></ul><ul><ul><li>/atom/image/employees?/jane_doe (GET)‏ </li></ul></ul><ul><li>Update an employee’s record: </li></ul><ul><ul><li>/atom/feed/employees?/jane_doe (PUT)‏ </li></ul></ul><ul><li>Delete an employee: </li></ul><ul><ul><li>/atom/feed/employees?/jane_doe (DELETE)‏ </li></ul></ul>
  14. 14. REST and Databases In essence, a RESTful approach uses a similar metaphor to the CRUD (Create, Read, Update, Delete) methods that a database uses, in the form (Post, Get, Put, Delete). Because of this, one way of summarizing RESTful services is that it is a way to treat the Web as a database.
  15. 15. If the web is becoming a database, then XQuery will very likely end up becoming its global query language. Developed as part of the W3C core services, XQuery uses XML as an abstraction layer for working with data repositories, though neither the source nor the output of such a query needs in fact to be XML itself. As such, XQuery would be the next stage of data abstraction.
  16. 16. Data Abstraction 1990 In the late 1980s and early 1990s, the database market coalesced around a new standard called the Structured Query Language, better known as SQL. SQL used set theory and tables with relational keys in order to construct complex queries. SQL focused on querying and data system updates, rather than serialization.
  17. 17. Data Abstraction 2000 <ul><li>By 2000, most databases used SQL, but SQL didn’t handle three areas well: </li></ul><ul><ul><li>Creating hierarchical output, typical of XML, </li></ul></ul><ul><ul><li>Handling extensions in a consistent fashion, </li></ul></ul><ul><ul><li>Working with multiple data repositories </li></ul></ul><ul><li>Similarly, XPath was used for XML queries, but wasn’t even remotely supported in traditional databases. </li></ul>
  18. 18. Data Abstraction 2010 <ul><li>XQuery will serve to abstract the underlying data repository, regardless of whether that data is a file, in a relational database, in a news feed or in an XML database. </li></ul><ul><li>XQuery may augment or even replace traditional server languages such as PHP, Ruby, JSP or ASP.NET. </li></ul>
  19. 19. Components of XQuery 1.0 <ul><li>The core language is intended as a shell around XPath 2.0, and as such, should be seen as a language for SET manipulation. </li></ul><ul><li>The language supports the XPath 2.0 functions and operators, as well as custom defined functions </li></ul><ul><li>XQuery also provides a modularization component for extending XQuery with user functions. </li></ul><ul><li>XQuery is schema aware. </li></ul>
  20. 20. XQuery’s FLOWR <ul><li>FLOWR provides analogs to SQL query notation: </li></ul>SQL XQuery SELECT a FROM b F or $a in $b SET a = b L et $a := $b ORDER BY O rder by WHERE W here {result of set} R eturn
  21. 21. <employee id=&quot;be129&quot;> <firstname>Jane</firstname> <lastname>Doe</lastname> <title>Engineer</title> <division>Materials</division> <building>327</building> <room>19</room> <supervisor>be131</supervisor> </employee> <employee id=&quot;be130&quot;> <firstname>William</firstname> <lastname>Defoe</lastname> <title>Accountant</title> <division>AcctsPayable</division> ... <building>326</building> <room>14a</room> </employee> <employee id=&quot;be131&quot;> <firstname>Jack</firstname> <lastname>Dee</lastname> <title>Manager</title> <division>Materials</division> <building>327</building> <room>21</room> </employee> <!-- more employees -->
  22. 22. let $employees := collection(&quot;/db/assets/employees&quot;)‏ let $mat_employees := for $employee in $employees where $employee/division = &quot;Materials&quot; order by $employee/lastname ascending return $employee return <html> <head> <title>Materials Employees</title> <style type= &quot;text/css“>@import url(&quot;style.css&quot;);</style> </head> <body> <h1>Materials Employees</h1> <table border=&quot;1&quot;> <tr> <th>Name</th> <th>Title</th> <th>Location</th> </tr> {for $emp in $mat_employees return <tr class=&quot;{ if (index-of($mat_employees,$emp) mod 2 = 0) then 'even' else 'odd' }&quot;> <td>{concat($emp/firstname,&quot; &quot;,$emp/lastname)}</td> <td>{string($emp/title)}</td> <td>Building {string($emp/building)}, Room {string($emp/room)}</td> </tr> } </table> </body> </html>
  23. 24. XQuery Modulization <ul><li>XQuery Modules are “next generation” stored procedures </li></ul><ul><li>Modules make libraries possible </li></ul><ul><li>Modules use namespaces to differentiate functions </li></ul><ul><li>Modules can be defined within XQuery, or can be defined by host environment </li></ul><ul><li>Modules permit OOP-like programming </li></ul><ul><li>Most XQuery engines use modules to differentiate offerings </li></ul>
  24. 25. (: Module emp.xq :)‏ module namespace emp = &quot;http://www.myco.com/xmlns/emp&quot;; declare function emp:division-employees($employees as element()*,$div-name as xs:string){ for $employee in $employees where $employee/division = $div-name order by $employee/lastname ascending return $employee }; declare function emp:employee-table($employees as element()*,$div-name as xs:string){ <h:html xmlns:h=&quot;http://www.w3.org/1999/xhtml&quot;> <h:head> <h:title>{$div-name} Employees</h:title> <h:style type=&quot;text/css&quot;><![CDATA[ ... Style inf .... ]]></h:style> </h:head> <h:body> <h:h1>{$div-name} Employees</h:h1> <h:table> <h:tr> <h:th>Employee Name</h:th> <h:th>Employee Title</h:th> <h:th>Location</h:th> </h:tr> {for $emp in $employees return … as previous … } </h:table> </h:body> </h:html> };
  25. 26. (: Module emp.xq :)‏ import module namespace emp=&quot;http://www.myco.com/xmlns/emp&quot; at &quot;emp.xq&quot;; let $employees := collection(“/db/assets/employees“)‏ let $division := &quot;Materials&quot; let $div_employees := emp:division-employees($employees,$division)‏ let $output := emp:employee-table($div_employees,$division)‏ return $output
  26. 27. Extension Modules for eXist <ul><li>Request </li></ul><ul><li>Response </li></ul><ul><li>Session </li></ul><ul><li>Util </li></ul><ul><li>xmldb </li></ul><ul><li>Text </li></ul><ul><li>Ngram </li></ul><ul><li>Validation </li></ul><ul><li>Transform </li></ul><ul><li>System </li></ul><ul><li>Compression </li></ul><ul><li>Date </li></ul><ul><li>HTTP </li></ul><ul><li>Image </li></ul><ul><li>Mail </li></ul><ul><li>Math </li></ul><ul><li>Scheduler </li></ul><ul><li>Spatial </li></ul><ul><li>SQL </li></ul><ul><li>XML Differencing </li></ul><ul><li>XSL-FO </li></ul>
  27. 28. XQuery Server Language <ul><li>Many XQuery implementations support using the language as a servlet, with considerable benefits: </li></ul><ul><ul><li>Servlet content – request parameters, uploaded files, server and client information – is available within queries </li></ul></ul><ul><ul><li>No need for plumbing – you’re in the XML context </li></ul></ul><ul><ul><li>Extension modules make it possible to access specialized server-specific functions (such as geospatial routines)‏ </li></ul></ul><ul><ul><li>SQL extensions make using SQL in XQuery feasible </li></ul></ul><ul><ul><li>XQuery can consolidate multiple data streams </li></ul></ul>
  28. 29. If you can abstract your data on the back end, shift towards a RESTful representation of that data through the server, then provide a compelling mechanism for displaying and editing that data, you will collapse most contemporary multi-tiered application architectures. That is the promise of XRX . The Prescription of XRX
  29. 30. XQuery and AtomPub <ul><li>AtomPub – using Atom syndication and RESTful interfaces as a way of publishing documents (of any type) – can be implemented easily in XQuery. </li></ul><ul><li>URLS (and HTTP methods) can be associated to specific XQuery scripts. </li></ul><ul><li>Collections can be generated as Atom feeds, complete with categorization and link information. </li></ul><ul><li>Atom entries can be used to publish or retrieve data content and to provide publishing info (author, pubdate, etc.) so content doesn’t have to. </li></ul>
  30. 31. XQuery and AtomPub (II)‏ <ul><li>On the other hand, different Atom services can filter or transform content in different ways, say for output as HTML, as JSON, or as “raw” XML. </li></ul><ul><li>AtomPub provides a paging interface for supporting retrieving blocks of content at a time </li></ul><ul><li>Finally, and perhaps most importantly, queries can be stored (perhaps as Atom entries themselves) and invoked to retrieve parametric (searchable) content. </li></ul>
  31. 32. Typical AtomPub Pipeline Source Feed Sort Filter Query Filter Paging Filter Transform Filter Output URL Parameters
  32. 33. XRX <ul><li>XRX – X query/ R EST/ X Forms </li></ul><ul><li>XForms , can be used to create either a read-only or read-write visual interface for the modification of XML. </li></ul><ul><li>REST via AtomPub can be used consequently to retrieve XML content that’s been published, or to post or put XML content to the server as appropriate. </li></ul><ul><li>XQuery handles integration & abstraction with data stores. </li></ul><ul><li>XQuery/REST(AtomPub)/XForms should be seen as a major emerging design pattern for the web. </li></ul>
  33. 34. XRX and AtomPub Projects <ul><li>XRX - http://code.google.com/p/xrx/ </li></ul><ul><li>X2O – http://code.google.com/p/x2o/ (coming soon)‏ </li></ul><ul><li>Atom Server ( http://atomserver.org )‏ </li></ul><ul><li>Apache AtomPub Mod ( http://code.google.com/p/mod-atom/ )‏ </li></ul>
  34. 35. XForms Engines <ul><li>Orbeon – Server Based + AJAX, supports Xforms 1.1 + extensions </li></ul><ul><li>Chiba – Server Based + AJAX, supports Xforms 1.0 </li></ul><ul><li>Firefox Xforms Addon – Client based, Supports Xforms 1.0 + some Xforms 1.1, beta </li></ul><ul><li>Picoforms – Mobile phone and IE client </li></ul><ul><li>Xport Forms Player – IE based ActiveX (recently open sourced)‏ </li></ul><ul><li>Ubiquity – OSS, AJAX (YUI, Dojo,Scriptaculous) – IBM + WebBackPlane (Mark Birbeck) – Xforms 1.1 (Alpha)‏ </li></ul>
  35. 36. REST (or Resource) Oriented Architectures represent a significant shift in the web services model, though one that is not necessarily adversarial to the more familiar SOA model (indeed, it complements the model in places where SOA is weakest). This suggests that the return on investment on an ROA application should be relatively high, especially as the back-end Xquery engine market matures.
  36. 37. REST vs. SOA REST SOA <ul><li>Resources (noun) oriented </li></ul><ul><li>HTTP Transport </li></ul><ul><li>Uses XML or JSON protocols with XML-centric tools </li></ul><ul><li>Publish/Syndicate Pattern </li></ul><ul><li>Discovery via Services document (or WADL)‏ </li></ul><ul><li>Works best with W3C Stack </li></ul><ul><li>Best for Computer/Human Interaction </li></ul><ul><li>Services (verb) oriented </li></ul><ul><li>HTTP, SOAP, SMTP </li></ul><ul><li>Marshalls between XML instances and binary objects </li></ul><ul><li>Remote Procedure Call </li></ul><ul><li>Discovery via WSDL and UDDI </li></ul><ul><li>Works best with WS-* Stack </li></ul><ul><li>Best for Computer/Computer Interaction </li></ul>
  37. 38. ROA As SOA Complement <ul><li>RESTful services work far better for the creation, manipulation, and workflow management of resources than SOA – the human side of web services. </li></ul><ul><li>ROA/syndication works well with SOA queues, such that processing of “data-documents” can be handled asynchronously to the publish model </li></ul><ul><li>ROA focuses on publishing, which makes it considerably less appropriate for transactional processing (an SOA strength). </li></ul>
  38. 39. Upcoming Xquery Standards <ul><li>XQuery Update Facility (XUF)‏ </li></ul><ul><ul><li>Provides syntax to alter “inline” XML content </li></ul></ul><ul><ul><li>Provides a standard way to save content to a data store </li></ul></ul><ul><ul><li>Expected to be fully standardized in 2008 </li></ul></ul><ul><li>XQuery Scripting Language </li></ul><ul><ul><li>Adds additional keyword primitives and operators to utilize XQuery as a stand-alone scripting language </li></ul></ul><ul><ul><li>Includes while conditional loops, variables by references and similar constructs </li></ul></ul><ul><ul><li>Expected to be fully standardized in 2009 </li></ul></ul>
  39. 40. Conclusion <ul><li>While not yet mature, RESTful Web Services look to be a solid growth area for some time, especially within the next four years. </li></ul><ul><li>ROA simplifies the development and deployment of user interfaces, makes data (and data editing) available from a wide variety of devices and applications, and is better suited for interacting with data on the web. </li></ul><ul><li>The core pieces of ROA strategies are at or near a workable maturity. </li></ul><ul><li>ROA works well with data as a document strategies. </li></ul>
  40. 42. The market for XQuery Engines and XML Databases has exploded in the last couple of years, but there are a few that are becoming dominant in the marketplace
  41. 43. eXist XML Database <ul><li>Open Source Software, Java Based </li></ul><ul><li>Best tool for experimenting with XQuery and XML databases </li></ul><ul><li>Most recent version supports XQuery 1.0,XUF and AtomPub, along with WebDAV, REST, XML-RPC and SOAP </li></ul><ul><li>Extensive extension library </li></ul><ul><li>Supports SQL layer and web servlets </li></ul><ul><li>Provides XQJ Interfaces </li></ul><ul><li>Support for XML Indexing </li></ul>
  42. 44. MarkLogic XML Server <ul><li>Proprietary Software, Written in C++ </li></ul><ul><li>The Cadillac of XML Databases (both in quality and price), multi-terabyte scaling </li></ul><ul><li>Most recent version supports XQuery 1.0, XUF, and AtomPub </li></ul><ul><li>Lacks native XSLT support </li></ul><ul><li>Extensive extension module library </li></ul><ul><li>Support for XML Indexing </li></ul><ul><li>Supports extensive conversion capabilities with MS formats and PDF, pipelines, web servlets, triggers, extensive text search capabilities </li></ul>
  43. 45. IBM DB2 9 pureXML Database <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Combines XQuery and SQL Support in same interfaces. </li></ul><ul><li>Most recent version supports XQuery 1.0 and XUF, AtomPub support soon </li></ul><ul><li>Supports SQL layer but not web servlets </li></ul><ul><li>Support for XML Indexing </li></ul><ul><li>Provides XQJ Interfaces </li></ul><ul><li>Good for working with IBM DB2 systems and fair at working with other relational db systems. </li></ul>
  44. 46. DataDirect XQuery <ul><li>Proprietary Software, Java Based </li></ul><ul><li>DD is not a database per se, but rather a gateway for performing XQuery manipulations upon other data stores/targets. </li></ul><ul><li>Less optimized for any given data-type, DD’s strength is in working with multiple data repositories. </li></ul><ul><li>Support for XQuery + SQL, RESTful interfaces, SOAP, XML-RPC </li></ul><ul><li>Good solution if integration rather than performance is key. </li></ul>
  45. 47. Oracle XML DB <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Integrated XQuery and SQL Support in same interfaces. </li></ul><ul><li>Most recent version supports XQuery 1.0, but internal update facilities </li></ul><ul><li>Supports SQL layer but not web servlets </li></ul><ul><li>Provides XQJ Interfaces </li></ul><ul><li>Support for XML Indexing </li></ul><ul><li>Based on SleepyCat Berkeley XML Server </li></ul>
  46. 48. Microsoft SQL Server <ul><li>Proprietary Software, .NET Based </li></ul><ul><li>SQL Server 2008 does not support all of XQuery, instead providing a limited subset using an older syntax, calling it an XQuery-based language. </li></ul><ul><li>Microsoft’s XML database support here is also non-indexed base, and as such is based upon XML documents stored as BLOB nodes. </li></ul>
  47. 49. TigerLogic Dynamic Data Hub <ul><li>Proprietary Software, C++ Based </li></ul><ul><li>Midrange solution, mixed XML and SQL Capabilities </li></ul><ul><li>Most recent version supports XQuery 1.0 and XUF, AtomPub support unknown </li></ul><ul><li>Supports SQL layer and servlet support </li></ul><ul><li>Provides XQJ Interfaces </li></ul><ul><li>Author has not reviewed TigerLogic products yet. </li></ul>

×