Apache Doris设计思想与应用场景介绍

文摘   2024-08-13 07:21   云南  

 


MPP ( Massively Parallel Processing )  


 

       MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。

 

MPP数据库的主要特点

 

  1. 分布式架构:MPP数据库通过将数据和处理任务分散到多个节点上,实现水平扩展,能够高效处理大量数据。

  2. 无共享架构:每个节点独立运行,拥有自己的资源,这增强了系统的可靠性和容错能力。

  3. 并行查询处理:可以在多个节点上并行执行查询,显著提高了性能。

  4. 数据分区:将数据划分为小块,每个节点负责特定部分,便于高效处理。

  5. 高性能计算:针对复杂分析和数据仓库进行了优化,支持并行处理和高效的存储引擎。

  6. 可扩展性:通过增加节点,可以轻松扩展以应对不断增长的数据量和用户需求。

  7. 高可用性:采用冗余和复制机制,确保系统始终可用,减少停机时间。

  8. 支持复杂查询:能够高效处理涉及多表连接、子查询和聚合的复杂查询。

  9. 列存储:许多MPP数据库使用列式存储,提升分析工作负载的性能。

  10. 与分析工具集成:与各种分析框架和商业智能平台兼容,便于数据驱动的决策。


 


 Apache Doris


 

Apache Doris 是一个现代化的 MPP(大规模并行处理)数据库,主要用于实时分析和报表查询。它采用了分布式存储和计算架构,数据分片是其核心机制之一。Doris 主要解决 PB 级别的数据量(如果高于 PB 级别,不推荐使用 Doris 解决,可以考虑用 Hive 等工具),解决结构化数据,查询时间一般在秒级或毫秒级。

高效的数据传输机制:为了应对大规模数据读取和传输的需求,Doris 支持 Arrow Flight SQL 协议,这一协议能够显著提高数据传输效率,实现百倍飞跃。

冷热数据分层功能:在 Doris 2.0 版本中引入了冷热数据分层功能,可以将冷数据下沉到成本更低的对象存储中,同时减少因存储附加带来的开销。

易用性和运维成本低:Doris 设计上注重用户体验,具有极速易用的特点,仅需亚秒级响应时间即可返回查询结果。此外,它还具备较低的运维成本和使用成本


 

应用场景

 

报表分析:Doris 可以快速生成各种报表,适用于企业的经营分析决策、日志分析、用户行为洞察等场景。
即席查询:由于其高效的查询性能,Doris 也适用于需要即席查询的场景,比如临时的数据分析需求。
统一数仓构建:Doris 可以作为企业统一数仓的核心组件,支持复杂的查询和数据整合需求。
数据湖联邦查询加速:Doris 支持与位于 Apache Hive、Apache Iceberg 等平台的外部表联合查询,加速数据湖中的联邦查询。
用户行为分析和 AB 实验平台:用户可以基于 Doris 构建用户行为分析系统和 AB 实验平台,以优化产品和服务。
实时数据分析:Doris 在实时数据分析领域表现优异,适用于需要实时处理和分析大量数据的业务场景。



 

存算分离的架构主要有以下几个原因

 

  1. 性能优化:将存储和计算分开,可以针对不同的需求优化各自的资源。例如,存储可以使用高效的列式存储格式,而计算节点则可以专注于执行复杂的查询。

  2. 灵活性与可扩展性:存算分离允许独立扩展存储和计算资源。当需要处理更多数据时,可以单独增加存储节点;当需要更强的计算能力时,可以增加计算节点。

  3. 资源利用率提升:存算分离使得计算资源可以根据需求动态调整,避免了资源的浪费。例如,计算负载较高时,可以临时增加计算节点,而不必同时增加存储节点。

  4. 简化维护:存储和计算的分离可以简化系统的维护和管理。可以独立更新或优化存储层和计算层,而不影响整体系统的运行。

  5. 支持多种数据访问模式:存算分离能够支持不同的数据访问场景,如批处理和实时分析,使得数据处理更加灵活。

  6. 降低成本:通过灵活配置存储和计算资源,企业可以根据实际需求选择合适的硬件和服务,降低整体运营成本。


 

