Phoenix是什么?看看官网就知道了,我就不细说了。关于它的优点,官网也是列了一大堆,我也不复述了。
下面只谈谈截止Phoenix4.2.1,我认为初学者应该注意的两个特征:
1. 完全丧失了HBase的多版本特征
HBases至少也是三维结构(row、cf:cq、timestamp)的数据模型,Phoenix将其映射为二维的关系模型后,便面对着损失信息精度的尴尬场面。这种尴尬具体表现在Phoenix使用的两个方面:
a. 不能为一个cell指定任意的timestamp
作为HBase的第三维特征,timestamp的重要性不言而喻。由于绝大部分数据应用场景都离不开时间维度,所以我们经常会将数据中的某个时间字段映射到timestamp,也就无需在CF中存储该字段了。这样的好处是:既节约了存储空间,也可以使用timestamp相关的API(例如Get#setTimeRange)进行查询。遗憾的是,Phoenix并不能让我们像HBase一样指定任意的timestamp。虽然Phoenix在 F.A.Q.中煞有其事的提出了貌似这个问题的解决方案。但是深究之后你会发现这是一个比较坑爹的方案。理由如下: