Apache Phoenix(九)新特性之行时间戳

2020-02-18  本文已影响0人  我知他风雨兼程途径日暮不赏

  总结:根据业务需求而定的优化,没啥鸟用
  Phoenix版本4.6现在提供一种方式去映射HBase的本地行时间戳到Phoenix的列上。这有助于利用Hbase为存储文件的时间范围提供各种优化,以及Phoenix内置的各种查询优化功能。
  对于指定为ROW_TIMESTAMP的列,需要遵守如下约束:

CREATE TABLE DESTINATION_METRICS_TABLE
(CREATED_DATE DATE NOT NULL,
METRIC_ID CHAR(15) NOT NULL,
METRIC_VALUE LONG
CONSTRAINT PK PRIMARY KEY(CREATED_DATE ROW_TIMESTAMP, METRIC_ID))
SALT_BUCKETS = 8;

  UPSERT INTO DESTINATION_METRICS_TABLE VALUES (?, ?, ?) - 这将CREATE_DATE的值设置为相应的绑定参数中指定的值。
  UPSERT INTO DESTINATION_METRICS_TABLE (METRIC_ID, METRIC_VALUE) VALUES (?, ?) - 这将CREATED_DATE的值设置为服务器端时间。
  UPSERT INTO DESTINATION_METRICS_TABLE (CREATED_DATE, METRICS_ID, METRIC_VALUE) SELECT DATE, METRICS_ID, METRIC_VALUE FROM SOURCE_METRICS_TABLE -这将CREATED_DATE的值设置为从SOURCE_METRICS_TABLE中选择的日期
  UPSERT INTO DESTINATION_METRICS_TABLE (METRICS_ID, METRIC_VALUE) SELECT METRICS_ID, METRIC_VALUE FROM SOURCE_METRICS_TABLE-设置CREATE_DATE为服务器的时间戳。
  通过过过滤行时间戳列进行查询时,除了执行Phoenix对行键列所做的常规优化外,Phoenix还能够适当地设置扫描上的最小和最大时间范围。在这个时间范围信息的帮助下,服务器端的HBase可以完全跳过那些不在时间范围内的存储文件。这极大地提高了性能,尤其是在查询数据的尾部时。

上一篇下一篇

猜你喜欢

热点阅读