[
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)