I become interested recently in the NoSQL movement, due to an interview with Ryan King and a recent project at work, so, I finally decided to start playing with other than relationals databases. After some searches I choose Sedna XML Database, which is really simple to put in movement and has a good documentation and API support. Then a colleague of mine (gloob) recommended me to use JAXB for the model part of the application, and thus, I found I was developing a simple XML CMS.
The application simulates the workflow of a publishing, where redactors write articles and those articles are published by editors grouped by pages. There is also a simple implementation of an RBAC to control users permissions.
I see some advantages on using this kind of storages:
- XML databases allows to exchange information in its native format (very useful with SOAP and/or RESTful web services), which can save a lot of overhead when you need to make transformations from relationals objects.
- XML storages simplifies the data queries, due to the structured nature of an XML we don’t need to use complex SQL statements with joins.
- Can be easy to mantain, no need to modify tables and columns.
- The business logic layer validation can be reduced when using XML schemas, like RNG or XSD.
- The XML format can be easily transformed to others formats like PDF, HTML or whatever.
- Sedna XML Database, I use version 3.3.55 for this project.
- A Java JDK, at least version 1.6.0_16.
- The Rubik sources, which are hosted on Google Code: http://code.google.com/p/rubikcms/
I also use Eclipse IDE for this project.
Download the shell script installer (It’s easier than the tar.gz) and run it with root privileges. It will ask the folder you want to install Sedna and the place you want to put the commands links. That’s all.
For more information about starting the server and creating databases read the Sedna documentation.
The Rubik application
- Quick start
- The model layer
- The Sedna connection
- Using JAXB: “The glue layer”
- The business layer
This software is licensed under the terms of the GNU General Public License version 3.