[ 
https://issues.apache.org/jira/browse/PHOENIX-5923?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gokcen Iskender updated PHOENIX-5923:
-------------------------------------
    Description: 
It is known that IMMUTABLE_STORAGE_SCHEME = SINGLE_CELL_ARRAY_WITH_OFFSETS 
leads to performance improvement and storage saving. As the name implies this 
storage scheme is currently supported for immutable tables only. Supporting the 
SINGLE_CELL_ARRAY_WITH_OFFSETS storage format for mutable table requires 
reading existing rows for before mutating them, i.e., read-modify-write. 
However, this storage scheme can be used for mutable global index tables 
without any additional IO operation since for every index table update, we 
always read the corresponding data table row and generate the full index row 
from the current state of the data table row and the pending mutation on this 
row. This full index row can be stored using the SINGLE_CELL_ARRAY_WITH_OFFSETS 
storage format even though the data table can continue using a mutable storage 
format. This will allow index tables to enjoy the performance improvement and 
storage saving due to this storage format.

 

Gokcen Iskender: We can also repurpose this Jira and add immutable tables as 
well. We can say that the Immutable tables can have ONE_CELL_PER_COLUMN storage 
format and have indexes that have SINGLE_CELL_ARRAY_WITH_OFFSETS.

  was:It is known that IMMUTABLE_STORAGE_SCHEME = 
SINGLE_CELL_ARRAY_WITH_OFFSETS leads to performance improvement and storage 
saving. As the name implies this storage scheme is currently supported for 
immutable tables only. Supporting the SINGLE_CELL_ARRAY_WITH_OFFSETS storage 
format for mutable table requires reading existing rows for before mutating 
them, i.e., read-modify-write. However, this storage scheme can be used for 
mutable global index tables without any additional IO operation since for every 
index table update, we always read the corresponding data table row and 
generate the full index row from the current state of the data table row and 
the pending mutation on this row. This full index row can be stored using the 
SINGLE_CELL_ARRAY_WITH_OFFSETS storage format even though the data table can 
continue using a mutable storage format.  This will allow index tables to enjoy 
the performance improvement and storage saving due to this storage format.


> Supporting the single cell storage format for mutable global indexes
> --------------------------------------------------------------------
>
>                 Key: PHOENIX-5923
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5923
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 5.0.0, 4.14.3
>            Reporter: Kadir OZDEMIR
>            Assignee: Gokcen Iskender
>            Priority: Major
>
> It is known that IMMUTABLE_STORAGE_SCHEME = SINGLE_CELL_ARRAY_WITH_OFFSETS 
> leads to performance improvement and storage saving. As the name implies this 
> storage scheme is currently supported for immutable tables only. Supporting 
> the SINGLE_CELL_ARRAY_WITH_OFFSETS storage format for mutable table requires 
> reading existing rows for before mutating them, i.e., read-modify-write. 
> However, this storage scheme can be used for mutable global index tables 
> without any additional IO operation since for every index table update, we 
> always read the corresponding data table row and generate the full index row 
> from the current state of the data table row and the pending mutation on this 
> row. This full index row can be stored using the 
> SINGLE_CELL_ARRAY_WITH_OFFSETS storage format even though the data table can 
> continue using a mutable storage format. This will allow index tables to 
> enjoy the performance improvement and storage saving due to this storage 
> format.
>  
> Gokcen Iskender: We can also repurpose this Jira and add immutable tables as 
> well. We can say that the Immutable tables can have ONE_CELL_PER_COLUMN 
> storage format and have indexes that have SINGLE_CELL_ARRAY_WITH_OFFSETS.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to