At Orange11 we’re very happy to be able to inform you that we’ve recently become an official 10gen MongoDB Service Partner. MongoDB, the leading document-based database solution that allows high-performance and high-scalability data access without many of the limitations imposed by traditional relational database systems.
More on MongoDB
If you haven’t heard of MongoDB yet, then apparently you haven’t been keeping up with the whole NoSQL movement. NoSQL is the term used to label a whole new category of data storage and retrieval solutions that vary widely in their underlying models and offered functionality, but all have in common that they are not based on the relational database paradigm that’s still predominant as the storage solution for enterprise applications. Types of NoSQL databases include key-value stores, column databases, document-oriented databases and graph databases; roughly speaking this list is ordered ascending in terms of the richness of the supported data structures and descending in terms of raw performance and ease of horizontal scalability. In the document-based family of NoSQL solutions, MongoDB has managed to become the nr. 1 solution used by both cutting-edge start-ups as well as big established companies.
That means that MongoDB uses a document that’s part of a collection as the basic unit of storage, instead of a row in a table like with an RDBMS. This document is modeled in BSON, a binary format for representing JSON documents. Documents that you store in any one collection typically share a similar structure, but do not have to conform to an exact schema. That means that it becomes very easy to change or expand the exact contents of your documents. This is a great feature: not only does it enable rapid development in an agile setting, where data model requirements are still fluid, but it also allows working with semi-structured data easily; e.g for storing and querying the results of JSON-based RESTful APIs without having to pre-process your data. Documents can be nested, so you can easily group related data (like an order with its items) in a single document, avoiding the need for what would be a JOIN in a relational database schema.
On the other hand, many tried and proven techniques familiar from the relational database world are offered by MongoDB as well. You can add indices to improve query performance, write operations can be guaranteed to be durable (but don’t have to be), read operations can be fully consistent (but again, don’t have to be if your performance and scalability needs are better served by using eventual consistent reads instead), etc.
Changes to documents can be modeled as atomic unit-of-works and are supported by a find-and-modify style of operations that in many cases prevents the need for techniques like optimistic locking on a whole document level. For more advanced operations you can even write map-reduce jobs that execute directly at the database level.
Working with MongoDB
MongoDB can run on Unix, OS X and Windows. It’s developed as an open source project, which has led to a lot of support for it in many different languages and frameworks. 10gen provides drivers for the major programming languages like Java, but you can find community supported drivers for many more languages. These drivers allow for programming directly to the MongoDB API where JSON-like constructs are mapped to the natively supported data types of your language. If you prefer something more high-level, for example to map Java objects to documents, there are various projects and frameworks providing support for that as well.
If you are a regular reader of this blog, you might be familiar with the Axon CQRS framework that’s developed by Orange11. As part of the work that’s underway for Axon 2.0, MongoDB support is added directly to the framework. This means you will be able to use MongoDB as an event and saga store, and that events can be serialized directly to BSON instead of to XML using XStream to achieve the best possible performance. This work is almost complete: for more details, you can visit these blog entries:
Using the Spring data project and the MongoDB adapter specifically
A MongoDB based Axon framework event store
About the partnership
As a Service Partner, Orange11 provides various services around MongoDB. As a full service solution provider we can make MongoDB is a part of the custom applications we create for organizations through integration with the data access layer, but we can also advice you about the deployment topology to use for your MongoDB servers to ensure high availability and scalability that meets your data demands. Being an official 10gen partner we have direct access to the people developing and supporting the product, thereby providing our customers with the safety of knowing that they’re not only benefiting from Orange11’s expertise but that they’re backed by support straight from the source whenever necessary.
Finally, 10gen is a silver sponsor of this week’s GOTO Amsterdam conference (co-produced by Orange11) and Alvin Richards, Senior Technical Director for 10gen/MongoDB in Europe will be a speaker on Thursday’s program. We have a joint booth at the event, so make sure to drop by if you’re attending to find out more about MongoDB and how Orange11 can help you to get the best results with this innovative new technology!
We are excited about this partnership and look forward to sharing our insights within the community and our customers. Just contact us if you want to know more or take a look at our website.
P.S. Check out the recently created MongoDB User Group for the Netherlands and join us to find out more.