You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Stanislav Lukyanov (Jira)" <ji...@apache.org> on 2022/10/04 13:16:00 UTC

[jira] [Commented] (IGNITE-14316) Binary object API for arbitrary user objects.

    [ https://issues.apache.org/jira/browse/IGNITE-14316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17612616#comment-17612616 ] 

Stanislav Lukyanov commented on IGNITE-14316:
---------------------------------------------

The only purpose of this in AI 3 architecture is the client-side serialization of complex (multi-level) objects into a flat structure. Essentially, the user needs an easy way to insert a nested object. The object will necessarily be rendered to a `byte[]`, and AI won't really have any introspection into it.

It seems like something Ignite should have as little to do with as possible.
 # The format and the serializer should be some industry standard, available in virtually any language. Avro immediately comes to mind.
 # Mapping complex user objects to a simpler format DB understands is the definition of what ORM does.
 ## When I care about the schema, it's natural to use an actual ORM. Need to investigate what's the latest and greatest in ORMs in terms of serialization support.
 ## When all I want is to do a simple schemaless put with complex objects like `put(new Key(a, b, c), new Val(new NestedVal(d, e), f))`, I probably don't want an ORM. In this case, the user code has to specify a way to serialize the objects. I guess there might be a default one (Avro? Java serialization?) but it feels like a slippery road.

> Binary object API for arbitrary user objects.
> ---------------------------------------------
>
>                 Key: IGNITE-14316
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14316
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Andrey Mashenkov
>            Priority: Major
>              Labels: iep-54, ignite-3
>   Original Estimate: 240h
>  Remaining Estimate: 240h
>
> Let's create BinaryObject (BO) interface and a builder interface for it assuming
> - BO is a self-described object. Similar to Ignite-2 one with a compact footer.
> - BO is unmanaged. SchemaManager doesn't care about its schema at all.
> - BO can be deserialized to user class with a specified deserializer.
> - BO has a flat structure, cyclic links are not allowed. However, one can restore links on reserialization.
> - BO must not have any dependencies on Ignite internals.
> - Ignite should provide some base implementation for BO and builder.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)