Hi Igniters! I'd like to continue developing and discussing about compression in Ignite.
Vladimir, could you propose a design of compression feature in Ignite, that suits you? 2017-06-15 16:13 GMT+03:00 Vyacheslav Daradur <daradu...@gmail.com>: > Hi Igniters. > > Vladimir, I want to propose another design of an implementation of the > per-field compression. > > 1) We will add new step in the method prepareForCache (for example) of > CacheObject, or in GridCacheMapEntry. > > At the step, after marshalling of an object, we will compress fields of > the object which described in advance. > User will describe class fields which he wants to compess in an another > entity like Metadata. > > For compression, we will introduce another entity, for example > CompressionProcessor, which will work with bytes array (marshalled object). > The entity will read bytes array of described fields, compress it and > rewrite binary representation of the whole object. > After processing the object will be put in the cache. > > In this case design not to relate to binary infrastructure. > But there is big overhead to heap-memory for the buffer. > > 2) Another solution is to compress bytes array of whole object on copying > to off-heap. > But, in this case I don't understand yet, how to provide support of > querying and indexing. > > > 2017-06-09 11:21 GMT+03:00 Sergey Kozlov <skoz...@gridgain.com>: > >> Hi >> >> * "Per-field compression" is applicable for huge BLOB fields and will >> impose the restrictions like unable ot index such fields, slower getting >> data, potential OOM issues if compression ration is too high. >> But for some cases it makes sense >> >> On Fri, Jun 9, 2017 at 11:11 AM, Антон Чураев <churaev...@gmail.com> >> wrote: >> >> > Seems that Dmitry is referring to transparent data encryption. It is >> used >> > throughout the whale database industry. >> > >> > 2017-06-09 10:50 GMT+03:00 Vladimir Ozerov <voze...@gridgain.com>: >> > >> > > Dima, >> > > >> > > Encryption of certain fields is as bad as compression. First, it is a >> > huge >> > > change, which makes already complex binary protocol even more complex. >> > > Second, it have to be ported to CPP, .NET platforms, as well as to >> JDBC >> > and >> > > ODBC. >> > > Last, but the most important - this is not our headache to encrypt >> > > sensitive data. This is user responsibility. Nobody in a sane mind >> will >> > > store passwords in plain form. Instead, user should encrypt it on his >> > own, >> > > choosing proper encryption parameters - algorithms, key lengths, >> salts, >> > > etc.. How are you going to expose this in API or configuration? >> > > >> > > We should not implement data encryption on binary level, this is out >> of >> > > question. Encryption should be implemented on application level (user >> > > efforts), transport layer (SSL - we already have it), and possibly on >> > > disk-level (there are tools for this already). >> > > >> > > >> > > On Fri, Jun 9, 2017 at 9:06 AM, Vyacheslav Daradur < >> daradu...@gmail.com> >> > > wrote: >> > > >> > > > >> which is much less useful. >> > > > I note, in some cases there is profit more than twice per size of an >> > > > object. >> > > > >> > > > >> Would it be possible to change your implementation to handle the >> > > > encryption instead? >> > > > Yes, of cource, there's not much difference between compression and >> > > > encryption, including in my implementation of per-field-compression. >> > > > >> > > > 2017-06-09 8:55 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org >> >: >> > > > >> > > > > Vyacheslav, >> > > > > >> > > > > When this feature started out as data compression in Ignite, it >> > sounded >> > > > > very useful. Now it is unfolding as a per-field compression, >> which is >> > > > much >> > > > > less useful. In fact, it is questionable whether it is useful at >> all. >> > > The >> > > > > fact that this feature is implemented does not make it mandatory >> for >> > > the >> > > > > community to accept it. >> > > > > >> > > > > However, as I mentioned before, per-field encryption is very >> useful, >> > as >> > > > it >> > > > > would allow users automatically encrypt certain sensitive fields, >> > like >> > > > > passwords, credit card numbers, etc. There is not much conceptual >> > > > > difference between compressing a field vs encrypting a field. >> Would >> > it >> > > be >> > > > > possible to change your implementation to handle the encryption >> > > instead? >> > > > > >> > > > > D. >> > > > > >> > > > > On Thu, Jun 8, 2017 at 10:42 PM, Vyacheslav Daradur < >> > > daradu...@gmail.com >> > > > > >> > > > > wrote: >> > > > > >> > > > > > Guys, I want to be clear: >> > > > > > * "Per-field compression" design is the result of a research of >> the >> > > > > binary >> > > > > > infrastructure of Ignite and some other its places (querying, >> > > indexing, >> > > > > > etc.) >> > > > > > * Full-compression of object will be more effective, but in this >> > case >> > > > > there >> > > > > > is no capability with querying and indexing (or there is large >> > > overhead >> > > > > by >> > > > > > way of decompressing of full object (or caches pages) on demand) >> > > > > > * "Per-field compression" is a one of ways to implement the >> > > compression >> > > > > > feature >> > > > > > >> > > > > > I'm new to Ignite also I can be mistaken in some things. >> > > > > > Last 3-4 month I've tryed to start dicussion about a design, but >> > > nobody >> > > > > > answers nothing (except Dmitry and Valentin who was interested >> how >> > it >> > > > > > works). >> > > > > > But I understand that this is community and nobody is obliged to >> > > > anybody. >> > > > > > >> > > > > > There are strong Ignite experts. >> > > > > > If they can help me and community with a design of the >> compression >> > > > > feature >> > > > > > it will be great. >> > > > > > At the moment I have a desire and time to be engaged in >> development >> > > of >> > > > > > compression feature in Ignite. >> > > > > > Let's use this opportunity :) >> > > > > > >> > > > > > 2017-06-09 5:36 GMT+03:00 Dmitriy Setrakyan < >> dsetrak...@apache.org >> > >: >> > > > > > >> > > > > > > Igniters, >> > > > > > > >> > > > > > > I have never seen a single Ignite user asking about >> compressing a >> > > > > single >> > > > > > > field. However, we have had requests to secure certain fields, >> > e.g. >> > > > > > > passwords. >> > > > > > > >> > > > > > > I personally do not think per-field compression is needed, >> unless >> > > we >> > > > > can >> > > > > > > point out some concrete real life use cases. >> > > > > > > >> > > > > > > D. >> > > > > > > >> > > > > > > On Thu, Jun 8, 2017 at 3:42 AM, Vyacheslav Daradur < >> > > > > daradu...@gmail.com> >> > > > > > > wrote: >> > > > > > > >> > > > > > > > Anton, >> > > > > > > > >> > > > > > > > >> I thought that if there will storing compressed data in >> the >> > > > > memory, >> > > > > > > data >> > > > > > > > >> will transmit over wire in compression too. Is it right? >> > > > > > > > >> > > > > > > > In per-field compression case - yes. >> > > > > > > > >> > > > > > > > 2017-06-08 13:36 GMT+03:00 Антон Чураев < >> churaev...@gmail.com >> > >: >> > > > > > > > >> > > > > > > > > Guys, could you please help me. >> > > > > > > > > I thought that if there will storing compressed data in >> the >> > > > memory, >> > > > > > > data >> > > > > > > > > will transmit over wire in compression too. Is it right? >> > > > > > > > > >> > > > > > > > > 2017-06-08 13:30 GMT+03:00 Vyacheslav Daradur < >> > > > daradu...@gmail.com >> > > > > >: >> > > > > > > > > >> > > > > > > > > > Vladimir, >> > > > > > > > > > >> > > > > > > > > > The main problem which I'am trying to solve is storing >> data >> > > in >> > > > > > memory >> > > > > > > > in >> > > > > > > > > a >> > > > > > > > > > compression form via Ignite. >> > > > > > > > > > The main goal is using memory more effectivelly. >> > > > > > > > > > >> > > > > > > > > > >> here the much simpler step would be to full >> > > > > > > > > > compression on per-cache basis rather than dealing with >> > > > > per-fields >> > > > > > > > case. >> > > > > > > > > > >> > > > > > > > > > Please explain your idea. Compess data by memory-page? >> > > > > > > > > > Is it compatible with quering and indexing? >> > > > > > > > > > >> > > > > > > > > > >> In the end, if user would like to compress particular >> > > field, >> > > > > he >> > > > > > > can >> > > > > > > > > > always to it on his own >> > > > > > > > > > I think we mustn't think in this way, if user need >> > something >> > > he >> > > > > > > trying >> > > > > > > > to >> > > > > > > > > > choose a tool which has this feature OOTB. >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > 2017-06-08 12:53 GMT+03:00 Vladimir Ozerov < >> > > > voze...@gridgain.com >> > > > > >: >> > > > > > > > > > >> > > > > > > > > > > Igniters, >> > > > > > > > > > > >> > > > > > > > > > > Honestly I still do not see how to apply it gracefully >> > this >> > > > > > feature >> > > > > > > > ti >> > > > > > > > > > > Ignite. And overall approach to compress only >> particular >> > > > fields >> > > > > > > looks >> > > > > > > > > > > overcomplicated to me. Remember, that our main use >> case >> > is >> > > an >> > > > > > > > > application >> > > > > > > > > > > without classes on the server. It means that any kind >> of >> > > > > > > annotations >> > > > > > > > > are >> > > > > > > > > > > inapplicable. To be more precise: proper API should be >> > > > > > implemented >> > > > > > > to >> > > > > > > > > > > handle no-class case (e.g. how would build such an >> object >> > > > > through >> > > > > > > > > > > BinaryBuilder without a class?), and only then add >> > > > annotations >> > > > > as >> > > > > > > > > > > convenient addition to more basic API. >> > > > > > > > > > > >> > > > > > > > > > > It seems to me that full implementation, which takes >> in >> > > count >> > > > > > > proper >> > > > > > > > > > > "classless" API, changes to binary metadata to reflect >> > > > > compressed >> > > > > > > > > fields, >> > > > > > > > > > > changes to SQL, changes to binary protocol, and >> porting >> > to >> > > > .NET >> > > > > > and >> > > > > > > > > CPP, >> > > > > > > > > > > will yield very complex solution with little value to >> the >> > > > > > product. >> > > > > > > > > > > >> > > > > > > > > > > Instead, as I proposed earlier, it seems that we'd >> better >> > > > start >> > > > > > > with >> > > > > > > > > the >> > > > > > > > > > > problem we are trying to solve. Basically, compression >> > > could >> > > > > help >> > > > > > > in >> > > > > > > > > two >> > > > > > > > > > > cases: >> > > > > > > > > > > 1) Transmitting data over wire - it should be >> implemented >> > > on >> > > > > > > > > > communication >> > > > > > > > > > > layer and should not affect binary serialization >> > component >> > > a >> > > > > lot. >> > > > > > > > > > > 2) Storing data in memory - here the much simpler step >> > > would >> > > > be >> > > > > > to >> > > > > > > > full >> > > > > > > > > > > compression on per-cache basis rather than dealing >> with >> > > > > > per-fields >> > > > > > > > > case. >> > > > > > > > > > > >> > > > > > > > > > > In the end, if user would like to compress particular >> > > field, >> > > > he >> > > > > > can >> > > > > > > > > > always >> > > > > > > > > > > to it on his own, and set already compressed field to >> our >> > > > > > > > BinaryObject. >> > > > > > > > > > > >> > > > > > > > > > > Vladimir. >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > On Thu, Jun 8, 2017 at 12:37 PM, Vyacheslav Daradur < >> > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > >> > > > > > > > > > > wrote: >> > > > > > > > > > > >> > > > > > > > > > > > Valentin, >> > > > > > > > > > > > >> > > > > > > > > > > > Yes, I have the prototype[1][2] >> > > > > > > > > > > > >> > > > > > > > > > > > You can see an example of Java class[3] that I used >> in >> > my >> > > > > > > > benchmark. >> > > > > > > > > > > > For example: >> > > > > > > > > > > > class Foo { >> > > > > > > > > > > > @BinaryCompression >> > > > > > > > > > > > String data; >> > > > > > > > > > > > } >> > > > > > > > > > > > If user make decision to store the object in >> compressed >> > > > form, >> > > > > > he >> > > > > > > > can >> > > > > > > > > > use >> > > > > > > > > > > > the annotation @BinaryCompression as shown above. >> > > > > > > > > > > > It means annotated field 'data' will be compressed >> at >> > > > > > > marshalling. >> > > > > > > > > > > > >> > > > > > > > > > > > [1] https://github.com/apache/ignite/pull/1951 >> > > > > > > > > > > > [2] https://issues.apache.org/jira >> /browse/IGNITE-5226 >> > > > > > > > > > > > [3] >> > > > > > > > > > > > https://github.com/daradurvs/i >> gnite-compression/blob/ >> > > > > > > > > > > > master/src/main/java/ru/daradu >> rvs/ignite/compression/ >> > > > > > > > > > model/Audit1F.java >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > 2017-06-08 2:04 GMT+03:00 Valentin Kulichenko < >> > > > > > > > > > > > valentin.kuliche...@gmail.com >> > > > > > > > > > > > >: >> > > > > > > > > > > > >> > > > > > > > > > > > > Vyacheslav, Anton, >> > > > > > > > > > > > > >> > > > > > > > > > > > > Are there any ideas and/or prototypes for the API? >> > Your >> > > > > > design >> > > > > > > > > > > > suggestions >> > > > > > > > > > > > > seem to make sense, but I would like to see how it >> > all >> > > > this >> > > > > > > will >> > > > > > > > > like >> > > > > > > > > > > > from >> > > > > > > > > > > > > user's standpoint. >> > > > > > > > > > > > > >> > > > > > > > > > > > > -Val >> > > > > > > > > > > > > >> > > > > > > > > > > > > On Wed, Jun 7, 2017 at 1:06 AM, Антон Чураев < >> > > > > > > > churaev...@gmail.com >> > > > > > > > > > >> > > > > > > > > > > > wrote: >> > > > > > > > > > > > > >> > > > > > > > > > > > > > Vyacheslav, correct me if something wrong >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > We could provide opportunity of choose between >> CPU >> > > > usage >> > > > > > and >> > > > > > > > > > MEM/NET >> > > > > > > > > > > > > usage >> > > > > > > > > > > > > > for users by compression some attributes of >> stored >> > > > > objects. >> > > > > > > > > > > > > > You have learned design, and it is possible to >> > > localize >> > > > > > > changes >> > > > > > > > > in >> > > > > > > > > > > > > > marshalling without performance affect and >> current >> > > > > > > > functionality. >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > I think, that it's usefull for our project and >> > users. >> > > > > > > > > > > > > > Community, what do you think about this >> proposal? >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > 2017-06-06 17:29 GMT+03:00 Vyacheslav Daradur < >> > > > > > > > > daradu...@gmail.com >> > > > > > > > > > >: >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > > In short, >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > During marshalling a fields is represented as >> > > > > > > > > BinaryFieldAccessor >> > > > > > > > > > > > which >> > > > > > > > > > > > > > > manages its marshalling. It checks if the >> field >> > is >> > > > > marked >> > > > > > > by >> > > > > > > > > > > > annotation >> > > > > > > > > > > > > > > @BinaryCompression, in that case - binary >> > > > > representation >> > > > > > > of >> > > > > > > > > > field >> > > > > > > > > > > > > (bytes >> > > > > > > > > > > > > > > array) will be compressed. It will be marked >> as >> > > > > > compressed >> > > > > > > by >> > > > > > > > > > types >> > > > > > > > > > > > > > > constant (GridBinaryMarshaller.COMPRESSED), >> > after >> > > > this >> > > > > > the >> > > > > > > > > > > > compressed >> > > > > > > > > > > > > > > bytes >> > > > > > > > > > > > > > > array wiil be include in binary >> representation of >> > > > whole >> > > > > > > > object. >> > > > > > > > > > > Note, >> > > > > > > > > > > > > > > header of marshalled object will not be >> > compressed. >> > > > > > > > Compression >> > > > > > > > > > > > > affected >> > > > > > > > > > > > > > > only object's field representation. >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > Objects in IgniteCache is represented as >> > > BinaryObject >> > > > > > which >> > > > > > > > is >> > > > > > > > > > > > wrapper >> > > > > > > > > > > > > > over >> > > > > > > > > > > > > > > bytes array of marshalled object. >> > > > > > > > > > > > > > > BinaryObject provides some usefull methods, >> which >> > > are >> > > > > > used >> > > > > > > by >> > > > > > > > > > > Ignite >> > > > > > > > > > > > > > > systems. >> > > > > > > > > > > > > > > For example, the Queries use >> BinaryObject#field >> > > > method, >> > > > > > > which >> > > > > > > > > > > > > > deserializes >> > > > > > > > > > > > > > > only field of object, without deserializing of >> > > whole >> > > > > > > object. >> > > > > > > > > > > > > > > BinaryObject#field method during >> deserialization, >> > > if >> > > > > > meets >> > > > > > > > the >> > > > > > > > > > > > constant >> > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > compressed type, decompress this bytes array, >> > then >> > > > > > continue >> > > > > > > > > > > > > unmarshalling >> > > > > > > > > > > > > > > as usual. >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > Now, I introduced the Compressor interface in >> > > > > > > > > > IgniteConfigurations, >> > > > > > > > > > > > it >> > > > > > > > > > > > > > > allows user to use own implementation of >> > > compressor - >> > > > > it >> > > > > > is >> > > > > > > > the >> > > > > > > > > > > > > > requirement >> > > > > > > > > > > > > > > in the task[1]. >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > As far as I know, Vladimir Ozerov doesn't like >> > the >> > > > idea >> > > > > > of >> > > > > > > > > > granting >> > > > > > > > > > > > > this >> > > > > > > > > > > > > > > opportunity to the user. >> > > > > > > > > > > > > > > In that case we can choose a compression >> > algorithm >> > > > > which >> > > > > > we >> > > > > > > > > will >> > > > > > > > > > > > > provide >> > > > > > > > > > > > > > by >> > > > > > > > > > > > > > > default and will move the interface to >> internals >> > of >> > > > > > binary >> > > > > > > > > > > > > > infractructure. >> > > > > > > > > > > > > > > For this case I've prepared benchmarked, which >> > I've >> > > > > sent >> > > > > > > > > earlier. >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > I vote for ZSTD algorithm[2], it provides good >> > > > > > compression >> > > > > > > > > ratio >> > > > > > > > > > > and >> > > > > > > > > > > > > good >> > > > > > > > > > > > > > > throughput. It has implementation in Java, >> .NET >> > and >> > > > > C++, >> > > > > > > and >> > > > > > > > > has >> > > > > > > > > > > > > > > ASF-friendly license, we can use it in the all >> > > Ignite >> > > > > > > > > platforms. >> > > > > > > > > > > > > > > You can look at an assessment of this >> algorithm >> > in >> > > my >> > > > > > > > > benchmark's >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > [1] https://issues.apache.org/ >> > > > jira/browse/IGNITE-3592 >> > > > > > > > > > > > > > > [2]https://github.com/facebook/zstd >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > 2017-06-06 16:02 GMT+03:00 Антон Чураев < >> > > > > > > > churaev...@gmail.com >> > > > > > > > > >: >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Looks good for me. >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Could You propose design of implementation >> in >> > > > couple >> > > > > of >> > > > > > > > > > > sentences? >> > > > > > > > > > > > > > > > So that we can estimate the completeness and >> > > > > complexity >> > > > > > > of >> > > > > > > > > the >> > > > > > > > > > > > > > proposal. >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > 2017-06-06 15:26 GMT+03:00 Vyacheslav >> Daradur < >> > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > Anton, >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > Of course, the solution does not affect on >> > > > existing >> > > > > > > > > > > > > implementation. I >> > > > > > > > > > > > > > > > mean, >> > > > > > > > > > > > > > > > > there is no changes if user not use the >> > > > annotation >> > > > > > > > > > > > > > @BinaryCompression. >> > > > > > > > > > > > > > > > (no >> > > > > > > > > > > > > > > > > performance changes) >> > > > > > > > > > > > > > > > > Only if user make decision to use >> compression >> > > on >> > > > > > > specific >> > > > > > > > > > field >> > > > > > > > > > > > or >> > > > > > > > > > > > > > > fields >> > > > > > > > > > > > > > > > > of a class - in that case compression >> will be >> > > > used >> > > > > at >> > > > > > > > > > > marshalling >> > > > > > > > > > > > > in >> > > > > > > > > > > > > > > > > relation to annotated fields. >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > 2017-06-06 15:10 GMT+03:00 Антон Чураев < >> > > > > > > > > > churaev...@gmail.com >> > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > Vyacheslav, >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > Is it possible to propose implementation >> > that >> > > > can >> > > > > > be >> > > > > > > > > > switched >> > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > on-demand? >> > > > > > > > > > > > > > > > > > In this case it should not affect >> > performance >> > > > of >> > > > > > > > current >> > > > > > > > > > > > > solution. >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > I mean, that users should make decision >> > what >> > > is >> > > > > > more >> > > > > > > > > > > important >> > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > them: >> > > > > > > > > > > > > > > > > > throutput or memory/net usage. >> > > > > > > > > > > > > > > > > > May be they will be choose not all >> objects, >> > > or >> > > > > only >> > > > > > > > some >> > > > > > > > > > > > > attributes >> > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > objects for compress. >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > 2017-06-06 14:48 GMT+03:00 Vyacheslav >> > > Daradur < >> > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > Conclusion: >> > > > > > > > > > > > > > > > > > > Provided solution allows reduce size >> of >> > an >> > > > > object >> > > > > > > in >> > > > > > > > > > > > > IgniteCache >> > > > > > > > > > > > > > at >> > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > cost of throughput reduction (small - >> in >> > > some >> > > > > > > cases), >> > > > > > > > > it >> > > > > > > > > > > > > depends >> > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > part >> > > > > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > > object which will be compressed and >> > > > compression >> > > > > > > > > > algorithm. >> > > > > > > > > > > > > > > > > > > I mean, we can make more effective >> use of >> > > > > memory, >> > > > > > > and >> > > > > > > > > in >> > > > > > > > > > > some >> > > > > > > > > > > > > > cases >> > > > > > > > > > > > > > > > it >> > > > > > > > > > > > > > > > > > can >> > > > > > > > > > > > > > > > > > > reduce loading of the interconnect. >> > > > > (replication, >> > > > > > > > > > > > rebalancing) >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > Especially, it will be particularly >> > useful >> > > > for >> > > > > > > > object's >> > > > > > > > > > > > fields >> > > > > > > > > > > > > > > which >> > > > > > > > > > > > > > > > > are >> > > > > > > > > > > > > > > > > > > large text (>~ 250 bytes) and can be >> > > > > effectively >> > > > > > > > > > > compressed. >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > 2017-06-06 12:00 GMT+03:00 Антон >> Чураев < >> > > > > > > > > > > > churaev...@gmail.com >> > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > Vyacheslav, thank you! But could you >> > > please >> > > > > > > > provide a >> > > > > > > > > > > > > > conclusions >> > > > > > > > > > > > > > > > or >> > > > > > > > > > > > > > > > > > > > proposals based on this benchmarks? >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > 2017-06-06 11:28 GMT+03:00 >> Vyacheslav >> > > > > Daradur < >> > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Dmitry, >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Excel-pages: >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 1). "Compression ratio (2)" - >> shows >> > > > object >> > > > > > > size, >> > > > > > > > > with >> > > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > without compression. (Conditions: >> > > literal >> > > > > > text) >> > > > > > > > > > > > > > > > > > > > > 1st graph shows compression >> ratios of >> > > > using >> > > > > > > > > different >> > > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > > > > algrithms >> > > > > > > > > > > > > > > > > > > > > depending on size of compressed >> > field. >> > > > > > > > > > > > > > > > > > > > > 2nd graph shows evaluation of >> size of >> > > > > objects >> > > > > > > > > > depending >> > > > > > > > > > > > on >> > > > > > > > > > > > > > > sizes >> > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 2). "Compression ratio (1)" - >> shows >> > > > object >> > > > > > > size, >> > > > > > > > > with >> > > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > without compression. (Conditions: >> > > badly >> > > > > > > > compressed >> > > > > > > > > > > > > character >> > > > > > > > > > > > > > > > > > sequence) >> > > > > > > > > > > > > > > > > > > > > 1st graph shows compression >> ratios of >> > > > using >> > > > > > > > > different >> > > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > > > > > algrithms depending on size of >> > > compressed >> > > > > > > field. >> > > > > > > > > > > > > > > > > > > > > 2nd graph shows evaluation of >> size of >> > > > > objects >> > > > > > > > > > depending >> > > > > > > > > > > > on >> > > > > > > > > > > > > > > sizes >> > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 3) 'put-avg" - shows average time >> of >> > > the >> > > > > > "put" >> > > > > > > > > > > operation >> > > > > > > > > > > > > > > > depending >> > > > > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > > > > size >> > > > > > > > > > > > > > > > > > > > > and compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 4) 'put-thrpt" - shows throughput >> of >> > > the >> > > > > > "put" >> > > > > > > > > > > operation >> > > > > > > > > > > > > > > > depending >> > > > > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > > > > size >> > > > > > > > > > > > > > > > > > > > > and compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 5) 'get-avg" - shows average time >> of >> > > the >> > > > > > "get" >> > > > > > > > > > > operation >> > > > > > > > > > > > > > > > depending >> > > > > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > > > > size >> > > > > > > > > > > > > > > > > > > > > and compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 6) 'get-thrpt" - shows throughput >> of >> > > the >> > > > > > "get" >> > > > > > > > > > > operation >> > > > > > > > > > > > > > > > depending >> > > > > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > > > > size >> > > > > > > > > > > > > > > > > > > > > and compression algorithms. >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > 2017-06-06 10:59 GMT+03:00 Dmitriy >> > > > > Setrakyan >> > > > > > < >> > > > > > > > > > > > > > > > > dsetrak...@apache.org >> > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > Vladimir, I am not sure how to >> > > > interpret >> > > > > > the >> > > > > > > > > > graphs? >> > > > > > > > > > > > What >> > > > > > > > > > > > > > are >> > > > > > > > > > > > > > > > we >> > > > > > > > > > > > > > > > > > > > looking >> > > > > > > > > > > > > > > > > > > > > > at? >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > On Tue, Jun 6, 2017 at 12:33 AM, >> > > > > Vyacheslav >> > > > > > > > > > Daradur < >> > > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Hi, Igniters. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > I've prepared some >> benchmarking. >> > > > > Results >> > > > > > > [1]. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > And I've prepared the >> evaluation >> > in >> > > > the >> > > > > > > form >> > > > > > > > of >> > > > > > > > > > > > > diagrams >> > > > > > > > > > > > > > > [2]. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > I hope that helps to interest >> the >> > > > > > community >> > > > > > > > and >> > > > > > > > > > > > > > > accelerates a >> > > > > > > > > > > > > > > > > > > > reaction >> > > > > > > > > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > > > > this improvment :) >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > [1] >> > > > > > > > > > > > > > > > > > > > > > > https://github.com/daradurvs/ >> > > > > > > > > > > > ignite-compression/tree/ >> > > > > > > > > > > > > > > > > > > > > > > master/src/main/resources/resu >> lt >> > > > > > > > > > > > > > > > > > > > > > > [2] >> > https://drive.google.com/file/ >> > > d/ >> > > > > > > > > > > > > > > > > > 0B2CeUAOgrHkoMklyZ25YTEdKcEk/ >> > > > > > > > > > > > > > > > > > > > view >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 2017-05-24 9:49 GMT+03:00 >> > > Vyacheslav >> > > > > > > Daradur >> > > > > > > > < >> > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Guys, any thoughts? >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > 2017-05-16 13:40 GMT+03:00 >> > > > Vyacheslav >> > > > > > > > > Daradur < >> > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> Hi guys, >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> I've prepared the PR to >> show >> > my >> > > > > idea. >> > > > > > > > > > > > > > > > > > > > > > > >> https://github.com/apache/ >> > > > > > > > > > > ignite/pull/1951/files >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> About querying - I've just >> > > copied >> > > > > > > existing >> > > > > > > > > > tests >> > > > > > > > > > > > and >> > > > > > > > > > > > > > > have >> > > > > > > > > > > > > > > > > > > > annotated >> > > > > > > > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > > > >> testing data. >> > > > > > > > > > > > > > > > > > > > > > > >> https://github.com/apache/ >> > > > > > > > > > > > > > ignite/pull/1951/files#diff- >> > > > > > > > > > > > > > > > > c19a9d >> > > > > > > > > > > > > > > > > > > > > > > >> f4058141d059bb577e75244764 >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> It means fields which will >> be >> > > > marked >> > > > > > by >> > > > > > > > > > > > > > > @BinaryCompression >> > > > > > > > > > > > > > > > > > will >> > > > > > > > > > > > > > > > > > > be >> > > > > > > > > > > > > > > > > > > > > > > >> compressed at marshalling >> via >> > > > > > > > > > BinaryMarshaller. >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> This solution has no >> effect on >> > > > > > existing >> > > > > > > > data >> > > > > > > > > > or >> > > > > > > > > > > > > > project >> > > > > > > > > > > > > > > > > > > > > architecture. >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> I'll be glad to see your >> > > thougths. >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> 2017-05-15 19:18 GMT+03:00 >> > > > > Vyacheslav >> > > > > > > > > Daradur >> > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Dmitriy, >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>> I have ready prototype. I >> > want >> > > to >> > > > > > show >> > > > > > > > it. >> > > > > > > > > > > > > > > > > > > > > > > >>> It is always easier to >> > discuss >> > > on >> > > > > > > > example. >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>> 2017-05-15 19:02 GMT+03:00 >> > > > Dmitriy >> > > > > > > > > Setrakyan >> > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > dsetrak...@apache.org >> > > > > > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> Vyacheslav, >> > > > > > > > > > > > > > > > > > > > > > > >>>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> I think it is a bit >> > premature >> > > to >> > > > > > > > provide a >> > > > > > > > > > PR >> > > > > > > > > > > > > > without >> > > > > > > > > > > > > > > > > > getting >> > > > > > > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > > > > > > > >>>> community >> > > > > > > > > > > > > > > > > > > > > > > >>>> consensus on the dev >> list. >> > > > Please >> > > > > > > allow >> > > > > > > > > some >> > > > > > > > > > > > time >> > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > community >> > > > > > > > > > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > > > > >>>> respond. >> > > > > > > > > > > > > > > > > > > > > > > >>>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> D. >> > > > > > > > > > > > > > > > > > > > > > > >>>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> On Mon, May 15, 2017 at >> 6:36 >> > > AM, >> > > > > > > > > Vyacheslav >> > > > > > > > > > > > > Daradur >> > > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > > > >>>> daradu...@gmail.com> >> > > > > > > > > > > > > > > > > > > > > > > >>>> wrote: >> > > > > > > > > > > > > > > > > > > > > > > >>>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > I created the ticket: >> > > > > > > > > > > > > > > https://issues.apache.org/jira >> > > > > > > > > > > > > > > > > > > > > > > >>>> /browse/IGNITE-5226 >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > I'll prepare a PR with >> > > > described >> > > > > > > > > solution >> > > > > > > > > > in >> > > > > > > > > > > > > > couple >> > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > days. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > 2017-05-15 15:05 >> GMT+03:00 >> > > > > > > Vyacheslav >> > > > > > > > > > > Daradur >> > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > > > > >: >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Hi, Igniters! >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Apache 2.0 is >> released. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Let's continue the >> > > > discussion >> > > > > > > about >> > > > > > > > a >> > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > > design. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > At the moment, I >> found >> > > only >> > > > > one >> > > > > > > > > solution >> > > > > > > > > > > > which >> > > > > > > > > > > > > > is >> > > > > > > > > > > > > > > > > > > compatible >> > > > > > > > > > > > > > > > > > > > > > with >> > > > > > > > > > > > > > > > > > > > > > > >>>> > querying >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > and indexing, this is >> > > > > > > > > per-objects-field >> > > > > > > > > > > > > > > compression. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Per-fields >> compression >> > > means >> > > > > > that >> > > > > > > > > > metadata >> > > > > > > > > > > > (a >> > > > > > > > > > > > > > > > header) >> > > > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > > an >> > > > > > > > > > > > > > > > > > > > > > object >> > > > > > > > > > > > > > > > > > > > > > > >>>> won't >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > be compressed, only >> > > > serialized >> > > > > > > > values >> > > > > > > > > of >> > > > > > > > > > > an >> > > > > > > > > > > > > > object >> > > > > > > > > > > > > > > > > > fields >> > > > > > > > > > > > > > > > > > > > (in >> > > > > > > > > > > > > > > > > > > > > > > bytes >> > > > > > > > > > > > > > > > > > > > > > > >>>> array >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > form) will be >> > compressed. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > This solution have >> some >> > > > > > > contentious >> > > > > > > > > > > issues: >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > - small values, like >> > > > > primitives >> > > > > > > and >> > > > > > > > > > short >> > > > > > > > > > > > > > arrays - >> > > > > > > > > > > > > > > > > there >> > > > > > > > > > > > > > > > > > > > isn't >> > > > > > > > > > > > > > > > > > > > > > > >>>> sense to >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > compress them; >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > - there is no >> possible >> > to >> > > > use >> > > > > > > > > > compression >> > > > > > > > > > > > with >> > > > > > > > > > > > > > > > > > > > java-predefined >> > > > > > > > > > > > > > > > > > > > > > > >>>> types; >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > We can provide an >> > > > annotation, >> > > > > > > > > > > > > > @IgniteCompression - >> > > > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > > > > > example, >> > > > > > > > > > > > > > > > > > > > > > > >>>> which can >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > be used by users for >> > > marking >> > > > > > > fields >> > > > > > > > to >> > > > > > > > > > > > > compress. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Any thoughts? >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Maybe someone already >> > have >> > > > > ready >> > > > > > > > > design? >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > 2017-04-10 11:06 >> > GMT+03:00 >> > > > > > > > Vyacheslav >> > > > > > > > > > > > Daradur >> > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > > > > >>>> >: >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> Alexey, >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> Yes, I've read it. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> Ok, let's discuss >> about >> > > > > public >> > > > > > > API >> > > > > > > > > > > design. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> I think we need to >> add >> > > > some a >> > > > > > > > > configure >> > > > > > > > > > > > > entity >> > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > > > > >>>> CacheConfiguration, >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> which will contain >> the >> > > > > > Compressor >> > > > > > > > > > > interface >> > > > > > > > > > > > > > > > > > > implementation >> > > > > > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > > > some >> > > > > > > > > > > > > > > > > > > > > > > >>>> > usefull >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> parameters. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> Or maybe to provide >> a >> > > > > > > > > BinaryMarshaller >> > > > > > > > > > > > > > decorator, >> > > > > > > > > > > > > > > > > which >> > > > > > > > > > > > > > > > > > > > will >> > > > > > > > > > > > > > > > > > > > > be >> > > > > > > > > > > > > > > > > > > > > > > >>>> compress >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> data after >> marshalling. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> 2017-04-10 10:40 >> > > GMT+03:00 >> > > > > > Alexey >> > > > > > > > > > > > Kuznetsov < >> > > > > > > > > > > > > > > > > > > > > > > akuznet...@apache.org >> > > > > > > > > > > > > > > > > > > > > > > >>>> >: >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> Vyacheslav, >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> Did you read >> initial >> > > > > > discussion >> > > > > > > > [1] >> > > > > > > > > > > about >> > > > > > > > > > > > > > > > > compression? >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> As far as I >> remember >> > we >> > > > > agreed >> > > > > > > to >> > > > > > > > > add >> > > > > > > > > > > only >> > > > > > > > > > > > > > some >> > > > > > > > > > > > > > > > > > > > "top-level" >> > > > > > > > > > > > > > > > > > > > > > API >> > > > > > > > > > > > > > > > > > > > > > > in >> > > > > > > > > > > > > > > > > > > > > > > >>>> > order >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> to >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> provide a way for >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> Ignite users to >> inject >> > > > some >> > > > > > sort >> > > > > > > > of >> > > > > > > > > > > custom >> > > > > > > > > > > > > > > > > > compression. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> [1] >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > http://apache-ignite-developer >> > > > > > > > > > > > > > > s.2346864.n4.nabble >> > > > > > > > > > > > > > > > . >> > > > > > > > > > > > > > > > > > > > > com/Data-c >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > ompression-in-Ignite-2-0- >> > > > > > > > > td10099.html >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> On Mon, Apr 10, >> 2017 >> > at >> > > > 2:19 >> > > > > > PM, >> > > > > > > > > > > > daradurvs < >> > > > > > > > > > > > > > > > > > > > > > daradu...@gmail.com >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > wrote: >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Hi Igniters! >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > I am interested >> in >> > > this >> > > > > > task. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Provide some >> kind of >> > > > > > pluggable >> > > > > > > > > > > > compression >> > > > > > > > > > > > > > SPI >> > > > > > > > > > > > > > > > > > support >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > < >> > > > > https://issues.apache.org/ >> > > > > > > > > > > > > > > > > jira/browse/IGNITE-3592> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > I developed a >> > solution >> > > > on >> > > > > > > > > > > > > > > > BinaryMarshaller-level, >> > > > > > > > > > > > > > > > > > but >> > > > > > > > > > > > > > > > > > > > > > reviewer >> > > > > > > > > > > > > > > > > > > > > > > >>>> has >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> rejected >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > it. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Let's continue >> > > > discussion >> > > > > of >> > > > > > > > task >> > > > > > > > > > > goals >> > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > solution >> > > > > > > > > > > > > > > > > > > > > design. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > As I understood >> > that, >> > > > the >> > > > > > main >> > > > > > > > > goal >> > > > > > > > > > of >> > > > > > > > > > > > > this >> > > > > > > > > > > > > > > task >> > > > > > > > > > > > > > > > > is >> > > > > > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > > store >> > > > > > > > > > > > > > > > > > > > > > > >>>> data in >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > compressed form. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > This is what I >> need >> > > from >> > > > > > > Ignite >> > > > > > > > as >> > > > > > > > > > its >> > > > > > > > > > > > > user. >> > > > > > > > > > > > > > > > > > > Compression >> > > > > > > > > > > > > > > > > > > > > > > >>>> provides >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> economy >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > on >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > servers. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > We can store more >> > data >> > > > on >> > > > > > same >> > > > > > > > > > servers >> > > > > > > > > > > > at >> > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > cost >> > > > > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > > > > > > >>>> increasing CPU >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > utilization. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > I'm researching a >> > > > > > possibility >> > > > > > > of >> > > > > > > > > > > > > > > implementation >> > > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > > > > > compression >> > > > > > > > > > > > > > > > > > > > > > > >>>> at the >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > cache-level. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Any thoughts? >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Best regards, >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > View this >> message in >> > > > > > context: >> > > > > > > > > > > > > > > > > http://apache-ignite- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > developers.2346864.n4.nabble. >> > > > > > > > > > > > > > > > > > com/Data-compression-in- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > Ignite-2-0-tp10099p16317.html >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > Sent from the >> Apache >> > > > > Ignite >> > > > > > > > > > Developers >> > > > > > > > > > > > > > mailing >> > > > > > > > > > > > > > > > > list >> > > > > > > > > > > > > > > > > > > > > archive >> > > > > > > > > > > > > > > > > > > > > > at >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> Nabble.com. >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> Alexey Kuznetsov >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> Best Regards, >> > Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > Best Regards, >> Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >>>> > > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> > -- >> > > > > > > > > > > > > > > > > > > > > > > >>>> > Best Regards, >> Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >>>> > >> > > > > > > > > > > > > > > > > > > > > > > >>>> >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >>> -- >> > > > > > > > > > > > > > > > > > > > > > > >>> Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >>> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> -- >> > > > > > > > > > > > > > > > > > > > > > > >> Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > Best Regards, Anton Churaev >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > Best Regards, Anton Churaev >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Best Regards, Anton Churaev >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > -- >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > Best Regards, Anton Churaev >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > -- >> > > > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > -- >> > > > > > > > > > Best Regards, Vyacheslav >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > -- >> > > > > > > > > >> > > > > > > > > Best Regards, Anton Churaev >> > > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > -- >> > > > > > > > Best Regards, Vyacheslav >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > -- >> > > > > > Best Regards, Vyacheslav >> > > > > > >> > > > > >> > > > >> > > > >> > > > >> > > > -- >> > > > Best Regards, Vyacheslav >> > > > >> > > >> > >> > >> > >> > -- >> > >> > Best Regards, Anton Churaev >> > >> >> >> >> -- >> Sergey Kozlov >> GridGain Systems >> www.gridgain.com >> > > > > -- > Best Regards, Vyacheslav > -- Best Regards, Vyacheslav D.