安装需按官方部署文档操作,README 未提供一键命令;实时数据接入需额外部署 Kafka、Pulsar 或 RocketMQ 等连接器

OpenMLDB
4paradigmApache-2.0活跃维护开源机器学习数据库,提供特征平台,为训练和推理计算一致的特征,解决特征工程与线上线下特征不一致的问题。
OpenMLDB is an open-source machine learning database that provides a feature platform computing consistent features for training and inference.
README 未给出具体安装命令,仅指向 GitHub release 下载页与官方安装部署文档README 未说明
开源机器学习数据库,用 SQL 统一特征工程,让训练与推理特征保持一致
开源机器学习数据库,提供特征平台,为训练和推理计算一致的特征,解决特征工程与线上线下特征不一致的问题。
核心能力
- 用统一执行计划生成器保证离线训练与在线推理特征一致
- 自研实时 SQL 引擎针对时序数据优化,毫秒级产出实时特征
- 以 SQL 定义和管理特征,扩展 LAST JOIN、WINDOW UNION 语法
- 提供分布式存储计算、故障恢复、高可用与平滑扩容等生产能力
- 支持 Kafka、Pulsar、RocketMQ 等实时数据流接入
容易踩的坑
- v0.9.3最新正式版2025-02-21 · 2025-02-21 06:58 UTC
Features
- Performance Optimization for nested agg calls (#4022 @aceforeverd)
- Add gcformat_index udf for gcformat feature sign (#4020 @zhanghaohit)
- Upgrade upload-artifact to v3 (#3984 @nmreadelf)
- Upgrade absl in thirdparty(#3986 @aceforeverd)
- Add online offline consistency validation script (#3974 @oh2024)
Bug Fixes
- Fix handling nullptr after converting FrameBound in ConvertFrameBound of ast_node_converter.cc (#4015 @Shouren)
- Fix correct reference counting for Slice (#3998 @aceforeverd)
- Fix docker image building on arm (#3985 @aceforeverd)
- Fix python_quickstart/demo.py for sqlalchemy 2.0.27 (#3979 @Shouren)
- Fix CMake error "install FILES given directory" for tools/validation (#3975 #3976 @Shouren)
Docs
- Update OpenMLDBSdk reference (#3997 @emmanuel-ferdman)
- Update doc of kafka connector demo for #3993 (#3995 @Shouren)
Full Changelog: https://github.com/4paradigm/OpenMLDB/compare/v0.9.2...v0.9.3
- v0.9.22024-07-27 · 2024-07-27 10:38 UTC
查看更新说明
Bug Fixes
- Fix upgrade openmldb sdk version in self host (#3962 @aceforeverd)
- Fix select from JOB_INFO should always in online mode (#3963 @aceforeverd)
- Fix update create-pull-request action to v6 in udf-doc-gen workflow & rm deprecated file sync (#3964 @Jayaprakash0511)
- Fix build in centos7 EOL (#3965 @aceforeverd)
- Fix numpy version lock (#3966 @aceforeverd)
- v0.9.12024-07-18 · 2024-07-18 13:18 UTC
查看更新说明
Features
- Support merge DAG SQL in Java SDK (#3911 @wyl4pd)
- Support tablets get user table remotely (#3918 @oh2024)
- Support set global variable @@execute_mode = 'request' (#3924 @aceforeverd)
- Support crud users synchronously (#3928 @oh2024)
- Support simple ANSI SQL rewriter(#3934 @aceforeverd)
- Support execute mode batchrequest(#3938 @aceforeverd)
- Support new UDF of isin, array_combine, array_join and locate, (#3939 #3945 @aceforeverd #3940 #3943 @howdb)
- Support server side authorization (#3941 @oh2024)
- Support new index type and IoT Table (#3944 @vagetablechicken)
Bug Fixes
- Fix setup script uses incorrect ZooKeeper configuration file(#3901 @greatljn)
- Fix make clients use always send auth info(#3906 @oh2024)
- Fix drop aggr tables in drop table (#3908 @vagetablechicken)
- Fix checkout execute_mode in config clause in sql client (#3909 @aceforeverd)
- Fix continuous sign for gcformat with space (#3921 @wyl4pd)
- Fix package issues by removing s3 dependencies and fix package conflict of curator (#3929 @tobegit3hub)
- Fix repeated sort keys and sort as int(#3947 @oh2024)
- Fix checkout action on old glibc OS (#3955 @aceforeverd)
- Fix CICD issue of deploying spark correctly(#3958 @aceforeverd)
- v0.9.02024-04-25 · 2024-04-25 20:02 UTC
查看更新说明
Breaking Changes
- Upgrade SQLAlchemy to 2.0.27 and SQLAlchemy 1.x is not supported(#3805 @yht520100)
- Correct semantic for
first_valuewhich will be compatible with ANSI SQL(#3861 @aceforeverd) - Set execute_mode default to
onlinewhich wasofflinebefore 0.9.0(#3862 @aceforeverd) - The client-side authentication is deprecated and we can enable authentication in server-side(#3835 #3885 @oh2024)
Features
- Support offline building docker image(#3773 #3787 @QiChenX, #3778 @aceforeverd)
- Support MySQL protocol with new module OpenM(ysq)LDB(#3800 @tobegit3hub #3816 #3820 #3823 #3824 #3831 @yangwucheng)
- Support map datatype for SQL engine(#3841 #3847 @aceforeverd)
- Support TiDB backend for online and offline storage(#3815 #3839 @yht520100)
- Kafka connector support string timestamp and partial insert(#3834 @vagetablechicken)
- Support arbitrary spark distribution and remove dependency of OpenMLDB Spark(#3849 @tobegit3hub)
- Support insert function in offline mode(#3854 @Matagits)
- Support feature signature with SQL functions(#3877 @wyl4pd)
- Support request mode in raw SQL(#3874 @aceforeverd)
Bug Fixes
- Fix delete with same ts(#3780 @dl239)
- Fix '\x00' Issue in Python SDK Precompiled SQL Inserts(#3788 @yht520100)
- Fix import spark config when creating like hive(@3792 @vagetablechicken)
- Fix select constant return empty value in offline (#3825 @Matagits)
- Fix show and load sql to print result set for notebook magic function(#3856 @tobegit3hub)
- Fix TTL merge for different types(#3859 @vagetablechicken)
- Fix ddl parser when getting duplicated column keys(#3873 @vagetablechicken)
- Fix initializing nameserver bug when calling zk RegisterName(#3869 @oh2024)
Testing
- Set NPROC in intergration test(#3782 @dl239)
- Support map data type in yaml testing framework(#3765 @aceforeverd)
- Add automatic table cleanup after go sdk tests(#3799 @oh2024)
- Fix sql_cmd_test and no impl for MakeMergeNode(#3829 @aceforeverd)
- Add query performance benchmark(#3855 @gaoboal)
- v0.8.52024-02-27 · 2024-02-27 13:46 UTC
查看更新说明
Features
- Support Iceberg as an offline storage (#3737 @vagetablechicken)
- Support
UNION ALLstatement (#3590 #3653 @aceforeverd) - Support
SELECT ... INTO OUTFILEto OpenMLDB online tables (#3616 @tobegit3hub) - Support
LAST JOINandWINDOWwithoutORDER BYin offline mode (#3619 @aceforeverd) - Support
CREATE/ALTER/DROP USERstatement (#3678 #3745 #3747 @dl239, #3744 @tobegit3hub) - Support specifying Spark configurations in the SDK (#3613 @tobegit3hub)
INSERTreturns failure if the server-side memory usage exceeds the specified limit (#3631 @dl239)- Add a new interfact for SQLs to DAG (#3630 @aceforeverd)
- If the deployed SQL contains the
LEFT JOIN, the indexs will be created automatically. (#3667 @aceforeverd) - Support automatic deletion of logs (#3704 #3736 #3706 @dl239)
- Support
absandlat/absorlatTTL type for disktable (#3716 @dl239) - Optimize error messages for insert failures (#3725 @vagetablechicken)
- Improve the documents (#3617 #3519 #3690 #3699 @vagetablechicken, #3612 @dl239, #3609 #3672 #3687 @aceforeverd, #3649 #3570 #3569 @TanZiYen @Elliezza, #3665 @DrDub, #3585 #3584 #3579 #3578 #3574 #3573 #3552 #3539 #3488 #3477 #3475 #3586 #3470 #3474 #3568 #3583 #3564 #3764 @TanZiYen, #3688 #3697 #3753 #3721 #3731 #3739 #3754 #3720 #3756 #3762 #3752 #3757 #3719 @Elliezza, #3075 @Elliezza @tobegit3hub, #3710 @tobegit3hub)
- Other minor features (#3623 #3636 @aceforeverd, #3651 @tobegit3hub, #3641 #3692 @vagetablechicken, #3582 #3702 @dl239, #3674 @lqy222)
Bug Fixes
- Executing offline tasks will consume an excessive number of ZooKeeper connections (#3642 @dl239)
- There is no automatic reconnection after ZooKeeper disconnection in SDK. (#3656 #3668 @vagetablechicken)
- The
FlexibleRowBuilderwill throw aNullPointerExceptionif set with a null value (#3649 @dl239) - If the length of strings in the imported data exceeds 255, it may throw a
BufferOverflowException. (#3729 @ljwh) - If a table contains a large amount of data, querying the data may still be possible after executing
TRUNCATE(#3677 @dl239) - After deleting data, it can still be retrieved from other indexes (#3693 @dl239)
- Delete dirty data when insertion fails (#3681 @dl239)
- When there are no tables, getting databases using
GetAllDbsfails. (#3742 @vagetablechicken) - Adding a deleted index fails if the index name is different from the previous name (#3635 @dl239)
- Other minor bug fixes (#3638 #3654 #3717 #3726 #3743 @vagetablechicken, #3607 #3775 @dl239, #3640 @tobegit3hub, #3686 #3735 #3738 #3740 @aceforeverd, #3759 @yangwucheng)
Code Refactoring
#3666 @vagetablechicken
Experimental built artifacts for Linux AArch64
49b691a8a2dc7175823e9fb808e731a8999896cc3ab819cfd32f1ab10c299cde openmldb-0.8.5-linux-gnu-aarch64.tar.gz
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

English | 中文
Content
- Our Philosophy
- A Feature Platform for ML Applications
- Highlights
- FAQ
- Download and Install
- QuickStart
- Use Cases
- Documentation
- Roadmap
- Contribution
- Community
- Publications
- The User List
OpenMLDB is an open-source machine learning database that provides a feature platform computing consistent features for training and inference.
1. Our Philosophy
For the artificial intelligence (AI) engineering, 95% of the time and effort is consumed by data related workloads. In order to tackle this challenge, tech giants spend thousands of hours on building in-house data and feature platforms to address engineering issues such as data leakage, feature backfilling, and efficiency. The other small and medium-sized enterprises have to purchase expensive SaaS tools and data governance services.
OpenMLDB is an open-source machine learning database that is committed to solving the data and feature challenges. OpenMLDB has been deployed in hundreds of real-world enterprise applications. It prioritizes the capability of feature engineering using SQL for open-source, which offers a feature platform enabling consistent features for training and inference.
2. A Feature Platform for ML Applications
Real-time features are essential for many machine learning applications, such as real-time personalized recommendation and risk analytics. However, a feature engineering script developed by data scientists (Python scripts in most cases) cannot be directly deployed into production for online inference because it usually cannot meet the engineering requirements, such as low latency, high throughput and high availability. Therefore, a engineering team needs to be involved to refactor and optimize the source code using database or C++ to ensure its efficiency and robustness. As there are two teams and two toolchains involved for the development and deployment life cycle, the verification for consistency is essential, which usually costs a lot of time and human power.
OpenMLDB is particularly designed as a feature platform for ML applications to accomplish the mission of Development as Deployment, to significantly reduce the cost from the offline training to online inference. Based on OpenMLDB, there are three steps only for the entire life cycle:
- Step 1: Offline development of feature engineering script based on SQL
- Step 2: SQL online deployment using just one command
- Step 3: Online data source configuration to import real-time data
With those three steps done, the system is ready to serve real-time features, and highly optimized to achieve low latency and high throughput for production.

In order to achieve the goal of Development as Deployment, OpenMLDB is designed to provide consistent features for training and inference. The figure above shows the high-level architecture of OpenMLDB, which consists of four key components: (1) SQL as the unified programming language; (2) The real-time SQL engine for for extra-low latency services; (3) The batch SQL engine based on a tailored Spark distribution; (4) The unified execution plan generator to bridge the batch and real-time SQL engines to guarantee the consistency.
3. Highlights
Consistent Features for Training and Inference: Based on the unified execution plan generator, correct and consistent features are produced for offline training and online inference, providing hassle-free time travel without data leakage.
Real-Time Features with Ultra-Low Latency: The real-time SQL engine is built from scratch and particularly optimized for time series data. It can achieve the response time of a few milliseconds only to produce real-time features, which significantly outperforms other commercial in-memory database systems (Figures 9 & 10, the VLDB 2021 paper).
Define Features as SQL: SQL is used as the unified programming language to define and manage features. SQL is further enhanced for feature engineering, such as the extended syntax LAST JOIN and WINDOW UNION.
Production-Ready for ML Applications: Production features are seamlessly integrated to support enterprise-grade ML applications, including distributed storage and computing, fault recovery, high availability, seamless scale-out, smooth upgrade, monitoring, heterogeneous memory support, and so on.
4. FAQ
-
What are use cases of OpenMLDB?
At present, it is mainly positioned as a feature platform for ML applications, with the strength of low-latency real-time features. It provides the capability of Development as Deployment to significantly reduce the cost for machine learning applications. On the other hand, OpenMLDB contains an efficient and fully functional time-series database, which is used in finance, IoT and other fields.
-
How does OpenMLDB evolve?
OpenMLDB originated from the commercial product of 4Paradigm (a leading artificial intelligence service provider). In 2021, the core team has abstracted, enhanced and developed community-friendly features based on the commercial product; and then makes it publicly available as an open-source project to benefit more enterprises to achieve successful digital transformations at low cost. Before the open-source, it had been successfully deployed in hundreds of real-world ML applications together with 4Paradigm's other commercial products.
Irrespective of the name, it is unrelated to MLDB, a different open source project in development since 2015.
-
Is OpenMLDB a feature store?
OpenMLDB is more than a feature store to provide features for ML applications. OpenMLDB is capable of producing real-time features in a few milliseconds. Nowadays, most feature stores in the market serve online features by syncing features pre-computed at offline. But they are unable to produce low latency real-time features. By comparison, OpenMLDB is taking advantage of its optimized online SQL engine, to efficiently produce real-time features in a few milliseconds.
-
Why does OpenMLDB choose SQL to define and manage features?
SQL (with extension) has the elegant syntax but yet powerful expression ability. SQL based programming experience flattens the learning curve of using OpenMLDB, and further makes it easier for collaboration and sharing.
5. Download and Install
- Download: GitHub release, mirror site (China)
- Install and deploy: English, Chinese
6. QuickStart
7. Use Cases
We are building a list of real-world use cases based on OpenMLDB to demonstrate how it can fit into your business.
| Use Cases | Tools | Brief Introduction |
|---|---|---|
| New York City Taxi Trip Duration | OpenMLDB, LightGBM | This is a challenge from Kaggle to predict the total ride duration of taxi trips in New York City. You can read more detail here. It demonstrates using the open-source tools OpenMLDB + LightGBM to build an end-to-end machine learning applications easily. |
| Importing real-time data streams from Pulsar | OpenMLDB, Pulsar, OpenMLDB-Pulsar connector | Apache Pulsar is a cloud-native streaming platform. The OpenMLDB JDBC Connector for Pulsar allows real-time data streams to be imported into OpenMLDB as online data sources. |
| Importing real-time data streams from Kafka | OpenMLDB, Kafka, OpenMLDB-Kafka connector | Apache Kafka is a distributed event streaming platform. With the OpenMLDB-Kafka connector, the real-time data streams can be imported from Kafka as the online data sources for OpenMLDB. |
| Importing real-time data streams from RocketMQ | OpenMLDB, RocketMQ, OpenMLDB-RocketMQ connector | Apache RocketMQ is a distributed messaging and streaming platform. The OpenMLDB-RocketMQ connector is used to efficiently import real-data streams from RocketMQ to OpenMLDB. |
| Building end-to-end ML pipelines in DolphinScheduler | OpenMLDB, DolphinScheduler, OpenMLDB task plugin | We demonstrate to build an end-to-end machine learning pipeline based on OpenMLDB and DolphinScheduler (an open-source workflow scheduler platform). It consists of feature engineering, model training, and deployment. |
| Ad Tracking Fraud Detection | OpenMLDB, XGBoost | This demo uses OpenMLDB and XGBoost to detect click fraud for online advertisements. |
| SQL-based ML pipelines | OpenMLDB, Byzer, OpenMLDB Plugin for Byzer | Byzer is a low-code open-source programming language for data pipeline, analytics and AI. Byzer has integrated OpenMLDB to deliver the capability of building ML pipelines with SQL. |
| Building end-to-end ML pipelines in Airflow | OpenMLDB, Airflow, Airflow OpenMLDB Provider, XGBoost | Airflow is a popular workflow management and scheduling tool. This demo shows how to effectively schedule OpenMLDB tasks in the Airflow through the provider package. |
| Precision marketing | OpenMLDB, OneFlow | OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. This use case demonstrates to use OpenMLDB for feature engineering and OneFlow for model training/inference, to build an application for precision marketing. |
8. Documentation
- Chinese documentations: https://openmldb.ai/docs/zh
- English documentations: https://openmldb.ai/docs/en/
9. Roadmap
Please refer to our public Roadmap page.
Furthermore, there are a few important features on the development roadmap but have not been scheduled yet. We appreciate any feedbacks on those features.
- A cloud-native OpenMLDB
- Automatic feature extraction
- Optimization based on heterogeneous storage and computing resources
- A lightweight OpenMLDB for edge computing
10. Contribution
We really appreciate the contribution from our community.
- If you are interested to contribute, please read our Contribution Guideline for more details.
- If you are a new contributor, you may get start with the list of issues labeled with
good first issue. - If you have experience of OpenMLDB development, or want to tackle a challenge that may take 1-2 weeks, you may find the list of issues labeled with
call-for-contributions.
11. Community
-
Website: https://openmldb.ai/en
-
Email: [email protected]
-
GitHub Issues and GitHub Discussions: The GitHub Issues is used to report bugs and collect new feature requirements. The GitHub Discussions is open to any discussions related to OpenMLDB.
-
WeChat Groups (Chinese):

12. Publications
- FeatInsight: An Online ML Feature Management System on 4Paradigm Sage-Studio Platform. Xin Tong, Xuanhe Zhou, Bingsheng He, Guoliang Li, Zirui Tang, Wei Zhou, Long Deng, Mian Lu, Yuqiang Chen, Fan Wu. SIGMOD 2026. [code].
- OpenMLDB: A Real-Time Relational Data Feature Computation System for Online ML. Xuanhe Zhou, Wei Zhou, Liguo Qi, Hao Zhang, Dihao Chen, Bingsheng He, Mian Lu, Guoliang Li, Fan Wu, Yuqiang Chen. SIGMOD 2025.
- PECJ: Stream Window Join on Disorder Data Streams with Proactive Error Compensation. Xianzhi Zeng, Shuhao Zhang, Hongbin Zhong, Hao Zhang, Mian Lu, Zhao Zheng, and Yuqiang Chen. International Conference on Management of Data (SIGMOD/PODS) 2024.
- Principles and Practices of Real-Time Feature Computing Platforms for ML. Hao Zhang, Jun Yang, Cheng Chen, Siqi Wang, Jiashu Li, and Mian Lu. 2023. Communications of the ACM 66, 7 (July 2023), 77–78.
- Scalable Online Interval Join on Modern Multicore Processors in OpenMLDB. Hao Zhang, Xianzhi Zeng, Shuhao Zhang, Xinyi Liu, Mian Lu, and Zhao Zheng. In 2023 IEEE 39rd International Conference on Data Engineering (ICDE) 2023. [code]
- FEBench: A Benchmark for Real-Time Relational Data Feature Extraction. Xuanhe Zhou, Cheng Chen, Kunyi Li, Bingsheng He, Mian Lu, Qiaosheng Liu, Wei Huang, Guoliang Li, Zhao Zheng, Yuqiang Chen. International Conference on Very Large Data Bases (VLDB) 2023. [code].
- A System for Time Series Feature Extraction in Federated Learning. Siqi Wang, Jiashu Li, Mian Lu, Zhao Zheng, Yuqiang Chen, and Bingsheng He. 2022. In Proceedings of the 31st ACM International Conference on Information & Knowledge Management (CIKM) 2022. [code].
- Optimizing in-memory database engine for AI-powered on-line decision augmentation using persistent memory. Cheng Chen, Jun Yang, Mian Lu, Taize Wang, Zhao Zheng, Yuqiang Chen, Wenyuan Dai, Bingsheng He, Weng-Fai Wong, Guoan Wu, Yuping Zhao, and Andy Rudoff. International Conference on Very Large Data Bases (VLDB) 2021.
13. The User List
We are building a user list to collect feedback from the community. We really appreciate it if you can provide your use cases, comments, or any feedback when using OpenMLDB. We want to hear from you!