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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Lindorm是阿里云发布的业界首款云原生多模数据库,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase、Solr、Phoenix SQL、OpenTSDB、HDFS等多种开源标准接口,本文主要阐述Lindorm兼容Phoenix背后的故事。

用户福利

阿里云最新发布业界首款云原生多模数据库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

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库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 背后故事
1990 0
深入探索Lindorm兼容Cassandra CQL背后的故事
|
SQL 存储 分布式计算
深入探索Lindorm兼容PhoenixSQL背后的故事
Lindorm是阿里云发布的业界首款云原生多模数据库,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase、Solr、Phoenix SQL、OpenTSDB、HDFS等多种开源标准接口,本文主要阐述Lindorm兼容PhoenixSQL背后的故事。
3463 0
|
3月前
|
存储 SQL 多模数据库
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
Lindorm通过与Dataphin的深度整合,进一步解决了数据集成和数据治理的问题,为企业提供更加高效和更具性价比的方案。
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
|
2月前
|
安全 数据管理
DataphinV4.1大升级:支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
DataphinV4.1大升级:支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
|
3月前
|
数据采集 安全 API
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
Dataphin 是阿里巴巴旗下的一个智能数据建设与治理平台,旨在帮助企业构建高效、可靠、安全的数据资产。在V4.1版本升级中,Dataphin 引入了Lindorm等多项新功能,并开启公共云半托管模式,优化代码搜索,为用户提供更加高效、灵活、安全的数据管理和运营环境,提升用户体验,促进企业数据资产的建设和价值挖掘。
1441 3
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
|
3月前
|
存储 DataWorks 安全
DataWorks产品使用合集之没有使用独享资源组,如何将Lindorm中的数据导出或迁移到其他数据存储服务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
29 0
|
3月前
|
时序数据库
时序数据库工具grafana里的$timeFilter查询1个小时内的数据如何写查询条件
【6月更文挑战第24天】时序数据库工具grafana里的$timeFilter查询1个小时内的数据如何写查询条件
355 0
|
消息中间件 存储 弹性计算
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
157 1
|
存储 NoSQL Oracle
「时序数据库」使用cassandra进行时间序列数据扫描
「时序数据库」使用cassandra进行时间序列数据扫描
|
SQL 存储 分布式计算
【时序数据库】时间序列数据和MongoDB第三部分-查询、分析和呈现时间序列数据
【时序数据库】时间序列数据和MongoDB第三部分-查询、分析和呈现时间序列数据

热门文章

最新文章