第四范式面向机器学习的高可用高并发数据库
如果无法正常显示,请先停止浏览器的去广告插件。
1. 第四范式 面向机器学习的高可用、
高并发数据库: OpenMLDB
张浩
开源项目OpenMLDB PMC
第四范式系统架构科学家
2.
3. • 机器学习工程化落地的数据和特征挑战
• 机器学习数据库 OpenMLDB 介绍
• 高可用、高并发的线上引擎
• 开源一周年、感恩前行
4. •
机器学习工程化落地的数据和特征挑战
5. 正确、高效的AI 数据和特征供给
成为数据侧的新挑战
95%
时间精力花费
在数据上
Source: How to Operationalize Machine
Learning and Data Science Projects, Gartner,
July 201
≠ AI
6. 机器学习应用从开发到上线全流程(MLOps)
7. 毫秒级实时特征计算,最大化机器学习决策业务效果
硬实时计算真正满足 AI 需求 – 实时数据、实时计算
流式计算为 Big Data 和 BI 设计
银行要求毫秒级业务响应
以某银行反欺诈场景为例
客户需求:响应时间20ms内、高准召率 反欺诈系统
硬实时场景蕴藏巨大商业价值,鲜有通用商业化产品
8. 业务场景:满足生产级上线需求的实时推荐系统
9. 特征计算工程化的最大挑战:线上线下一致性校验
10. 线上线下一致性校验带来的高昂工程化落地成本
11. 特征平台工程化解决方案
12. •
机器学习数据库 OpenMLDB 介绍
13. OpenMLDB 是一个开源机器学习数据库,
提供线上线下一致的特征平台
线下:基于 Spark 优化的离
线 SQL 引擎
- 线上:自研毫秒级的实时
SQL 引擎(基于内存或者外
存存储)
- 一致性执行计划生成器保证
线上线下一致性
-
开发即上线 三步骤
1.
2.
3.
线下 SQL 特征脚本开发
一键部署上线
接入实时请求数据流
14. 从离线开发到线上服务完整流程
15. 解决一个核心问题,提供一个核心特性
解决核心问题
机器学习线上线下一致性
提供核心特性
毫秒级实时特征计算
16. OpenMLDB 产品特性一:线上线下一致性执行引擎
统一的底层计算函数
§ 逻辑计划到物理计划的线上
线下执行模式自适应调整
§
线上线下一致性得到 天然保障
17. OpenMLDB 产品特性二:低门槛且功能强大的数据
库开发体验
基于 SQL 和 CLI 的全流程开发体验
18. OpenMLDB 产品特性三: 针对特征工程的 SQL扩展
Last Join
匹配最后一条记录
Window Union
多表聚合
19. OpenMLDB 产品特性四:面向特征计算的定制化性
能优化
离线特征计算 在线特征计算
- 多窗口并行计算优化 - 高性能双层跳表内存索引数据结构
- Spark - 高压力、复杂查询小于
- 数据倾斜计算优化
特征计算优化发行版
- 高可用
20毫秒 延迟
20. OpenMLDB 产品特性五:企业级特性支持
为大规模 企业级 应用而生
已在 上百个 场景中实践落地
21. OpenMLDB 上下游生态
* 自研组件
22. •
高可用、高并发的线上引擎
23. OpenMLDB 线上引擎整体架构
线上引擎包含主要模块
- ZooKeeper
- Nameserver
- Tablets
- SQL 执行引擎
- 存储引擎
24. SQL执行引擎
功能强大
离线在线统一的SQL引擎
- 内置上百个常用函数
- 支持UDF动态扩展
-
性能优化
LLVM codegen
- 循环绑定
- 窗口合并
-
25. 分布式SQL引擎
•
主tablet作为协调者
• 发送子查询到其他tablets(异步)
• 合并子查询结果
• 子查询并行执行
26. 在线存储引擎
在线引擎提供基于内存和外存的两种存储引
擎选择
-
-
-
基于内存:低延迟、高并发;较高使用成本
- 提供毫秒级延迟响应
基于外存:对性能较不敏感;低成本使用落地
- 基于 SSD 的典型配置下成本可下降 75%
两种引擎上层业务代码无感知,零成本切换
27. 内存存储引擎核心数据结构
双层跳表内存索引结构
高效插入和查询
- Lock-free
- Time-travel
- snapshot
- binlog
-
28. 内存存储引擎核心数据结构
Lock Free
•
满足高并发数据访问需求
29. 外存存储引擎数据模型 – 基于 RocksDB
30. 高效的编解码格式
•
•
节省内存
方便做project
31. 表数据分片/副本
-
-
-
一张表会有多个分片(partition)
一张表可以有多个副本(replica)
不同分片的leader会分布在不同的节点上
32. replica主从同步
• 主从之间通过binlog实现数据同步
• 定期生成snapshot
33. 预聚合技术
- 目的:优化长窗口计算效率
- 技术:预聚合部分结果用于实
时计算
34. 预聚合技术
-
-
预聚合发生在数据插入
特征提取:预聚合表 + 原始表 进行聚合
35. 在线引擎性能测试
-
-
研究不同参数变化下的性能表现
详细实验数据和脚本参照 :
https://github.com/4paradigm/OpenMLDB/tree/main/benchmark
-
完整实验测试报告见:
https://openmldb.feishu.cn/wiki/wikcnZRB9VRkqgD1vDFu1F9AaTh
测试基准 SQL
36. Window 数目以及 LAST JOIN 数目影响
增加窗口数目 à 请求的延迟 ↑ (<10 ms)
à 吞吐
↓
增加Join表数目 à 请求的延迟 ↑ (<10 ms)
à 吞吐
↓
37. 窗口内数据条数和索引列基数影响
增加窗口大小 à 请求的延迟 ↑ (<15 ms)
à 吞吐
↓
增加索引基数 à 请求的延迟不变
à 吞吐不变
38. 预聚合技术
预聚合优化使得在长窗口查询下,无论延迟还是吞吐,性能都提升了两个数量级
39. •
开源一周年、感恩前行
40. OpenMLDB 发展历程
41. OpenMLDB 开源一周年,感谢社区贡献者
42. 开源一周年,社区数字
版本迭代:v0.1 – v0.6 合并 PR 数目:1,117
开发者数量:103 Issue 总数量:1,156
- 排名前 15 开发者(按 commit 数 - 已解决 Issue 数量:863
量)来自不同组织数目:7
43. 欢迎加入 OpenMLDB 开源社区
中文官网:https://openmldb.ai/
GitHub: https://github.com/4paradigm/OpenMLDB
WE ARE HIRING
(Fulltime & Intern)
OpenMLDB 微信交流群
个人微信(张浩)
44.
45.