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

Francis Christopher Liu commented on HBASE-25761:
-------------------------------------------------

{quote}
The difference comparing to a general root table and master local region here 
is that, even we do not split meta, the root table and master local region is 
there, most of the code will be executed. For example, the tiered assignment 
and initialization.
{quote}
Yes and I think more importantly applying a different perspective there's new 
operational complexity exposed to the operator (and possibly the user).

{quote}
In general, for me, the first meta as root solution is very like a compromise, 
you need to do lots of magics in the row key and comparator, just like what I 
have done in the master local region implementation, as we will also store 
procedure data in the same region. But at least, the master local region will 
use different families to store the data, so when reading we do not need to add 
special filters...
{quote}
I see. From my perspective the difference in logic between _first meta region_ 
and  _root table_ implementation is fairly straightforward, the composite 
comparator has fairly simple logic, route based on presence/absence of prefix 
character. For data access the key just needs to be prepended with the prefix 
character, I haven't thought of a case yet wherein we'd need a specialized 
filter (the rough PoC doesn't have one). The prefixing approach is also a 
common end-user design pattern to achieve spatial locality for keys. Although 
yes it would be a bit cleaner if the data would be in a separate hbase:root 
table but I felt there's a good chance the community might see that (IMHO 
small) difference a reasonable tradeoff for its compelling backward 
compatibility characteristics. Hence it felt reasonable enough to include in 
the discussion and hear what people think.

{quote}
And about the reviewing the implementing, trust me, no matter root table or 
master local region, there are no big differences on the implementing steps.
{quote}
I see. I think there seems to be a significant difference between _first meta 
region_ and _root table_ such that the former would be smoother (eg includes 
the incremental disruption the steps produce) to get in wether it is a a big 
difference across all three proposed solutions that I have not looked into. 
Since you don't see any difference and this currently isn't a deciding factor 
we don't really need to delve further unless needed.




> POC: hbase:meta,,1 as ROOT
> --------------------------
>
>                 Key: HBASE-25761
>                 URL: https://issues.apache.org/jira/browse/HBASE-25761
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Michael Stack
>            Assignee: Francis Christopher Liu
>            Priority: Major
>
> One of the proposals up in the split-meta design doc suggests a 
> sleight-of-hand where the current hard-coded hbase:meta,,1 Region is 
> leveraged to serve as first Region of a split hbase:meta but also does 
> double-duty as 'ROOT'. This suggestion was put aside as a complicating 
> recursion in chat but then Francis noticed on a re-read of the BigTable 
> paper, that this is how they describe they do 'ROOT': "The root tablet is 
> just the first tablet in the METADATA table, but is treated specially -- it 
> is never split..."
> This issue is for playing around with this notion to see what the problems 
> are so can do a better description of this approach here, in the design:
> https://docs.google.com/document/d/11ChsSb2LGrSzrSJz8pDCAw5IewmaMV0ZDN1LrMkAj4s/edit?ts=606c120f#heading=h.ikbhxlcthjle



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

Reply via email to