Reporting on Message Formats like XML, Avro, Thrift or PB
ReportsAnywhere has implemented XML for this purpose. However XML is inefficient when big data volumes need to be transferred.
Performance and maturity have been evaluated by Danial Keshanihas in his blog.
Both are usable from my point of view. I lean towards Avro, because it transfers schema information, which allows reportsanywhere to validate the data against the fields used in its reports.
The major weekness I have found in both approaches is that they fall short of XML and Java serialisation. You cannot transfer shared resources (references). E.g. a person may appear both as a member of a department and as a teacher of a specific class. It is not possible to transfer this information using standard techniques. What is lacking is a concept of identity, that allows you to refer to a part of the message from another place.
Another problem is the maximum size for a message. E.g. PB seems to have an upper bound which is only at 64M. (Not much for a large report)
Other people have thought about using the message schemas as database schemas for No-Sql databases. The lack of references is a major hindrance for creating a query language.