Dmitriy, I would suggest us not limiting blobs use case to a dedicated cache. If to look at other databases they usually have BLOB/LONGBLOB/etc. as a type meaning that users mix simple and BLOB types in the same tables.
Should we start with Ignite SQL adding blobs through its APIs? -- Denis On Fri, Aug 3, 2018 at 1:52 PM Dmitriy Setrakyan <dsetrak...@apache.org> wrote: > Pavel, > > Not everything that gets put in Ignite has a class, and not everything can > be annotated. For example, what about byte[] or a binary object? > > I would prefer a separate cache with specific purpose of storing blobs. It > will be easier for users to understand and configure. It can also have a > custom logic of splitting a blob into multiple batches to be able to > transfer it over the network faster. > > D. > > > On Fri, Aug 3, 2018 at 3:21 AM, Pavel Kovalenko <jokse...@gmail.com> > wrote: > > > Dmitriy, > > > > I think we don't need a separate implementation of cache like BLOB cache. > > Instead of it, a user can mark value class or value class field with the > > special annotation "@BLOB". > > During cache put, marshaller will place a special placeholder on such > > fields, write byte[] array payload of a field to special internal blob > > storage and place the only reference to actual DataEntry in the page > > memory. > > During cache get, marshaller will place a special proxy instead of an > > actual class that can be downloaded and unmarshalled by demand from > > internal storage on the user side. > > Using such approach we will also solve eager/lazy problem, this will also > > give user possibility to adjust his own marshallers (like Jackson, Jaxb, > > etc.) to marshal/unmarshal his blob classes from/to byte[] arrays. > > No major changes in public API are required, it can be pluggable > component. > > > > > > 2018-08-03 0:25 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org>: > > > > > On Thu, Aug 2, 2018 at 1:08 AM, Pavel Kovalenko <jokse...@gmail.com> > > > wrote: > > > > > > > Dmitriy, > > > > > > > > I still don't understand why do you think that it will be file > system? > > > > In all my previous messages I emphasized that this storage shouldn't > be > > > > considered as a file system. It's just a large data storage, whose > > > entities > > > > can be easily accessed using key/link (internally, or externally > using > > > > web/binary protocol interfaces). > > > > > > > > > Instead, if we must focus on large blobs, I would solve the problem > > of > > > > supporting large blobs in regular Ignite caches, as I suggested > before. > > > > > > > > This is impossible. Our page memory can't handle efficiently it by > > > design. > > > > > > > > > > But our API does. What is stopping us from creating a cache as a BLOB > > cache > > > and using whatever storage we need? > > > > > >