Apache Doris的MetaService设计思想

 

  1. 集中管理:MetaService负责管理和维护整个集群的元数据,包括数据库、表、分区等信息,提供集中化的管理方式,确保元数据的一致性和可靠性。

  2. 高可用性:通过引入主从复制机制,MetaService能够在主节点故障时迅速切换到备用节点,确保系统的高可用性,减少单点故障的风险。

  3. 实时更新:MetaService支持元数据的实时更新和快速读取,能够快速响应系统中的变化,保证数据的及时性和准确性。

  4. 分布式架构:MetaService设计为分布式架构,可以横向扩展,以适应大规模集群的需求,提升系统的整体性能和扩展性。

  5. 高性能:通过优化元数据的存储和访问方式,MetaService能够提供高效的元数据查询性能,支持快速的元数据操作。

  6. 灵活的事务处理:支持ACID事务,确保元数据操作的原子性和一致性,避免因并发操作导致的数据不一致。

  7. 多种数据源支持:MetaService能够与多种类型的数据源协同工作,便于集成和扩展。

 

FoundationDB 苹果公司的高性能分布式数据库

 

设计用于处理大量结构化数据,具有高可用性、强一致性以及水平扩展等特性。

https://github.com/apple/foundationdb

FoundationDB在多节点的商用服务器集群上运行,通过分布式架构实现了高可扩展性。随着数据量的增长,可以轻松添加更多的服务器来扩展存储容量。

优化的算法和数据结构使得FoundationDB在读/写操作中表现出色,特别是在写密集型场景下,提供了高效的性能。

FoundationDB使用基于ACID事务的模型,确保了数据的一致性和完整性。无论是在读/写密集型工作负载下,都能保证数据在任何时候都是准确无误的。

学习曲线较陡峭:
作为一个功能强大的分布式数据库系统,FoundationDB的复杂性相对较高。对于初学者来说,可能需要花费一定的时间和精力来学习和掌握其使用方法和原理。
应用迁移相对困难:
由于FoundationDB不支持MySQL协议和SQL语法,对于已经使用MySQL等传统关系型数据库的应用程序来说,迁移到FoundationDB可能会面临一定的挑战。这包括数据迁移、应用程序改造等方面的工作


FoundationDB主要应用场景

1. 金融行业
高频交易系统:FoundationDB的高性能和低延迟特性使其成为高频交易系统的理想选择,能够确保交易数据的实时性和准确性。
风险控制系统:在风险管理中,FoundationDB的强一致性和事务支持保证了数据的可靠性和一致性,有助于金融机构及时识别和控制风险。
2. 物联网(IoT)
实时数据处理:物联网平台需要处理来自各种设备的实时数据流,FoundationDB的分布式架构和高效读写性能能够满足这一需求,提供可靠的数据存储和查询服务。
设备状态监控:通过FoundationDB,物联网平台可以实时监控设备的状态,确保设备的正常运行和及时维护。
3. 电子商务
高并发订单处理:在电子商务平台中,FoundationDB能够支持高并发的订单处理,确保在促销活动或节假日等高峰期也能保持系统的稳定运行。
库存管理:通过FoundationDB,电子商务平台可以实时更新库存信息,避免超卖或库存积压等问题。
4. 游戏行业
实时多人在线游戏:FoundationDB的低延迟和高并发特性使其成为实时多人在线游戏的首选数据库,能够确保游戏过程中的流畅性和稳定性。
游戏数据分析:游戏公司可以利用FoundationDB存储和分析玩家的游戏数据,以优化游戏体验和制定营销策略。
5. 大数据分析
数据预处理和存储:FoundationDB可以用于预处理和存储大量的原始数据,为后续的数据分析任务提供可靠的数据源。
与大数据框架结合:FoundationDB可以与Hadoop、Spark等大数据框架结合使用,提供高性能的数据存储和查询服务,加速数据分析过程。
6. 云服务提供商
构建可扩展的云基础架构:云服务提供商可以利用FoundationDB构建可扩展、可靠的云基础架构服务,满足不同用户的存储需求。
弹性伸缩:随着数据量的增长,云服务提供商可以轻松添加更多的服务器来扩展FoundationDB的存储容量,确保服务的连续性和稳定性。
7. 实时应用
在线游戏、流媒体服务等:这些应用需要快速响应和频繁更新的数据操作,FoundationDB的高性能和低延迟特性能够满足这些需求。

