Trino

Trino是一个分布式SQL查询引擎,主要用于以下场景:

1. 数据湖分析

  • 大数据查询:对存储在S3、HDFS等数据湖中的PB级数据进行快速查询
  • 多格式支持:支持Parquet、ORC、JSON、CSV等多种数据格式
  • 实时分析:提供10-100倍于传统Hive的查询速度

2. 联邦查询 (Federated Query)

  • 跨数据源查询:同时查询MySQL、PostgreSQL、MongoDB、Elasticsearch等不同数据源
  • 数据整合:无需数据迁移,直接JOIN不同系统的数据
  • 统一数据访问:通过标准SQL接口访问异构数据源

它用为替代Hadoop/Hive,作为更快、更高效的查询引擎;也支持ETL处理,进行数据转换和加工

例如跨数据源来查询:

-- 示例:跨数据源的业务报表
SELECT 
    o.customer_id,
    c.customer_name,
    SUM(o.amount) as total_revenue
FROM mysql.sales.orders o
JOIN postgres.crm.customers c ON o.customer_id = c.id
WHERE o.order_date >= '2024-01-01'
GROUP BY o.customer_id, c.customer_name;

从Presto到Trino的演变

Presto最初是由Facebook(现Meta)的工程师团队在2012年开始开发的,主要目标是解决他们在处理大规模数据时面临的挑战。当时Facebook需要一个能够:

• 处理PB级数据的查询引擎 • 提供比Hive更快的交互式查询体验 • 支持标准SQL • 能够查询多种不同的数据源

2013年11月,Facebook正式开源了Presto

2018年1月,Presto的原始创建者们离开Facebook,成立了Starburst Data公司,继续推动Presto

2019年,Presto社区出现了重大分歧。主要原因包括:

  1. 商标问题:Facebook申请了"Presto"商标,这引起了社区担忧
  2. 治理模式:对项目未来发展方向和治理模式的不同看法
  3. 开发速度:对功能开发和bug修复速度的不满

2020年12月,为了避免商标纠纷并确立独立身份,PrestoSQL正式更名为trino。 更名为Trino后,项目获得了新的发展动力,Trino社区迅速扩大,贡献者数量显著增加。

trino在技术方面的创新:

• 改进了查询优化器、增强了内存管理

• 添加了更多连接器、提高了查询性能、增强了安全特性

生态系统的扩展:

• 与Kubernetes的深度集成

• 与数据湖技术(如Delta Lake、Iceberg、Hudi)的集成

• 改进的云存储支持