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

Reply via email to