phoenix是什么?

关于phoenix的名称,直译为凤凰,在中国有凤凰涅盘之说,咋一听似乎该项目之前挂过很多次,现在翻身了,

实际上其官网戏谑的说有此一问的,可以回家睡大觉了,没时间回答你。

phoenix是构建的Hbase之上的,使用标准的SQL操作Hbase,可以做联机事务处理,拥有低延迟的特性。

phoenix会把SQL编译成一系列的Hbase的scan操作,然后把scan结果生成标准的JDBC结果集,

其底层由于使用了Hbase的API,协处理器,过滤器,处理千万级行的数据也只用毫秒或秒级就搞定。

支持有:SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY等操作。

但phoenix目前不支持Intersect, Minus操作,Oracle是支持此操作的。


可以通过类似Mysql方式连接phoenix:

Connection conn = DriverManager.getConnection("jdbc:phoenix:server1,server2:3333",props);

Phoenix支持通过DDL命令进行表格创建和版本化增量更改,相应元数据存储在Hbase表中。

元数据用于描述phoenix表与hbase之间的关系,映射。

phoenix表可能通过两种方式创建

  1. 从头开始,这种方式Hbase的表与列族都会自动创建。
  2. 映射到一个存在的Hbase表。

Phoenix版"Hello World"例子:

create table test (mykey integer not null primary key, mycolumn varchar);
upsert into test values (1,'Hello');
upsert into test values (2,'World!');
select * from test;

//注意,phoenix没有insert,其insert与update合起来叫做:upsert

打印结果如下:

+-------+------------+
| MYKEY |  MYCOLUMN  |
+-------+------------+
| 1     | Hello      |
| 2     | World!     |
+-------+------------+



阅读更多
换一批

没有更多推荐了,返回首页