FoundationDB架构图


我们回到Doris 



 

Doris日志存储与分析的经典场景

 

Apache Doris在日志存储与分析领域的实践指南:

  1. 整体架构

  • 日志采集和预处理:通过HTTP APIs,多种日志采集工具如Logstash、Filebeat等将日志数据写入Apache Doris。

  • 日志存储和分析引擎:Apache Doris提供高性能、低成本的统一日志存储,并通过SQL接口提供丰富的检索分析能力。

  • 日志分析和告警界面:支持通过标准SQL接口查询Apache Doris,提供简单易用的界面,如Grafana、Superset等。

  • 特点与优势

    • 高吞吐、低延迟:支持每天百TB级、GB/s级日志数据持续稳定写入,延迟保持在1s以内。

    • 低成本存储:支持PB级海量存储,相比Elasticsearch节省60%到80%的存储成本,冷数据存储到S3/HDFS可再降50%成本。

    • 高性能检索分析:支持倒排索引和全文检索,常见查询秒级响应。

    • 开放易用生态:上游对接Logstash、Filebeat等,下游对接Grafana、Superset等,兼容MySQL协议和语法。

  • 高性能、低成本实现

    • 写入吞吐提升:利用SIMD等CPU向量化指令提升JSON数据解析速度和索引构建性能,写入性能是Elasticsearch的3~5倍。

    • 存储成本降低:去掉正排索引,采用列式存储和Zstandard压缩算法,压缩比高达5~10倍,冷热分层功能进一步降低存储成本。

    • 查询性能提升:简化全文检索流程,针对日志场景常见查询做专门优化,如TopN动态剪枝。

  • 分析能力强

    • 标准SQL支持:兼容MySQL协议和语法,支持检索、聚合、多表JOIN等多种数据分析能力。

    • Flexible Schema:支持动态字段增减和索引调整,适应日志数据的迭代变化。


    新架构移除Kafka,ODS层直接到Doris

     

    Apache Doris开源项目的目录结构包括以下主要部分

     

    1. be/ (Backend)

    存放后端代码,包括存储引擎、查询处理等核心功能。 包括数据解析、执行计划、存储格式等模块。

    2. fe/ (Frontend)

    包含前端服务的代码,负责用户接口和SQL解析。 处理用户请求、SQL编译和查询优化。

    3. docs/

    包含项目的文档,包括用户手册、开发指南和API文档。

    4. tests/

    包含单元测试和集成测试的代码,确保代码质量。 分为不同的测试模块,便于管理和扩展。

    5. tools/

    存放各种工具和脚本,用于构建、部署和管理Doris。 包括数据导入导出工具、监控工具等。

    6. conf/

    包含配置文件和示例,帮助用户进行系统配置。

    7. examples/

    提供示例代码和用例,帮助用户快速上手使用Doris。



     


    结论 


     

          Apache Doris凭借其高性能、易用性和实时分析能力,成为多种数据分析场景的理想选择。无论是在商业智能、实时数据分析还是数据集成方面,Doris都能提供强大的支持,为企业决策提供数据驱动的洞察。




    Megadotnet
    为您介绍各体系平台的新闻,系统研发相关框架,组件,方法,过程,运维,设计。企业IT与互联网信息系统或产品解决方案。开源项目,项目管理。
     最新文章