- 新增 DocumentController 提供文档导入 API - 新增 DocumentService 实现文档读取、分割、向量化存储 - 新增 RagConfig 配置 TokenTextSplitter - 添加 doris_intro.md 作为示例 RAG 文档 - 启用 milvus-sdk-java 依赖 - 配置 SiliconFlow Embedding 服务 (BAAI/bge-large-zh-v1.5) - 配置 Milvus 向量数据库连接
3.3 KiB
Apache Doris 简介
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。
核心特性
1. 极速易用
Apache Doris 采用了列式存储引擎,通过向量化执行引擎和查询优化器,能够在海量数据下实现亚秒级的查询响应。同时,Doris 提供了标准 SQL 支持,用户无需学习新的查询语言,即可快速上手。
2. 高可用性
Doris 采用了多副本机制,数据自动备份,节点故障时可以自动切换,保证服务的高可用性。支持在线扩缩容,不影响业务运行。
3. 实时分析
Doris 支持实时数据导入和查询,数据导入后即可被查询,无需等待数据预处理。支持多种数据导入方式,包括 Stream Load、Broker Load、Routine Load 等。
4. 联邦查询
Doris 支持通过外部表的方式查询其他数据源,如 MySQL、Hive、Iceberg、Hudi 等,实现数据联邦查询,无需数据搬迁。
技术架构
Apache Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL。整体架构分为两层:
Frontend (FE)
FE 主要负责:
- 接收和解析用户请求
- 查询规划和优化
- 元数据管理
- 集群管理
FE 节点分为 Follower 和 Observer 两种角色,Follower 参与选举和写入,Observer 只用于扩展查询能力。
Backend (BE)
BE 主要负责:
- 数据存储
- 查询执行
- 数据导入
BE 节点负责数据的存储和计算,采用列式存储和向量化执行引擎,提供高性能的查询能力。
使用场景
1. 报表分析
适用于各类报表场景,支持复杂的多维分析,亚秒级响应,支持高并发查询。
2. 即席查询
支持灵活的即席查询,用户可以快速探索数据,发现业务洞察。
3. 实时数仓
构建实时数据仓库,支持实时数据导入和查询,满足实时分析需求。
4. 日志分析
适用于日志分析场景,支持海量日志数据的快速检索和分析。
数据导入
Apache Doris 支持多种数据导入方式:
Stream Load
通过 HTTP 协议导入数据,适用于实时数据导入场景。支持 CSV、JSON 等格式。
curl --location-trusted -u user:passwd \
-H "column_separator:," \
-T data.csv \
http://fe_host:http_port/api/database/table/_stream_load
Broker Load
通过 Broker 进程访问外部存储系统(如 HDFS、S3)导入数据,适用于大批量数据导入。
Routine Load
从 Kafka 等消息队列持续消费数据并导入,适用于实时数据流场景。
查询优化
Apache Doris 提供了多种查询优化手段:
- 智能索引:支持前缀索引、Bitmap 索引、Bloom Filter 索引等
- 分区分桶:通过合理的分区分桶策略,减少数据扫描量
- 物化视图:预计算常用查询结果,加速查询响应
- 查询缓存:缓存查询结果,避免重复计算
总结
Apache Doris 是一款高性能、易用的分析型数据库,适用于多种实时分析场景。通过 MPP 架构、列式存储、向量化执行等技术,提供亚秒级的查询响应能力。