[
https://issues.apache.org/jira/browse/KUDU-3261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Wong updated KUDU-3261:
------------------------------
Description:
Kudu currently only supports multi-row, multi-partition transactions for INSERT
and INSERT_IGNORE operations. We should consider extending the Kudu tablet
store to support:
- Tracking Mutations in the MRS that are associated with a transaction
- Maintaining a separate DeltaTracker (i.e. DMS and multiple DeltaFiles) per
rowset per transaction. These delta trackers should be merged with the main
delta trackers of each DRS. I'm not sure if it will be helpful, but I have [a
patch|https://gerrit.cloudera.org/c/16387/] to encapsulate some of the delta
applying logic – I suspect it might be useful in defining a delta iterator that
spits out delta keys with a singular timestamp, as well as for defining a
"mergeable" delta input (note we have a merge now, but it does a simple
sequential merge of delta stores with the assumption that the input iterators
are disjoint by timestamp, which may not be the case if we have transactional
delta trackers that overlap in time with the main delta tracker).
The DeltaReaders for the DRSs should consider the transaction's finalized
commit timestamp (or lack thereof) in the same way that the MRS iterator
considers mutations in the context of a snapshot.
was:
Kudu currently only supports multi-row, multi-partition transactions for INSERT
and INSERT_IGNORE operations. We should consider extending the Kudu tablet
store to support:
- Tracking Mutations in the MRS that are associated with a transaction
- Maintaining a separate DeltaTracker (i.e. DMS and multiple DeltaFiles) per
rowset per transaction. These delta trackers should be merged with the main
delta trackers of each DRS. I'm not sure if it will be helpful, but I have a
patch to encapsulate some of the delta applying logic – I suspect it might be
useful in defining a delta iterator that spits out delta keys with a singular
timestamp, as well as for defining a "mergeable" delta input (note we have a
merge now, but it does a simple sequential merge of delta stores with the
assumption that the input iterators are disjoint by timestamp, which may not be
the case if we have transactional delta trackers that overlap in time with the
main delta tracker).
The DeltaReaders for the DRSs should consider the transaction's finalized
commit timestamp (or lack thereof) in the same way that the MRS iterator
considers mutations in the context of a snapshot.
> Support updates and deletes in transactions
> -------------------------------------------
>
> Key: KUDU-3261
> URL: https://issues.apache.org/jira/browse/KUDU-3261
> Project: Kudu
> Issue Type: Improvement
> Components: tablet, transactions
> Reporter: Andrew Wong
> Priority: Major
>
> Kudu currently only supports multi-row, multi-partition transactions for
> INSERT and INSERT_IGNORE operations. We should consider extending the Kudu
> tablet store to support:
> - Tracking Mutations in the MRS that are associated with a transaction
> - Maintaining a separate DeltaTracker (i.e. DMS and multiple DeltaFiles) per
> rowset per transaction. These delta trackers should be merged with the main
> delta trackers of each DRS. I'm not sure if it will be helpful, but I have [a
> patch|https://gerrit.cloudera.org/c/16387/] to encapsulate some of the delta
> applying logic – I suspect it might be useful in defining a delta iterator
> that spits out delta keys with a singular timestamp, as well as for defining
> a "mergeable" delta input (note we have a merge now, but it does a simple
> sequential merge of delta stores with the assumption that the input iterators
> are disjoint by timestamp, which may not be the case if we have transactional
> delta trackers that overlap in time with the main delta tracker).
> The DeltaReaders for the DRSs should consider the transaction's finalized
> commit timestamp (or lack thereof) in the same way that the MRS iterator
> considers mutations in the context of a snapshot.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)