OpenMLDB核心介绍与特性
OpenMLDB是一款面向机器学习的高可用、高并发数据库,旨在解决机器学习工程化落地中的数据和特征挑战。其核心目标是实现机器学习线上线下一致性,并提供毫秒级实时特征计算能力。
机器学习工程化挑战
- 机器学习应用从开发到上线全流程中,数据侧面临正确、高效的AI数据和特征供给挑战,据Gartner报告,AI项目95%的精力花费在数据上。
- 毫秒级实时特征计算是关键需求,例如银行反欺诈场景要求响应时间20ms内,硬实时场景蕴藏巨大商业价值,但鲜有通用商业化产品。
- 特征计算工程化的最大挑战是线上线下一致性校验,这导致高昂的工程化落地成本。
OpenMLDB产品特性
- 线上线下一致性执行引擎
- 统一的底层计算函数和逻辑/物理计划自适应调整,确保线上线下一致性。
- 低门槛且功能强大的数据库开发体验
- 针对特征工程的SQL扩展
- LastJoin匹配最后一条记录,WindowUnion多表聚合。
- 面向特征计算的定制化性能优化
- 离线特征计算:多窗口并行计算优化、数据倾斜计算优化、Spark特征计算优化。
- 在线特征计算:高性能双层跳表内存索引、高可用、高并发支持,复杂查询延迟小于20ms。
- 企业级特性支持
高可用、高并发的线上引擎
- 整体架构:包含ZooKeeper、Nameserver、Tablets、SQL执行引擎、存储引擎。
- SQL执行引擎:
- 离线在线统一的SQL引擎,内置上百个常用函数,支持UDF动态扩展。
- 性能优化:LLVMcodegen、循环绑定、窗口合并。
- 分布式SQL引擎:主tablet协调,子查询异步发送并合并,子查询并行执行。
- 在线存储引擎:
- 内存存储:基于双层跳表内存索引,Lock-free、Time-travel、Snapshot-binlog。
- 外存存储:基于RocksDB,高效编解码格式,节省内存。
- 表数据分片/副本:多分片、多副本,不同分片leader分布式部署。
- Replica主从同步:通过binlog实现数据同步,定期生成snapshot。
- 预聚合技术:优化长窗口计算效率,预聚合部分结果用于实时计算。
- 性能测试:
- 窗口数目和Join表数目增加会导致延迟上升、吞吐下降。
- 窗口内数据条数增加导致延迟上升、吞吐下降,索引基数增加仅影响延迟。
- 预聚合技术使长窗口查询下延迟和吞吐性能提升两个数量级。
开源一周年回顾
- OpenMLDB开源一周年,社区贡献显著:
- 开发者数量:103,排名前15开发者来自7个不同组织。
- 合并PR数量:1,117,已解决Issue数量:863。
- 社区资源:
- 中文官网:https://openmldb.ai
- GitHub:https://github.com/4paradigm/OpenMLDB
- 微信交流群及个人联系方式提供。
OpenMLDB通过其一致性的执行引擎、实时计算能力和企业级特性,有效解决了机器学习工程化中的核心挑战,已在多个场景中成功落地。