深入探索Lindorm兼容PhoenixSQL背后的故事

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: Lindorm是阿里云发布的业界首款云原生多模数据库,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase、Solr、Phoenix SQL、OpenTSDB、HDFS等多种开源标准接口,本文主要阐述Lindorm兼容PhoenixSQL背后的故事。

用户福利

阿里云最新发布业界首款云原生多模数据库Lindorm,新用户可享9.9元/3个月优惠,技术交流钉钉群:35977898,更多内容请参考链接

1、背景

  作为面向大数据场景的半结构化、结构化存储系统,Lindorm已经在阿里发展了近十年,并始终保持着快速的能力更新和技术升级,是目前支撑阿里经济体业务的核心数据库产品之一。其在功能、性能、稳定性等方面的诸多创新历经了长时间的大规模实践考验,被全面应用于阿里集团、蚂蚁集团、菜鸟、大文娱等各个业务板块,成为目前为止公司内部数据体量最大、覆盖业务最广的数据库产品。随着云原生、5G/IoT时代的到来,客户数据规模和应用需求不断增长,为了更好地服务客户,阿里云 NoSQL 数据库团队融合原Lindorm和TSDB过去的技术积累,发布了云原生多模数据库 Lindorm,集成宽表引擎、时序引擎、搜索引擎、文件引擎四种模型,支持多类型、任意规模数据的低成本存储处理和自适应弹性伸缩,服务于互联网、IoT、车联网、广告、社交、监控、游戏、风控等场景,让企业数据『存得起、看得见』。 Lindorm 云原生多模数据库整体架构及背后的思考可参考《存的起,看得见—云原生多模数据库Lindorm技术解析》。
undefined
  在阿里云上,托管了标准版HBase,Phoenix,另外针对标准版HBase推出了增强版HBase(即Lindorm宽表引擎的前身),性能得到大幅提升,详细可参考《Lindorm/HBase增强版技术解密|每秒7亿次请求,阿里新一代数据库如何支撑?》。但是增强版系列没有兼容Phoenix的产品,很多客户在选用增强版HBase后,无法开通Phoenix SQL服务,有点小遗憾。为了补齐这个产品空白,为客户提供更好的产品体验,Lindorm决定兼容Phoenix。目前Lindorm兼容Phoenix产品已经正式发布,使用方法可参考使用PhoenixSQL Java API访问Lindorm。本文主要探讨一下Lindorm兼容Phoenix背后的故事。

2、Phoenix介绍

  Phoenix是由Salesforce的James Taylor领导开发的HBase插件,致力于“put the SQL back in NoSQL”,提升HBase的使用体验,同时赋予HBase OLTP和轻量级OLAP的能力。
  Phoenix在大数据体系中所处的位置如图所示:
undefined
  通过Phoenix,用户可以像使用MySQL一样来使用HBase。基于标准的JDBC接口,更能无缝对接Mybatis、Spring等框架,由框架来自动生成SQL语句,进一步提高开发效率。

2.1、Phoenix的功能

2.1.1 丰富的语法

  Phoenix SQL语法遵循ANSI SQL-92标准,具备丰富的语法特性,支持group by/order by/join/subquery/function等功能,详细可参考Phoenix官网语法介绍

  基于PhoenixSQL,可以轻松地表达复杂查询,例如一个订单表Join:

SELECT ItemName, O.OrderValue
FROM Items
JOIN
    (SELECT ItemID, sum(Price * Quantity) AS OrderValue
     FROM Orders
     WHERE CustomerID > 'C002'
     GROUP BY ItemID) AS O
ON Items.ItemID = O.ItemID;

2.1.2 便捷的操作

  Phoenix也提供了类似MySQL的Sqlline命令行和Squirrel图形界面工具,方便日常的调试和运维管理,让熟悉SQL数据库的用户使用起来也毫无违和感。

2.2 Phoenix的价值

