Hi LiLi, I agree - row key design in HBase is extremely important. That's why Phoenix supports composite primary keys.
There are a few good ways to learn about the tricks that Phoenix does: 1) Read the wiki: https://github.com/forcedotcom/phoenix/wiki 2) Listen to my conference talks: (see #1) 3) Read my blog (see #1) 4) Implement a built-in function (see #3) Thanks, James On Tue, Jan 7, 2014 at 1:33 AM, Li Li <[email protected]> wrote: > hi all, > as a hbase user, I am told to carefully design table schema for > data access pattern. e.g. you should balance wide table and tall > table, you should do many tricks with rowkey(and even > columnfamily,quantifier). to get followed users you should implement > observers to add A-followedBy-B when insert B-follow-A. Using > coprocessor to push aggregating work to server. Avoiding hot spot by > md5(key) or adding salt.... > In phoenix, all tricks gone. phoenix hide all from user. That's > fine. But as phoenix is not mature as sql(even sql, many query plan is > not well constructed and we should explain it and check the detail of > query), how can I be convinced it's as quick as pure hbase with many > tricks? > Another question, the secondary index is a great feature. will it > slow down writing performance? > I found many secondary indexing strategy in > http://hbase.apache.org/book/secondary.indexes.html and also found > some third-part solution like this: > https://github.com/Huawei-Hadoop/hindex. How is secondary implemented? > If I add an index to a table that already filled with many rows, will > the old rows be indexed automatically? >
