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

James Taylor commented on PHOENIX-3173:
---------------------------------------

The valid point was raised on PHOENIX-2431, that we may not want to have a hard 
dependency on transactions for Phoenix since it raises the operational 
complexity. An alternate approach, PHOENIX-3534, is a kind of lazy cleanup when 
operations that span regions fail. Part of that JIRA is to do cleanup on major 
compaction, as well as at read time. By having a separate table for views, 
you'd lose the efficiency of the reads across views + base table being local 
most of the time. These reads happen on the server side when view meta data is 
retrieved (query compilation and meta data APIs) and when compaction is 
performed.

One primary driver for this JIRA is to be able to turn off replication for 
SYSTEM.CATALOG while turning it on for this new SYSTEM.VIEW table. Another 
solution for the replication issue is PHOENIX-3639 which is easy in HBase 1.4 
(or even HBase 1.3 if the required HBase patch could be back ported).

Another factor is that this would require union queries to retrieve metadata 
across views and tables during meta data API calls. We'd also need to query 
both tables when a view or table is created as it's not legal to have a view 
with the same name as a table when the tenant ID is the same.

Net-net, I don't see a big enough advantage to implement this fairly large task 
given the limited benefit we'd see.

> Store views in a separate hbase table from physical tables
> ----------------------------------------------------------
>
>                 Key: PHOENIX-3173
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3173
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: James Taylor
>
> To more easily support disaster recovery, we should store views in a separate 
> hbase table from physical tables. We currently store them together in 
> SYSTEM.CATALOG so that they can be updated in an all or none behavior. 
> However, with transaction support, we can make these system tables 
> transactional no longer requiring them to be stored together.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to