2.2.1 Phoenix是HBase上最快的实时SQL引擎

  为什么说Phoenix是HBase上最快的实时SQL引擎?我们先回顾一下大数据SQL技术的发展历程:
  从goolge三架马车GFS、BigTable、MapReduce开始,大数据技术开始蓬勃发展。开源社区相继推出GFS的开源版本HDFS,BigTable的开源版本HBase,以及MapReduce的开源版本Hadoop。大数据SQL引擎就是在这些基础上不断发展:
  1. 最初的开源SQL实现是Apache Hive,采取SQL on Hadoop的思路,将SQL转化为MapReduce,中间结果写入HDFS。其优势是适合批量处理,但是大量的中间结果写入HDFS导致实时性比较差。
  2. 为了解决中间结果写HDFS速度慢的问题,出现了很多产品,比如Google Dremel(不开源), 其开源产品是Apache Drill, 另外还有Pivotal HAWQ(不开源),Cloudera Impala等。主要思路是将Hive的MapReduce替换成内存计算,同时也能提供插件对接其他存储引擎。
  3. UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室) 开源的Spark也是将Hive的MapReduce替换成内存计算,不过实现上有些许差异。其采用RDD将数据分成小的片断进行计算,处理了任务容错等问题。同时采用小批来模拟实时,实现了流批一体。
  4. Yandex ClickHouse面向分析领域,推出列式存储,其高压缩率和向量化引擎极大地降低了存储成本,提升了计算性能,主要面向用户行为分析等领域。
  5. eBay Kylin、Apache Druid通过预聚合,提前计算出结果,空间换时间,用于提升查询性能。其中Druid主要用于时序领域。
  6. Facebook Presto,主要解决异构数据的联邦查询问题,提供了丰富的connector,可对接上百种数据库产品,主要面向数据湖分析领域。
  7. Phoenix基于HBase,充分利用HBase的Coprocessor能力,实现了二级索引;通过MPP并行执行,实现了毫秒级响应的交互式体验;另外其无状态的QueryServer设计,避免了Presto等系统Cordinator导致的并发度低的问题。
  从上面可以看出,HBase上的SQL引擎可以有多种实现,比如Hive on HBase,Impala on HBase,Spark on HBase等,但是Hive on HBase无法进行谓词下推,Impala on HBase无法利用Coprocessor进行计算下推,因此性能相比Phoenix要差很多。下面是Phoenix官网的性能对比数据:
undefined
undefined
  另外Spark SQL需要往yarn提交job,启动时间较长,适合执行大运算,不适合高并发实时查询。Spark Streaming用于处理实时数据流,适合ETL场景,不适合实时查询。
  因此要在HBase上实现高并发实时SQL查询,Phoenix是首选。

2.2.2 Phoenix适合的场景

HBase凭借其高性能,低成本的优势,配合Phoenix,适合于海量数据的存储与分析场景:
undefined

2.2.3 Phoenix在阿里云上的使用

Phoenix在阿里云上被广泛使用,据统计,阿里云上的标准版HBase用户一半以上都开通了Phoenix SQL服务。

2.2.4 Phoenix在阿里内部的使用案例

2.2.4.1 用户案例1: 移动数据分析 Quick A+

undefined

2.2.4.2 用户案例2: 蚂蚁离线搜索系统

undefined

3、Lindorm为什么要兼容Phoenix?

Phoenix凭借其丰富的功能,出色的性能以及完善的生态,有着广泛的群众基础。Lindorm团队凭借其在HBase领域多年的经验积累,有能力让Phoenix的性能更上一层楼,为用户提供更好的服务,同时也能完善Lindorm产品线,弥补增强版HBase无法开通SQL的缺憾。

4、Lindorm如何兼容Phoenix?

  总体架构如图所示,Lindorm采用了无状态的QueryServer设计,PhoenixSQL API与QueryServer之间通过Avatica协议来通信。通过兼容Avatica协议,实现了Phoenix接口的协议级兼容。
undefined
  Avatica基于Jetty和ProtocolBuffer来实现,用HTTP协议实现了标准JDBC接口,支持.NET/Go/Java/Python/JavaScript等多语言访问。
undefined
  轻量级的PhoenixSQL API,将计算下沉到QueryServer,降低了客户端的资源消耗。同时无状态的QueryServer使得计算层与存储层解耦,实现了计算层与存储层的独立扩缩容,能对外提供高并发的SQL读写能力。

5、Lindorm兼容Phoenix后有什么收益?

  如前文提到的,Lindorm兼容Phoenix完善了Lindorm产品线,对用户而言,最主要是提升了性能。通过将HBase内核升级为Lindorm内核,以及将二级索引实现替换为Lindorm原生二级索引,性能得到大幅提升。
  下图是LindormSQL二级索引与Phoenix二级索引性能对比:
undefined

6、Lindorm的适用场景

  Lindorm适用于轻量级分析,提供实时的交互式查询体验。下面是与Spark的对比:

undefined

  另外Lindorm具备多Zone实时同步和容灾功能,通过在备集群对接Spark进行离线分析,可以实现同一份数据的在离线一体化,省去用户将数据同步到其他系统的烦恼。

undefined

