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