[
https://issues.apache.org/jira/browse/IGNITE-19788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yury Gerzhedovich updated IGNITE-19788:
---------------------------------------
Description:
As of now, java's built-in serialisation is used to marshal rows in
QueryBatchMessage. It's quite inefficient in terms of the size of serialised
batch. Besides, network marshaller is unable to estimate the size of serialised
data in advance, thus serialising the entire batch as a single buffer.
Let's address the part that force marshaller to create a buffer of entire
batch. Optimal serialisation of each particular row is subject for another JIRA
case.
Proposed solution:
* Extend interface {{org.apache.ignite.internal.sql.engine.exec.RowHandler}}
with method {{ByteBuffer toByteBuffer(RowT row)}}
* Extend interface
{{org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory}} with
method {{RowT create(ByteBuffer buffer)}}
* Cover {{ArrayRowHandler}} with tests
* Change return type of
{{org.apache.ignite.internal.sql.engine.message.QueryBatchMessage#rows}} to
{{List<ByteBuffer>}}
* Adjust related code
was:
As of now, java's built-in serialisation is used to marshal rows in
QueryBatchMessage. It's quite inefficient in terms of the size of serialised
batch. Besides, network marshaller is unable to estimate the size of serialised
data in advance, thus serialising the entire batch as a single buffer.
Let's address the part that force marshaller to create a buffer of entire
batch. Optimal serialisation of each particular row is subject for another JIRA
case.
Proposed solution
* Extend interface {{org.apache.ignite.internal.sql.engine.exec.RowHandler}}
with method {{ByteBuffer toByteBuffer(RowT row)}}
* Extend interface
{{org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory}} with
method {{RowT create(ByteBuffer buffer)}}
* Cover {{ArrayRowHandler}} with tests
* Change return type of
{{org.apache.ignite.internal.sql.engine.message.QueryBatchMessage#rows}} to
{{List<ByteBuffer>}}
* Adjust related code
> Sql. Improve QueryBatchMessage serialisation
> --------------------------------------------
>
> Key: IGNITE-19788
> URL: https://issues.apache.org/jira/browse/IGNITE-19788
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Reporter: Konstantin Orlov
> Priority: Major
> Labels: ignite-3
>
> As of now, java's built-in serialisation is used to marshal rows in
> QueryBatchMessage. It's quite inefficient in terms of the size of serialised
> batch. Besides, network marshaller is unable to estimate the size of
> serialised data in advance, thus serialising the entire batch as a single
> buffer.
> Let's address the part that force marshaller to create a buffer of entire
> batch. Optimal serialisation of each particular row is subject for another
> JIRA case.
> Proposed solution:
> * Extend interface {{org.apache.ignite.internal.sql.engine.exec.RowHandler}}
> with method {{ByteBuffer toByteBuffer(RowT row)}}
> * Extend interface
> {{org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory}} with
> method {{RowT create(ByteBuffer buffer)}}
> * Cover {{ArrayRowHandler}} with tests
> * Change return type of
> {{org.apache.ignite.internal.sql.engine.message.QueryBatchMessage#rows}} to
> {{List<ByteBuffer>}}
> * Adjust related code
--
This message was sent by Atlassian Jira
(v8.20.10#820010)