7、小结

  Lindorm兼容Phoenix,降低了用户的使用门槛,提升了性能。对于存量Phoenix用户而言,可以平滑切换到Lindorm,成为云原生时代的一个更好选择。
  对于习惯关系模型的新用户,以前MySQL是最佳选择,因为其安装方便,使用简单。相比而言,使用NoSQL数据库部署复杂,众多组件的安装使得很多开发者望而却步。如今,随着云原生时代的到来,NoSQL数据库完全托管在云上,开箱即用,点击一个按钮就可以开始使用。使用Lindorm,也将获得近似MySQL一样的体验,并且在存储成本、扩展性、弹性等方面更有优势,十分适合互联网、物联网业务的大数据特点,可以作为新应用在数据库&存储选型时的首选。

体验PhoenixSQL请参考使用PhoenixSQL Java API访问Lindorm,如需免费咨询欢迎加入Lindorm技术交流群

9361c05cfdb8414788b7d379ca8afee9.png

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
SQL 存储 NoSQL
深入探索Lindorm兼容Cassandra CQL背后的故事
深入的分析了阿里云自研多模云原生数据库Lindorm兼容Cassandra CQL 背后故事
1928 0
深入探索Lindorm兼容Cassandra CQL背后的故事
|
SQL 存储 分布式计算
深入探索Lindorm兼容Phoenix背后的故事
Lindorm是阿里云发布的业界首款云原生多模数据库,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase、Solr、Phoenix SQL、OpenTSDB、HDFS等多种开源标准接口,本文主要阐述Lindorm兼容Phoenix背后的故事。
1518 0
|
2月前
|
存储 人工智能 Cloud Native
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
|
7月前
|
存储 SQL 机器学习/深度学习
VLDB论文解读|一文剖析阿里云Lindorm数据库在DB for AI领域的探索
论文主要针对大规模监控场景下海量时序数据的存储、访问、分析和管理带来的挑战,描述了阿里云多模数据库 Lindorm 带来的一站式解决方案。
|
7月前
|
存储 Java 数据挖掘
阿里云时序数据库简介和购买使用流程
阿里云时序数据库(Lindorm Time Series Database,简称TSDB)是阿里云原生多模数据库Lindorm中的核心组件,专门负责处理时序数据。它具有许多优势,包括高并发写入、高压缩比存储、实时时序指标聚合、统计、预测以及ML/AI计算等强大功能。 时序数据是指表示物理设备、系统、应用过程或行为随时间变化的数据,这类数据在物联网、工业物联网、基础运维系统等场景中有着广泛的应用。阿里云TSDB可以解决大规模时序数据的可靠写入问题,显著降低数据存储成本,并且能够实时灵活地完成业务数据的聚合分析。 TSDB针对不同应用场景,支持多元数据存储与索引,具有高效的写入性能和实时数据分析能
|
7月前
|
人工智能 自然语言处理 多模数据库
视野数科联合阿里云Lindorm多模数据库推动AIGC应用在金融领域落地
野数科与阿里云Lindorm多模数据库达成AIGC应用联合创新合作
|
9月前
|
SQL 消息中间件 监控
阿里云云原生多模数据库Lindorm简介和购买流程
Lindorm是面向物联网、互联网、车联网等设计和优化的云原生多模超融合数据库,支持宽表、时序、文本、对象、流、空间等多种数据的统一访问和融合处理,并兼容SQL、HBase/Cassandra/S3、TSDB、HDFS、Solr、Kafka等多种标准接口和无缝集成三方生态工具,是日志、监控、账单、广告、社交、出行、风控等场景首选数据库
|
11月前
|
Cloud Native 多模数据库
《阿里云产品手册2022-2023 版》——云原生多模数据库 Lindorm
《阿里云产品手册2022-2023 版》——云原生多模数据库 Lindorm
109 0
|
时序数据库
《阿里云时序数据库TSDB For InfluxDB?介绍》电子版地址
阿里云时序数据库TSDB For InfluxDB®介绍
138 0
《阿里云时序数据库TSDB For InfluxDB?介绍》电子版地址
|
存储 运维 Cloud Native
客户案例|国泰产险引入阿里云Lindorm数据库,实现存储成本降低75%
日前,国泰财产保险有限责任公司(以下简称“国泰产险”)通过引入阿里云Lindorm数据库,在历史保单分析场景下,查询性能获得约70%提升,同时通过Lindorm深度优化的ZSTD压缩算法,存储效率进一步提升30%,整体综合成本下降75%。
客户案例|国泰产险引入阿里云Lindorm数据库,实现存储成本降低75%

相关产品

  • 云原生多模数据库 Lindorm