Sirix - a versioned, treebased storage system
The architecture supports the well known ACID-properties (durability currently isn't guaranted if the transaction crashes) and Snapshot Isolation through MVCC which in turn supports N-reading transactions in parallel to currently 1-write transaction. Supporting N-write transactions is planned as well as the current work on indexes to support a binding to Brackit which in turn supports XQuery/XQuery Update Facility. The COW-approach used for providing Snapshot Isolation through MVCC is especially well suited for flash-disks. We support several well known versioning strategies.
The GUI provides interactive visualizations of the differences between either 2 or more versions of a resource in Sirix. Please have a look into my master-thesis for screenshots.
Some examples of the Java-API are explained in the wiki. Stay tuned for a maven bundle with examples and more elaborate examples.
Sirix will be nothing without interested developers (contributors). Any kind of contribution is highly welcome. Once a few (regular) contributors are found, we will create an organization for Sirix on github.
Maven artifacts are deployed to the OSS nexus repository. Currently the following artifacts are available:
<dependency> <groupId>com.github.johanneslichtenberger.sirix</groupId> <artifactId>sirix-core</artifactId> <version>0.1.0</version> </dependency>
JAX-RX interface (RESTful API):
<dependency> <groupId>com.github.johanneslichtenberger.sirix</groupId> <artifactId>sirix-jax-rx</artifactId> <version>0.1.0</version> </dependency>
Saxon interface (use Saxon to query data):
<dependency> <groupId>com.github.johanneslichtenberger.sirix</groupId> <artifactId>sirix-saxon</artifactId> <version>0.1.0</version> </dependency>
Other modules are currently not available (namely the GUI, the distributed package) due to dependencies to processing.org which isn't available from a maven repository and other dependencies.
Any questions or even consider to contribute or use Sirix? Use https://groups.google.com/d/forum/sirix-users to ask questions. Any kind of question, may it be a API-question or enhancement proposal, questions regarding use-cases are welcome... Don't hesitate to ask questions or make suggestions for improvements. At the moment also API-related suggestions and critics are of utmost importance.
- README: this readme file
- LICENSE: license file
- bundles all available bundles
- pom.xml: Simple pom (yes we do use Maven)
As Sirix is based on Treetank current documentation thus is currently only available from this location.
The framework was presented at various conferences and acted as base for multiple publications and reports:
- A legal and technical perspective on secure cloud Storage; DFN Forum'12: PDF
- A Secure Cloud Gateway based upon XML and Web Services; ECOWS'11, PhD Symposium: PDF
- Treetank, Designing a Versioned XML Storage; XMLPrague'11: PDF
- Rolling Boles, Optimal XML Structure Integrity for Updating Operations; WWW'11, Poster: PDF
- Hecate, Managing Authorization with RESTful XML; WS-REST'11: PDF
- Integrity Assurance for RESTful XML; WISM'10: PDF
- JAX-RX - Unified REST Access to XML Resources; TechReport'10: PDF
- Distributing XML with focus on parallel evaluation; DBISP2P'08: PDF
This work is released in the public domain under the BSD 3-clause license
Sirix is maintained by:
- Johannes Lichtenberger (Sirix Core & Project Lead based on Treetank Core)