Compatibilidad con Phoenix | Exploración en profundidad de la historia detrás de la compatibilidad de Lindorm con PhoenixSQL

Beneficios para el usuario

Alibaba Cloud lanzó recientemente Lindorm, la primera base de datos multimodo nativa de la nube de la industria. Los nuevos usuarios pueden disfrutar de un descuento de 9,9 yuanes / 3 meses. Grupo de intercambio técnico: 35977898, consulte el enlace para obtener más contenido.

1. Antecedentes

  Como sistema de almacenamiento semiestructurado y estructurado para escenarios de big data, Lindorm se ha desarrollado en Alibaba durante casi diez años y siempre ha mantenido actualizaciones rápidas de capacidad y tecnología. Actualmente es uno de los productos de base de datos centrales que respaldan el negocio económico de Alibaba. . Muchas de sus innovaciones en términos de función, rendimiento, estabilidad, etc. se han sometido a pruebas de práctica a gran escala a largo plazo y se han aplicado por completo a varios sectores comerciales como Ali Group, Ant Group, Cainiao y Grand Entertainment, y se ha convertido en el volumen de datos interno de la empresa hasta ahora, el producto de base de datos más grande y extenso. Con el advenimiento de la era nativa de la nube y 5G / IoT, la escala de los requisitos de aplicaciones y datos del cliente continúa creciendo. Para brindar un mejor servicio a los clientes, el equipo de base de datos NoSQL de Alibaba Cloud integra la acumulación de tecnología anterior de Lindorm y TSDB originales. para lanzar una base de datos multimodo nativa de la nube, Lindorm integra cuatro modelos de motor de tabla amplia, motor de sincronización, motor de búsqueda y motor de archivos. Admite almacenamiento y procesamiento de bajo costo y escalado elástico adaptativo de datos de varios tipos y tamaños. sirve a Internet, IoT, Internet de vehículos, publicidad, redes sociales. Escenarios como el monitoreo, los juegos y el control de riesgos hacen que los datos corporativos sean "asequibles y visibles". Para conocer la estructura general de la base de datos multimodo nativa en la nube de Lindorm y el pensamiento detrás de ella, consulte "Análisis de tecnología Lindorm de base de datos multimodo nativa en la nube visible y sobreviviente".
imagen
  En Alibaba Cloud, se aloja la versión estándar de HBase y Phoenix, y se lanza una versión mejorada de HBase (el predecesor del motor de tabla amplia de Lindorm) para la versión estándar de HBase. El rendimiento se ha mejorado considerablemente. Para obtener más detalles, consulte "Descifrado técnico de Lindorm / HBase Enhanced Edition | ¿Cómo admite la base de datos de nueva generación de Ali 700 millones de solicitudes por segundo? ". Sin embargo, la serie de versiones mejoradas no tiene productos compatibles con Phoenix Muchos clientes no pueden abrir los servicios SQL de Phoenix después de elegir la versión mejorada de HBase, lo cual es un poco lamentable. Para llenar este vacío de producto y brindar a los clientes una mejor experiencia de producto, Lindorm decidió ser compatible con Phoenix. En la actualidad, los productos Phoenix compatibles con Lindorm se han lanzado oficialmente. Para conocer el método de uso, consulte el uso de la API Java de PhoenixSQL para acceder a Lindorm. Este artículo analiza principalmente la historia detrás de la compatibilidad de Lindorm con Phoenix.

2.Introducción a Phoenix

  Phoenix es un complemento de HBase desarrollado por James Taylor de Salesforce, que se dedica a "volver a poner SQL en NoSQL" para mejorar la experiencia de HBase y brindar a HBase OLTP y capacidades OLAP livianas.
  La posición de Phoenix en el sistema de big data se muestra en la figura:
imagen
  A través de Phoenix, los usuarios pueden usar HBase como MySQL. Basado en la interfaz estándar JDBC, puede conectarse sin problemas con marcos como Mybatis y Spring. El marco puede generar automáticamente declaraciones SQL para mejorar aún más la eficiencia del desarrollo.

2.1, función Phoenix

2.1.1 Sintaxis enriquecida

  La sintaxis SQL de Phoenix sigue el estándar ANSI SQL-92, tiene características de sintaxis enriquecidas y admite agrupar por / ordenar por / unirse / subconsulta / función y otras funciones. Para obtener más detalles, consulte la introducción de la sintaxis del sitio web oficial de Phoenix.

  Basado en PhoenixSQL, puede expresar fácilmente consultas complejas, como una tabla de órdenes 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 Operación conveniente

  Phoenix también proporciona la línea de comandos Sqlline similar a MySQL y herramientas de interfaz gráfica Squirrel para facilitar la depuración diaria y la gestión de operaciones y mantenimiento, de modo que los usuarios familiarizados con las bases de datos SQL puedan utilizarlas sin ningún sentido de contradicción.

2.2 El valor de Phoenix

2.2.1 Phoenix es el motor SQL en tiempo real más rápido en HBase

  为什么说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官网的性能对比数据:
imagen
imagen
  另外Spark SQL需要往yarn提交job,启动时间较长,适合执行大运算,不适合高并发实时查询。Spark Streaming用于处理实时数据流,适合ETL场景,不适合实时查询。
  因此要在HBase上实现高并发实时SQL查询,Phoenix是首选。

2.2.2 Phoenix适合的场景

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

2.2.3 Phoenix在阿里云上的使用

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

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

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

imagen

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

imagen

3.Lindorm为什么要兼容Phoenix?

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

4.Lindorm如何兼容Phoenix?

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

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

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

6.Lindorm的适用场景

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

imagen

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

imagen

7.小结

  Lindorm es compatible con Phoenix, lo que reduce el umbral para los usuarios y mejora el rendimiento. Para los usuarios de valores de Phoenix, pueden cambiar sin problemas a Lindorm, que se convierte en una mejor opción en la era nativa de la nube.
  Para los nuevos usuarios que están acostumbrados al modelo relacional, MySQL solía ser la mejor opción debido a su fácil instalación y uso. Por el contrario, la implementación de una base de datos NoSQL es complicada y la instalación de muchos componentes hace que muchos desarrolladores sean prohibitivos. Hoy en día, con el advenimiento de la era nativa de la nube, las bases de datos NoSQL están completamente alojadas en la nube, listas para usar, y puede comenzar a usarlas con solo hacer clic en un botón. Con Lindorm, también obtendrá la misma experiencia que MySQL y tendrá más ventajas en costo de almacenamiento, escalabilidad, flexibilidad, etc. Es muy adecuado para las características de big data del negocio de Internet e Internet de las cosas, y puede usarse como una nueva aplicación en la selección de bases de datos y almacenamiento La primera opción.

Para experimentar PhoenixSQL, consulte el uso de la API Java de PhoenixSQL para acceder a Lindorm. Para una consulta gratuita, únase al grupo de intercambio técnico de Lindorm




Supongo que te gusta

Origin blog.51cto.com/15060465/2675790
Recomendado
Clasificación