关于hbase二级索引的描述 hbase的二级索引应用( 四 )


Covered Indexes(覆盖索引)覆盖索引是在索引表中直接存储某些常用字段,当查询时所有字段仅涉及索引表中包含的字段时,则无需再在基于 rowkey 索引的数据表中查询,提高了查询的效率 。
比如,我们在operate_log 表 “f”.”time” 列上创建一个索引,并在索引中包含 “f”.”lat”, “f”.”lon” 列:
0: jdbc:phoenix:> create index index_operate_log_time2 on "operate_log" ("f"."time") INCLUDE("f"."lat", "f"."lon");
2,799,827 rows affected (133.367 seconds)
(可左右滑动)
这样我们做类似如下查询时就可以直接走索引表,以提高查询性能:
0: jdbc:phoenix:> select "f"."lat", "f"."lon" from "operate_log" where "f"."time" between '1538216707720' and '1538223834000' limit 10;(可左右滑动)
Functional Indexes(函数索引)函数索引是在 Phoeinx 4.3 版本之后新增的,它使得索引的建立不仅仅只限于基于列,而可以使用任意的表达式来创建索引,在查询时,如出现相同的表达式查询条件,则会自动优先检索索引表 。
比如,我们在operate_log 表上基于 substr ( “f”.”time”, 1, 10) 创建一个索引:
0: jdbc:phoenix:> create index index_operate_log_time3 on "operate_log" (substr("f"."time", 1, 10));
2,799,827 rows affected (94.74 seconds)
(可左右滑动)
这样创建索引后,我们就可以使用相同表达式走索引表进行查询优化了,比如:
0: jdbc:phoenix:> select count(*) from "operate_log" where substr("f"."time", 1, 10) between '1538216707' and '1538223834';
+-----------+
| COUNT(1) |
+-----------+
| 5886 |
+-----------+
1 row selected (0.059 seconds)
(可左右滑动)
Global Indexes(全局索引)上面的覆盖索引和函数索引都属于全局索引,也是 Phoenix 默认的索引创建模式 。
全局索引将索引表和数据表分开存储,如以上例子中都会创建一张新的索引表,因此每条数据和其索引数据可能会分布在不同的数据节点上,数据表的添加、删除和修改都会更新相关的索引表,所以写入数据时由于额外的网络开销会带来较大的性能消耗 。而查询数据的时候,Phoenix 会通过索引表来快速低损耗的获取数据 。因此全局索引更适合读多写少的使用场景 。
Local Indexes(本地索引)本地索引与全局索引相反,在 4.8.0 版本之后会将索引数据以特定的列簇存储在同一张数据表中,并通过特定的 rowkey 设置,将每条数据及其索引数据存储在同一 region 中,因此在数据写入时防止了额外的网络开销,而在读取数据时因无法提前判断索引数据的准确位置,则会在所有的 region 中检索索引数据,而非常影响读取性能 。所以本地索引更适合于写多读少的使用场景 。
本地索引只要在原来索引创建时增加 local 关键字即可,比如:
0: jdbc:phoenix:> create local index index_operate_log_time on "operate_log" ("f"."time");(可左右滑动)
总结Phoenix 是构建在 HBase 之上的 SQL 层,不仅能够提供标准的 SQL 查询,还能够为 HBase 提供二级索引能力,在 HBase 使用场景中应用非常广泛 。Phoenix 二级索引主要分为全局索引和本地索引,全局索引适合那些读多写少的场景,本地索引更适合那些写多读少的场景 。判断是否走索引可以 explain SQL 查看具体执行计划 。
参考:
1. HBase集成Phoenix,构建Phoenix view和table的区别
2. 如何使用Phoenix在CDH的HBase中创建二级索引
3. 产品 | Cloudera正式宣布在CDH中支持Apache Phoenix
◆Apache Hudi 0.5.1版本重磅发布
◆贝壳找房基于 Flink 的实时平台建设
◆网易大数据基础平台建设之路


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: