鉴于联接对于NoSQL DB而言通常很昂贵,因此Phoenix的良好用例是什么?

时间:2019-05-31 22:57:43

标签: hbase phoenix

this article开始,Phoenix适用于快速HBase查找。它的二级索引功能支持许多SQL构造,并且通过非主键字段进行的查找比全表扫描更有效。通过提供复合行键并在使用Phoenix接口编写数据时强制对数据进行约束,从而简化了以行为中心的类型数据的创建和管理。

但是,通常,NoSQL DB上的联接选项很昂贵。联接需要扫描每个区域并将结果广播到其他区域。 Phoenix的主要优点之一是将SQL用于hbase,而join是使用SQL的重要组成部分。因此,既然在NoSQL DB上进行联接,那么拥有Phoenix的意义何在?

我可以说Phoenix的一个好用例没有很多联接吗?

1 个答案:

答案 0 :(得分:0)

以下是我的看法,这是主观的。我偏爱凤凰,因为我经常使用它!

a)SQL语义是一个大+

b)Phoenix还可以使用内部机制并行化查询(Phoenix指南文章)

c)Phoenix提供了一种很好的预拆分表格(1字节盐)的方法,可以帮助您避免热点

d)在HBase中使用零件键进行删除很困难,您可以在Phoenix中确定地做到这一点

e)凤凰城中的汇总非常方便(分组依据)

f)Phoenix的某些连接器要好得多(例如spark扩展函数,phoenixTableAsDataFrame)

g)在编写复杂查询时,我经常使用解释计划来理解扫描内容

h)提示(我喜欢SKIP_SCANS,尤其是在采样过程中),广播连接提示也很有用

i)诸如CONVERT_TZ,SQL上的DATE函数之类的好东西

j)视图整洁,带有投影视图的漂亮基表非常方便(尤其是共享环境)