You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Mashenkov (Jira)" <ji...@apache.org> on 2021/12/01 21:50:00 UTC

[jira] [Updated] (IGNITE-15784) Support mapping a field of arbitrary type to a byte[] column.

     [ https://issues.apache.org/jira/browse/IGNITE-15784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrey Mashenkov updated IGNITE-15784:
--------------------------------------
    Description: 
h3. Motivation.
A user may want to operate with user objects, which types may differ from or incompatible with a column type.
As a special case, a user may want to transparently serialize an arbitrary object to byte[] (BLOB) column.


h3. Description.
To achieve this we can provide an interface for the converter and allow passing custom converters to a mapper.
The converter acts as an interceptor and transforms a value before writing to/after reading from the column.
Mapper API should be refactored as well to support this.

As a PoC, let's add a test with a converter that performs transparent Java serialization arbitrary object to byte[] column.

As further tickets, we can extend this solution to
* provide a standard converter component for cross-platform  serialization (based on MessagePack or on IGNITE-15944 ticket ideas)
* optionally add JSON/BSON format support.
* add simple converters for supported native types, e.g. Integer<-->String, and possibly, support implicit typecasting.
* support unsigned types via implicit typecasting mechanics.

  was:
h3. Motivation.
A user may want to store an arbitrary user object in serialized form.
To achieve this a user has to implement a custom serializer for the objects and use it explicitly, and
use additional classes with byte[] fields or byte[] fields in his classes for the correct column mapping.

The most simple way is to use Java serialization, but this approach is platform-dependent.

h3. Description.
We can provide support mapping for an object of arbitrary type to the BYTES column via adding transparent object serialization to bytes (and back) for that case.

We may introduce an interceptor component that will transform an object before writing/after reading.
And as a first step, implement a simple transformer that uses Java serialization for PoC purposes.


As further tickets, we can extend this solution to
* convert field of arbitrary type to any column type.
* replace Java serialization with the cross-platform format and store an object along with its schema. (MessagePack or smth like???)
* add JSON/BSON format support.
* provide a public API to support any custom format. (in this case, we may want to validate interceptor in-out data types against the column type)


> Support mapping a field of arbitrary type to a byte[] column.
> -------------------------------------------------------------
>
>                 Key: IGNITE-15784
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15784
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Andrey Mashenkov
>            Assignee: Andrey Mashenkov
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha4
>
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> h3. Motivation.
> A user may want to operate with user objects, which types may differ from or incompatible with a column type.
> As a special case, a user may want to transparently serialize an arbitrary object to byte[] (BLOB) column.
> h3. Description.
> To achieve this we can provide an interface for the converter and allow passing custom converters to a mapper.
> The converter acts as an interceptor and transforms a value before writing to/after reading from the column.
> Mapper API should be refactored as well to support this.
> As a PoC, let's add a test with a converter that performs transparent Java serialization arbitrary object to byte[] column.
> As further tickets, we can extend this solution to
> * provide a standard converter component for cross-platform  serialization (based on MessagePack or on IGNITE-15944 ticket ideas)
> * optionally add JSON/BSON format support.
> * add simple converters for supported native types, e.g. Integer<-->String, and possibly, support implicit typecasting.
> * support unsigned types via implicit typecasting mechanics.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)