`
mmdev
  • 浏览: 13300739 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Phoenix:在Apache HBase上执行SQL查询

 
阅读更多

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/02/Phoenix-HBase-SQL


近日,Salesforce.com开源了Phoenix,这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。InfoQ有幸采访到了Salesforce.com的主开发者James Taylor以了解关于Phoenix的更多信息。

除了无数的SQL、NoSQL与NewSQL数据库,Salesforce.com又宣布Phoenix项目,这是构建在Apache HBase(列式大数据存储)之上的一个SQL中间层。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。

根据项目所述,Phoenix被Salesforce.com内部使用,对于简单的低延迟查询,其量级为毫秒;对于百万级别的行数来说,其量级为秒。Phoenix并不是像HBase那样用于map-reduce job的,而是通过标准化的语言来访问HBase数据的。

根据项目创建者所述,对于10M到100M的行的简单查询来说,Phoenix要胜过Hive。对于使用了HBase API、协同处理器及自定义过滤器的Impala与OpenTSDB来说,进行相似的查询Phoenix的速度也会更快一些。

Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

Phoenix最值得关注的一些特性有:

  • 嵌入式的JDBC驱动,实现了大部分的java.sql接口,包括元数据API
  • 可以通过多部行键或是键/值单元对列进行建模
  • 完善的查询支持,可以使用多个谓词以及优化的扫描键
  • DDL支持:通过CREATE TABLE、DROP TABLE及ALTER TABLE来添加/删除列
  • 版本化的模式仓库:当写入数据时,快照查询会使用恰当的模式
  • DML支持:用于逐行插入的UPSERT VALUES、用于相同或不同表之间大量数据传输的UPSERT SELECT、用于删除行的DELETE
  • 通过客户端的批处理实现的有限的事务支持
  • 单表——还没有连接,同时二级索引也在开发当中
  • 紧跟ANSI SQL标准

Phoenix代码基于BSD许可开源。

下面是InfoQ采访Phoenix主开发者James Taylor的访谈内容。

InfoQ:为何要为Non-SQL数据存储提供SQL接口?现在已经有很多其他的SQL解决方案了。

JT:现有的SQL解决方案通常都不是水平可伸缩的,因此当数据量变大时会遇到阻碍。至于我们为何在NoSQL数据存储HBase上提供SQL接口,有如下几个原因:

  1. 使用诸如SQL这样易于理解的语言可以使人们能够更加轻松地使用HBase。相对于学习另一套私有API,人们可以使用熟悉的语言来读写数据。
  2. 使用诸如SQL这样更高层次的语言来编写减少了你所需编写的代码量。比如说,使用Phoenix,你可以编写下面这样的查询来获取Web的统计数据(我不想说使用原生的HBase API会有多少行代码,但肯定少不了):
    • SELECT
      • TRUNC(DATE,'DAY') DAY,
      • SUM(CORE) TOTAL_CPU_Usage,
      • MIN(CORE) MIN_CPU_Usage,
      • MAX(CORE) MAX_CPU_Usage
    • FROM WEB_STAT
    • WHERE DOMAIN LIKE 'Salesforce%'
    • GROUP BY TRUNC(DATE,'DAY');
  3. 执行查询时,在数据访问与运行时执行之间加上SQL这样一层抽象可以进行大量优化。比如说,对于GROUP BY查询来说,我们可以利用HBase中协同处理器这样的特性。借助于该特性,我们可以在HBase服务器上执行Phoenix代码。因此,聚合可以在服务端执行,而不必在客户端,这么做会极大减少客户端与服务端之间传输的数据量。此外,Phoenix还会在客户端并行执行GROUP BY,这是根据行键的范围来截断扫描而实现的。通过并行执行,结果会更快地返回。所有这些优化都无需用户参与,用户只需发出查询即可。
  4. 通过使用业界标准的API(如JDBC),我们可以利用现有的工具来使用这些API。比如说,你可以使用现成的SQL客户端(如SQuirrel,http://squirrel-sql.sourceforge.net/)连接HBase服务器并执行SQL。感兴趣的读者可以参见入门指南以了解更多信息:https://github.com/forcedotcom/phoenix/blob/master/README.md

InfoQ:有没有性能评估呢?响应时间是否变快了?可伸缩性是否更好了?

JT:可以在这里https://github.com/forcedotcom/phoenix/wiki/Performance了解Phoenix与其他NoSQL产品/项目的性能对比。我们并没有发布Phoenix与现有的关系型技术之间的基准比较(网上已经有了HBase与他们之间的比较),但当行数与行宽增加时,NoSQL解决方案会更出众。这也取决于你是“如何”使用关系数据库的:是像Salesforce.com那样的多租模式抑或单租模式。HBase非常善于协同定位关系数据,这取决于行键是如何构成的,因此对于某些多租场景来说,其优势是很明显的。

InfoQ:何时才会增加连接支持呢?

JT:连接支持已经在我们的路线图上了,参见https://github.com/forcedotcom/phoenix/wiki#wiki-roadmap。我们已经在做一些基础工作了,现在还不能给出准确的时间点,因为有太多事情要做,但我们会尽快的。

查看英文原文:Phoenix: Running SQL Queries on Apache HBase

分享到:
评论

相关推荐

    apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz

    Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问。Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给...

    phoenix-5.0.0-HBase-2.0-client

    总的来说,"phoenix-5.0.0-HBase-2.0-client.jar" 文件是Squirrel SQL Client连接到Apache Phoenix 5.0.0版本在HBase 2.0上部署的数据库的必备组件。它简化了SQL查询的实现,增强了对大数据存储和分析的能力,对于...

    apache-phoenix-4.14.0-HBase-1.2-src.tar.gz

    综上所述,Apache Phoenix 4.14.0是一个强大的工具,它将SQL的便利性和HBase的分布式存储能力结合在一起,适用于需要高性能SQL查询的大型NoSQL应用场景。通过理解和使用这个源代码包,开发者可以更深入地掌握如何...

    apache-phoenix-4.8.1-HBase-1.2-bin.tar.gz

    Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过标准的JDBC接口与HBase进行交互,极大地简化了对大数据存储系统的SQL查询。在标题"apache-phoenix-4.8.1-HBase-1.2-bin.tar.gz"中,我们可以看到这是...

    Apache Phoenix:We put the SQL back in NoSQL

    ### Apache Phoenix:...Apache Phoenix是一个强大的工具,它使得在HBase上执行SQL查询成为可能,极大地简化了数据处理流程。无论是对于数据分析师还是应用程序开发者来说,Phoenix都是一个值得深入了解和使用的框架。

    apache-phoenix-4.8.1-HBase-0.98-bin.tar

    通过解压 "apache-phoenix-4.8.1-HBase-0.98-bin" 文件,您可以获得 Phoenix 的可执行文件和配置文件,进而安装、配置并在 HBase 上运行 SQL 查询。在实际应用中,理解并掌握这些知识点将极大地提升您在大数据环境中...

    phoenix:Apache Phoenix Hbase Spring Boot微服务

    Apache Phoenix 是一个开源的SQL引擎,它为Apache HBase提供了高性能的关系型数据库查询能力。Phoenix将SQL查询转换为HBase的原生操作,使得开发者能够使用SQL语法来操作分布式NoSQL存储,极大地简化了HBase的数据...

    apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz

    Apache Phoenix是一个开源的SQL层,它为Apache HBase这样的NoSQL数据库提供了高性能的关系型查询能力。这个名为"apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz"的压缩包包含了Phoenix 4.10.0版本,专为运行在HBase ...

    apache-phoenix-4.8.1-HBase-0.98-src.tar.gz

    Apache Phoenix是一个开源的SQL层,它允许用户通过标准的JDBC接口来查询和操作存储在Apache HBase数据库中的数据。Apache Phoenix将SQL查询转换为低级的HBase扫描,从而提高了大数据查询的性能。"apache-phoenix-...

    apache-phoenix-4.14.3-HBase-1.3-bin.tar.gz

    Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过使用JDBC接口来查询和操作HBase数据库。Phoenix将SQL语句转换为HBase的原生操作,从而提高了对大数据集的查询性能。这个"apache-phoenix-4.14.3-HBase-...

    apache-phoenix-4.14.2-HBase-1.3-bin.tar.gz

    Apache Phoenix是一个开源的SQL层,为HBase提供SQL访问方式。它允许用户通过JDBC连接HBase,并将SQL查询转换为HBase的扫描操作和其他相关动作。以下是安装和配置Phoenix的步骤: 准备工作: 确保已经安装了...

    phoenix-hbase-2.4-5.1.2

    而Phoenix则是在HBase之上构建的一层SQL查询接口,使得HBase可以更方便地被SQL熟练开发者所使用。本文将基于"phoenix-hbase-2.4-5.1.2"这个特定版本,深入探讨这两个技术的结合及其关键特性。 1. **Apache HBase** ...

    springboot集成phoenix+hbase

    而Phoenix是一个开源的SQL层,它构建在HBase之上,提供了高性能的数据库查询能力。本示例将详细解释如何将Spring Boot与Phoenix和HBase集成,以创建一个完整的数据访问解决方案。 首先,我们需要在Spring Boot项目...

    apache-phoenix-4.9.0-HBase-1.1-bin.tar.gz

    Apache Phoenix 是一个开源的 JDBC ...总结来说,"apache-phoenix-4.9.0-HBase-1.1-bin.tar.gz" 提供了一个强大的 SQL 接口,使 HBase 更加易用,同时在性能上进行了优化,适合处理大规模、高并发的实时数据查询任务。

    藏经阁-Apache Phoenix and HBase_ Past, Present and Future of SQL ov

    "Apache Phoenix 和 HBase: Past, Present and Future of SQL over HBase" Apache Phoenix 是一个基于 HBase 的关系型数据库层,它提供了 SQL 接口来访问 HBase 数据。Phoenix 的出现解决了 HBase 的一些限制,如...

    Apache Phoenix and HBase Past, Present and Future of SQL over HBase

    Apache Phoenix 是一个为 HBase 提供的 SQL 层,它允许用户直接通过 SQL 语句查询存储在 HBase 中的数据,而无需编写 Java 代码。Phoenix 被视为 HBase 上的一个关系层或 SQL 皮肤,它逐渐发展成为一个通用的 SQL ...

    使用Phoenix通过jdbc连接hbase

    在IT行业中,尤其是在大数据处理领域,HBase是一个广泛使用的分布式列式存储系统,而Phoenix则是一个基于HBase的SQL查询引擎。这篇文档将详细介绍如何使用Phoenix通过JDBC(Java Database Connectivity)连接到HBase...

    phoenix-5.0.0-HBase-2.0-client.jar

    hbase phoenix 客户端连接jdbc的jar包,SQuirreL SQL Client,DbVisualizer 等客户端连接hbase配置使用

    HBase SQL Phoenix

    而Phoenix则是一个SQL查询引擎,它为HBase提供了高性能的SQL接口,使得用户可以使用SQL语句来操作HBase表,无需编写Java MapReduce程序。 **HBase核心概念** 1. 表(Table):HBase中的表由行键(Row Key)、列族...

    phoenix-hbase-1.4-4.16.1-bin

    Phoenix是一种开源的SQL层,它为Apache HBase提供了高性能的关系型数据库查询能力。在大数据领域,HBase因其分布式、列式存储的特性,常被用于处理海量半结构化数据。然而,对于习惯于SQL语法的开发者来说,HBase的...

Global site tag (gtag.js) - Google Analytics