从本文来看,phoenix非常适合快速查找hbase。它的二级索引功能支持许多sql构造,并使通过非主键字段的查找比全表扫描更有效。它通过提供复合行键和在使用phoenix接口编写数据时对数据实施约束,简化了以行为中心的类型化数据的创建和管理。关于phoenix的另一个有趣的事实是,我们可以拥有像oracle这样的关系数据库中的序列,这有助于我们在分布式环境中拥有序列。
但是,通常nosqldb上的连接选项是昂贵的。连接需要扫描每个区域并将结果广播到其他区域。phoenix的一个主要优点是在hbase中使用sql,而join是使用sql的一个重要部分。因此,拥有phoenix有什么意义呢?因为在nosqldb上join是昂贵的。
我能说一个好的phoenix用例没有很多连接吗?
1条答案
按热度按时间n1bvdmb61#
以下是我的看法,这是主观的。我偏向Phoenix城,因为我经常使用它!
a) sql语义是一个很大的+
b) phoenix还可以使用内部机制并行化查询(phoenix指南文章)
c) phoenix提供了一种很好的预拆分表(1字节salt)的方法,可以帮助您避免热插拔
d) 在hbase中删除部分键是很困难的,在phoenix中可以做到这一点
e) 聚合在phoenix非常方便(group by)
f) phoenix的一些连接器要漂亮得多(例如spark扩展函数,phoenixtableasdataframe)
g) 在编写复杂的查询时,我经常使用explain计划来理解扫描
h) 提示(我喜欢跳过\u扫描,特别是在采样期间),广播连接的提示也很有用
i) 像convert\u tz,sql上的日期函数之类的好东西呢
j) 视图是整洁的,带有投影视图的漂亮基表非常方便(尤其是共享环境)