[ 
https://issues.apache.org/jira/browse/PHOENIX-7170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17804458#comment-17804458
 ] 

Tanuj Khurana commented on PHOENIX-7170:
----------------------------------------

Another alternative way would be to express TTL as something like 
{code:java}
// ROW_TTL = CASE WHEN ID IS BETWEEN 1 AND 100 THEN <10 days> WHEN ID IS 
BETWEEN 101 AND 200 <7 days> ELSE <5 days> END

where ID is column of the table{code}
We could expand the CREATE TABLE definition where when we set TTL = <value>. 
The value now can be a complex expression.

 

> Phoenix Row TTL
> ---------------
>
>                 Key: PHOENIX-7170
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7170
>             Project: Phoenix
>          Issue Type: New Feature
>            Reporter: Kadir Ozdemir
>            Priority: Major
>
> Deleting rows using delete markers require running delete queries to insert 
> them, one for each row to be deleted. Often applications need to run periodic 
> jobs to issue delete queries to insert delete markers. Deleting rows using 
> TTL is more performance optimized compared to adding delete markers in 
> Phoenix since TTL works without inserting delete markers. Phoenix currently 
> supports table and view (level) TTL. It is desirable to have a row level TTL 
> feature to extend the TTL future to delete a subset of rows of a table or 
> updatable view.
> As in partial indexes, a row level TTL can be set using a where clause. This 
> clause can be set using CREATE and ALTER statements by adding ROW_TTL=(<where 
> clause>). For example, ROW_TTL = (WHERE CURRENT_TIME() - LAST_UPDATE > 
> 8640000 AND ID IS BETWEEN 1 AND 100) where LAST_UPDATE and ID are the columns 
> of the table (or updatable view). As for partial indexes, the where clause 
> should be evaluable on a single row.
> The compaction scanner (CompactionScanner) in Phoenix can evaluate a 
> row-TTL-where clause on a row and decide if the row should be deleted. 
> Similarly, on the read path TTLRegionScanner can mask the deleted rows using 
> row-TTL-where clauses. The row-TTL-where clauses can be stored in SYSCAT in 
> header rows.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to