Tuesday, August 28, 2012

MarkLogic - NoSQL for XML

Lately my application designs have included more solutions for in-flight "data durability".  Like durability in ACID, users need their data stored between when they start a process and when they finish it, within an application.  And these data are of course contained in the application domain model object graph.

One of the ideas I have been working on is to swap out the traditional object model and bind my forms to XML with JAXB.  In fact, modeling forms and data captured as XML documents, that are munged or translated and exposed as Java objects when needed, increases flexibility in my designs.  This approach makes it easier to stuff the entire XML blob into a database, and recall it later to re-inflate the objects for the users' sessions.

For this approach to work, I need a way to quickly serialize and deserialize (XStream) my Java objects into XML, and I need a fully functional XML data store (MarkLogic).   I chose MarkLogic over a RDBMS solution because I wanted access to the XML content beyond storing/retrieving XML BLOB/CLOB fields.  Yes, Oracle has XML DB, but I wanted a more schema-less approach that could be offered by NoSQL.

MarkLogic is a great solution for this approach, as it offers the performance needed for document storage and retrieval en masse, coupled with the flexibility to search, read, and modify XML document internals (documents and nodes) with XPath and XQuery.

In future blogs, I will detail my integration to MarkLogic via available Java APIs and usage of the MarkLogic server tools, XPath and XQuery asd well as the MarkLogic XCC API.

No comments:

Post a Comment