asdfgh19 commented on issue #10823:
URL: https://github.com/apache/ignite/issues/10823#issuecomment-1621907212

   @ptupitsyn Thanks for your reply and suggestion! By analyzing 
BinaryObjectBuilderImpl#serializeTo, I found a little rule.
   
    Writing fields out of order or updating some fields of an existing 
record will not create a new BinarySchema, but whenever we add a new field to a 
record, a new Schema will be created.
   
    Suppose there is such a scenario, first we create a new record with 
field A, and the schemaId of the record is 1 at this time. Next we update the 
record and add a field B, at this time the schemaId becomes 2. In this way, we 
add a new field every time until we reach the final goal of 1000 fields, and 
the schemaId becomes 1000.
    If there are no other records referencing the 999 BinarySchemas we 
created in the past, then no object deserialization needs to use these 
BinarySchemas.
   
    I solved this problem by a way. When writing the record for the first 
time, writing null to all non-existing fields creates a unique BinarySchema. 
But this solution wastes some extra memory, because null values occupy 2 bytes 
after serialization, and probably most records only need to write 200 fields 
out of 1000 fields..
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to