IONA Artix: Video Tech Brief
I've been looking at the Java and SOA landscape again (I expect to write more on this) and came across this interview with John Davies of Iona. I'm pointing to this video (link is above this text) not because it's a particularly colourful performance (forgive me Mr. Davies) but because it's worth listening to what he has to say.
This is all about high-volume bank transactions which handle complex data structures (he talks mainly about Swift), exchanged and processed in XML messages. The architectures they are using for this are all based on Java ESB/SEDA platforms, on top of which Iona adds its Artix Data Services to handle metadata management and transformation services.
First, it's notable that they are building on established open-source projects - Iona has a very strong investment in open-source solutions - using Apache ActiveMQ as the basis of their FUSE enterprise messaging product.
That's all very interesting, in an industry-direction sort of a way, but it was something else (technical!) that really caught my eye (or ear): John Davies talked about the database bottleneck for these high-volume transactional systems: the messages being persisted are XML (hierarchical data) and they simply cannot accept the overhead of an ORM layer and mapping these to tables, so they're using a completely different approach, saving them as immutable BLOBs, indexing appropriately. New versions of the same message are simply stored as new objects, the original is not touched. Combine this with a massively parallel service layer and distributed store (he talks about running Gigaspaces on Azul - some 700-odd cores!) and you have a very interesting proposition.
It's in a follow-up comment on the ServerSide page where he expands a little on the problem of efficiently storing immutable, hierarchical objects and points to Subversion as one good way to accomplish this and handle versioning, where performance isn't an issue. But he also mentions ZFS, a new filesystem being developed by OpenSolaris - this offers a transactional, pooled-storage abstraction which is exactly what this sort of architecture needs.
This is fascinating stuff. Reading around this subject it's very clear that a lot of intellectual effort and investment has been poured into solving the problems of building and operating truly scalable ESB and SOA-based solutions and novel, high-performance persistence, and most (all?) of this amazing work has been done with Java, and is open-source.
As I worked my way through web pages and PDFs, I didn't find references to Microsoft's technologies - what, if anything, are they doing in this area?