OpenMLDB

4paradigmApache-2.0活跃维护

开源机器学习数据库,提供特征平台,为训练和推理计算一致的特征,解决特征工程与线上线下特征不一致的问题。

OpenMLDB is an open-source machine learning database that provides a feature platform computing consistent features for training and inference.

v0.9.3发布于 2025-02-21 06:58 UTC1,717star +1 / 7 天335fork同步于 2026-11-10 11:47 UTC

怎么上手

由 README 提炼,执行前请确认
README 未给出具体安装命令,仅指向 GitHub release 下载页与官方安装部署文档
硬件要求按 README 说明

README 未说明

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

开源机器学习数据库,用 SQL 统一特征工程,让训练与推理特征保持一致

开源机器学习数据库,提供特征平台,为训练和推理计算一致的特征,解决特征工程与线上线下特征不一致的问题。

核心能力

  • 用统一执行计划生成器保证离线训练与在线推理特征一致
  • 自研实时 SQL 引擎针对时序数据优化,毫秒级产出实时特征
  • 以 SQL 定义和管理特征,扩展 LAST JOIN、WINDOW UNION 语法
  • 提供分布式存储计算、故障恢复、高可用与平滑扩容等生产能力
  • 支持 Kafka、Pulsar、RocketMQ 等实时数据流接入

容易踩的坑

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

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.9.3
  1. 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

  2. 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)
  3. 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)
  4. 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_value which will be compatible with ANSI SQL(#3861 @aceforeverd)
    • Set execute_mode default to online which was offline before 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)
  5. v0.8.52024-02-27 · 2024-02-27 13:46 UTC
    查看更新说明

    Features

    • Support Iceberg as an offline storage (#3737 @vagetablechicken)
    • Support UNION ALL statement (#3590 #3653 @aceforeverd)
    • Support SELECT ... INTO OUTFILE to OpenMLDB online tables (#3616 @tobegit3hub)
    • Support LAST JOIN and WINDOW without ORDER BY in offline mode (#3619 @aceforeverd)
    • Support CREATE/ALTER/DROP USER statement (#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/absorlat TTL 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 FlexibleRowBuilder will throw a NullPointerException if 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 GetAllDbs fails. (#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
    

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    openmldb_logo

    build status docker pulls slack discuss release license gitee maven central maven central pypi

    English | 中文

    Content

    1. Our Philosophy
    2. A Feature Platform for ML Applications
    3. Highlights
    4. FAQ
    5. Download and Install
    6. QuickStart
    7. Use Cases
    8. Documentation
    9. Roadmap
    10. Contribution
    11. Community
    12. Publications
    13. 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.

    workflow

    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

    1. 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.

    2. 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.

    1. 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.

    2. 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

    6. QuickStart

    OpenMLDB 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 CasesToolsBrief Introduction
    New York City Taxi Trip DurationOpenMLDB, LightGBMThis 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 PulsarOpenMLDB, Pulsar, OpenMLDB-Pulsar connectorApache 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 KafkaOpenMLDB, Kafka, OpenMLDB-Kafka connectorApache 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 RocketMQOpenMLDB, RocketMQ, OpenMLDB-RocketMQ connectorApache 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 DolphinSchedulerOpenMLDB, DolphinScheduler, OpenMLDB task pluginWe 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 DetectionOpenMLDB, XGBoostThis demo uses OpenMLDB and XGBoost to detect click fraud for online advertisements.
    SQL-based ML pipelinesOpenMLDB, Byzer, OpenMLDB Plugin for ByzerByzer 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 AirflowOpenMLDB, Airflow, Airflow OpenMLDB Provider, XGBoostAirflow 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 marketingOpenMLDB, OneFlowOneFlow 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

    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.

    Open in Gitpod

    11. Community

    12. Publications

    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!