Note that in a future version of hibernate search - soon I hope, the encoding will no longer be a problem. You will be able to provide a navigation/traversal API that will know how to read things from your blob. It's called free form entity by its friends.
> On 17 févr. 2016, at 12:35, Galder Zamarreño <gal...@redhat.com> wrote: > > I like the idea of pluggable serialization/marshalling, but as you rightly > explained, what flexibility gives you you lose by lack of functionality. E.g. > querying is only available for protostream based encoding. > > So, I think we need to remove the hard bind between functionality and > encoding to be able to have a trully pluggable encoding mechanism. > > Cheers, > -- > Galder Zamarreño > Infinispan, Red Hat > >> On 3 Feb 2016, at 11:38, Gustavo Fernandes <gust...@infinispan.org> wrote: >> >> >> >> On Mon, Jan 25, 2016 at 2:03 PM, Galder Zamarreño <gal...@redhat.com> wrote: >> Hi all, >> >> As I write the Javascript client for Hot Rod, and Vittorio writes the C++ >> client, the question the encoding of the byte arrays has popped up. >> >> The reason why encoding matters is mainly because of compatibility mode. How >> does a Hot Rod client know how it should transform something a REST client >> set? >> >> To be able to answer this question correctly, the Hot Rod client needs to >> know the type of the data. >> >> Although we could consider adding encoding information to the Hot Rod >> protocol long term, in the short term this question might already been >> answered by Protostream. >> >> >> Compatibility between disparate clients should certainly be supported, but >> what about a pluggable marshaller mechanism? Let's consider all usage >> scenarios: >> >> * Only Java clients: in most cases, JBoss marshalling is adequate, no need >> to involve protobuf or json and since JBoss Marshalling is default, no need >> to configure anything. >> >> * Mix of Java and C++/C#/Python clients: the Protobuf encoding works >> wonderfully for that. The client could be configured to use the protostream >> marshaller, the same for the server. >> >> * Mix of Java, C++/C#/Python and REST clients: protobuf with json [1] >> encoding is an interesting option. Same as above, a protostream marshaller >> with json support could >> be configured both on client and server. >> >> * Custom marshallers: consider FlatBuffers [2], for example, an interesting >> new cross-platform serializer that allows to access serialized data without >> de-serializing the whole payload, >> and without generating any transient memory, and it optionally supports >> JSON. It could be interesting to write a marshaller based on it and plug it >> on Infinispan. >> >> Although we have a way of configuring the marshaller on client (via >> RemoteCacheManager) and server (deployable jar), there'd be more work to do >> in order make them really pluggable: >> >> - Some serialization formats like Protobuf and [2] require interface >> description to be available on both client and server. This is not supported >> for all marshallers, just for Protostream >> - Remote query requires some metadata regarding which fields to index and >> how, and this would need to be possible on every language regardless of the >> marshalling. >> Currently, this info can be encoded in the .proto file only, a custom >> marshaller would not work. >> - Currently remote query is settled on protobuf not only for the byte array >> but for the the HotRod query request and response [3] >> >> Is having a pluggable serializer mechanism too far fetched, given the effort >> already invested towards protobuf? >> >> Gustavo >> >> [1] https://developers.google.com/protocol-buffers/docs/proto3#json >> [2] https://google.github.io/flatbuffers/ >> [2] >> https://code.facebook.com/posts/872547912839369/improving-facebook-s-performance-on-android-with-flatbuffers/ >> [3] >> https://github.com/infinispan/infinispan/blob/master/remote-query/remote-query-client/src/main/resources/org/infinispan/query/remote/client/query.proto >> >> >> >> >> _______________________________________________ >> infinispan-dev mailing list >> infinispan-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/infinispan-dev >> >> _______________________________________________ >> infinispan-dev mailing list >> infinispan-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/infinispan-dev > > > _______________________________________________ > infinispan-dev mailing list > infinispan-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/infinispan-dev _______________________________________________ infinispan-dev mailing list infinispan-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/infinispan-dev