We are proud to announce the release of Sausalito version 1.4.4, codename "TwentyninePalms".
This new version improves the robustness of our scalability model for applications deployed in the Cloud.
With TwentyninePalms, we are supporting new Ubuntu versions: 10.10, 11.04, and 11.10.
The CoreSDK and Eclipse Toolkit are available in our download section download section.
This release contains also a couple of bug fixes (see Changelog).
...when we get pumped up about the upcoming XML Prague Conference.
XML Prague is one of the bests event of the year for the XML community and we couldn't be more excited about the 2012 edition.
As part of the Pre-conference Day, we are organizing a half-day session about 28msec.
This is the opportunity for developers to discover our technology through sessions and showcases.
Our agenda will be as below.
XQuery in the Cloud
30 minutes
Your First App in the Cloud
30 minutes
Best Practices
Sky is the Limit
30 minutes
Scalability Model
30 minutes
Case Study
XQuery Application Development (open discussion, 1 hour)
If you are interested to join, please fill out the form:
Last week XML enthusiasts gathered at XML Amsterdam 2011.
28msec was represented with a talk titled Not your Grandma's XQuery.
The aim of this talk was to showcase how we leverage XQuery on all layers of the application stack to build beautiful web apps efficiently.
Traditional application stacks are composed of many components that are a bit clueless on how to talk to each other.
Such a setup has two major problems.
First, you need to be proficient in many technologies (JavaScript, template engines, backend languages, SQL).
Second, you need to spend a lot of time and energy in gluing this different technologies between each other.
A strong symptom of this lack of integration are security failures.
You always need to spend resources on protecting your application from SQL injections or cross-site scripting injections.
At 28msec, we are replacing this complex and expensive application stack by using XQuery on all layers.
For each layer, we leverage a specific feature from XQuery in order to build fully-fledged web applications:
The Data Definition Facility for data management, Full-Text for content management, Scripting for business logic, and even XQuery in the browser.
XQuery in the browser is particularly convenient to invoke XQuery code that lives in the cloud from the client seamlessly.
It also offers a bidirectional communication between JavaScript and XQuery. XQuery can invoke JavaScript code. JavaScript can invoke XQuery code.
Why are we so obsessed with running XQuery everywhere?
It's all about productivity.
Many developers have taken existing Java applications and rebuilt them in XQuery.
They achieved exactly the same functionality but with 5 times less code.
This means that software development in XQuery is up to five times faster, has fewer bugs, and requires less maintenance.
The second part of the talk was focused on an area of web applications where XQuery is not just more productive and robust, but simply vital: reasoning about updates.
In XQuery, updates are first class entities in the language.
They can be composed and processed dynamically.
This notion is essential in the context of distributed systems such as mobile and cloud computing applications.
Mobile applications need to operate in offline mode and synchronize with the cloud efficiently.
Cloud computing applications have different data consistency models.
These need to be handled at the application level.
This can easily be achieved by using a programming language that has a strong integration with the notion of updates.
The interaction between XQuery and the HTML5 local storage was showcased.
The demo was a small todo application where the integration of the offline mode support is completely seamless.
Adding the attribute done to a todo element consists of a single line of code (see figure above).
Behind the scenes, XQuery is updating the todo element in the HTML5 local storage.
It also keeps track of all the updates made while the application was offline.
When going online, updates are aggregated and sent to the cloud for processing.
Potential conflicts are resolved using update operators.
XQuery provides five such operators to work with updates: aggregation, integration, reconciliation, reduction, and inversion.
Last but not least, this dynamic reasoning on updates also enables the XML time machine that was introduced at XML Prague 2010.
John Snelson from Marklogic concluded the day with an amazing keynote.
The high point of the keynote definition was probably the intervention of Dimitri, finding out about XQuery.
28msec is pleased to announce the 1.4.0 release of Sausalito, code name Rancho Cucamonga.
It is available in the 28msec download section.
The major feature of this release is the integration of MongoDB as our storage in the cloud.
Sausalito is automatically mapping XML and JSON data to BSON in order to store it in MongoDB.
Indexes declared using XQuery are also seamlessly mapped to MongoDB indexes.
Sausalito and MongoDB is a great couple.
Sausalito takes care of all the database management and leverages MongoDB to scale out.
Developers don't have to worry about their database setup.
Replication, sharding, backup, and security of the data are taken care of.
Sausalito and MongoDB guarantee per document atomicity.
Developers who wish to update multiple documents in a transactional manner
need to handle it at the application level.
We provide application-level locks, by exposing MongoDB's distributed locks to XQuery.
The API of this new module is available here.
The following code snippet is showing the locking module in action.
The use case is the following.
We would like to confirm orders.
In case of concurrent requests to order a product, we create a lock on each invoice number.
If an invoice number is locked already, we increment the invoice number using invoice:inc-number().
Note to 1.2.12 developers:
Ordered collections are now disabled.
1.2.12 applications that are using ordered collections need to be upgraded.
This release also contains numerous bug fixes (see changelog).
Leveraging XQuery is a productivity boost when developing your application and writing database queries.
The following example compares a MongoDB query object and an XQuery expression.
MongoDB Query Object
XQuery Expression
Happy coding with Sausalito and please feel free to contact us on our community mailing-list (sausalito-users@googlegroups.com).