技术内幕|RisingWave + MindsDB——利用 AI/ML 获得更有洞察力的数据分析

1. 背景

想象一下,一个数据工程团队在多年的投入下,构建了一套实时流计算链路,数据仓库体系,以及数不清的报表。但随着业务的增长,他们开始不局限于传统的指标,而是希望用 AI/ML 来提供更加深入的数据分析。

MindsDB 就是填补这个需求的桥梁,它将数据库与模型训练串联起来,以一个中间件的形式帮助 AI 开发者们降低开发门槛。

MindsDB 的一个关键能力就是对许多数据源的支持 ,包括像 PostgreSQL、MySQL 等关系数据库。它统一了数据接入层,这样一来大家就不再需要用好几种不同的工具来处理数据。

在这一理念下,MindsDB 对 RisingWave 的支持也变得理所应当。对开发者而言,RisingWave 与 MindsDB 的集成打开了一些独特的机会:

  • 训练你的流式数据: RisingWave 核心的物化视图概念给予了用户对流处理结果的读取能力。在模型训练阶段前,用户往往会对数据进行实时清洗和加工,或者是与多个数据源相互关联,形成更完整的数据后,再导入到模型中。RisingWave 则是统一了前期的预处理,而 MindsDB 可以通过 Postgres 接口无缝地读取 RisingWave。在这一套架构内只存在 2 个系统,这使得系统维护变得非常轻量。
  • 将模型训练的负载与其他业务解耦: 在行业普遍的架构中,一个系统往往只服务于一种类型的负载,如 OLAP 分析,流计算,OLTP 处理等。如果在核心的在线数据库上增加模型训练的负载,可能就会对其造成稳定性的影响。RisingWave 的存算分离架构将数据放在远端对象存储(如 S3)中,允许单独配置用于服务查询的节点,这使得后台的流计算能够与模型训练在物理上隔离,相互之间稳定性毫不影响。

接下来,我们将展示 RisingWave 如何与 MindsDB 结合来解决实际的问题。

2. Demo 1:帮助租房一族了解理想房型的预期租金

我们在这一 Demo 的目标是要分析所有房屋的租赁记录,并总结价格和房型之间的关系。最终,当你给出对理想房型的条件,我们的模型就能推演出预期的租金。

  1. 准备数据:

    首先,我们推荐通过 Docker Compose 来启动 RisingWave 和 MindsDB。如果你想要亲自上手尝试,可以使用我们在这里为您准备的环境

    接着,让我们按以下表结构将一些数据导入到 RisingWave。限于篇幅,让我们先幻想数据已经准备好了吧 😉 。

    sql 复制代码
    CREATE TABLE home_rentals (
        number_of_rooms integer,
        number_of_bathrooms integer,
        sqft integer,
        location varchar,
        days_on_market integer,
        rental_price integer
    );
  2. 接着,创建 MindsDB 模型。我们使用 postgres 连接器来访问:

    sql 复制代码
    CREATE DATABASE example_data
    WITH ENGINE = "postgres",
    PARAMETERS = {
      "user": "root",
      "host": "risingwave-standalone",
      "port": "4566",
      "database": "dev"
    };
    
    CREATE MODEL mindsdb.home_rentals_model
    FROM example_data
      (SELECT * FROM home_rentals)
    PREDICT rental_price;

    在这一步,我们基于 rental_price 列训练了一个回归模型(注意 PREDICT 关键词)。模型的训练不会在命令调用结束后立刻完成,而是需要等待一些时间。具体等待的时间取决于数据量和机器性能。您可以用 DESCRIBE mindsdb.home_rentals_model命令来查看模型状态。

  3. 最后一步,按房型要求来推演其租金 💰 吧

    sql 复制代码
    SELECT rental_price FROM home_rentals_model 
    WHERE number_of_bathrooms = 2 AND sqft = 1000;
    
    --- rental_price
    --- 3968

    在这一数据集里,两卫一千平方英尺(大概 100 平米)的房型价格为 3968。

3. Demo 2:预测未来

相信多数使用 RisingWave 的场景都会与时间打交道。与上述步骤类似,我们同样是准备数据,训练模型,并做出推演。但不同的是,这里我们会使用 MindsDB 的时序模型

sql 复制代码
CREATE MATERIALIZED VIEW house_sales AS
SELECT
  saledate,
  ma,
  type,
  bedrooms
...;

假设我们在 RisingWave 中已经将房型表与销售记录表进行处理,得到了一个物化视图 house_sales,其包含了过去每个季度销售额的 MA(Moving Average)值。

接下来的步骤,我们让模型预测后续趋势,即按照 saledate,预测往后 4 个季度的 MA。

sql 复制代码
CREATE MODEL mindsdb.house_sales_predictor
FROM example_data
  (SELECT * FROM house_sales)
PREDICT ma
ORDER BY saledate
GROUP BY bedrooms, type
WINDOW 8
HORIZON 4;

当模型创建成功后,我们就可以按需查询。

vbnet 复制代码
SELECT m.saledate AS date, m.ma AS forecast
FROM mindsdb.house_sales_predictor AS m
JOIN example_data.house_sales AS t
WHERE t.saledate > LATEST
AND t.type = 'house'
AND t.bedrooms = 2
LIMIT 4;

4. 结论

经由 RisingWave 处理的流数据在许多企业中具有非常高的分析价值。得益于 RisingWave 的存算分离架构,MindsDB 在 RisingWave 之上进行模型训练是可行且稳定的。同时,RisingWave 充分支持 PostgreSQL 接口,所以 MindsDB 能无缝地进行接入。

随着实时流处理以及 AI/ML 两个领域各自释放其动能,相信未来 RisingWave 和 MindsDB 两者的结合会为数据工程团队带来更多的价值。

关于 RisingWave

RisingWave 是一款分布式 SQL 流处理数据库,旨在帮助用户降低实时应用的的开发成本。作为专为云上分布式流处理而设计的系统,RisingWave 为用户提供了与 PostgreSQL 类似的使用体验,并且具备比 Flink 高出 10 倍的性能以及更低的成本。

🔧如果你还不知道如何上手 RisingWave,请体验中文入门教程:www.risingwavetutorial.com/

💻想要更深入地理解并使用 RisingWave,请阅读中文用户文档:zh-cn.risingwave.com/docs

相关推荐
wx7408513269 分钟前
小琳AI课堂:机器学习
人工智能·机器学习
YesPMP平台官方19 分钟前
AI+教育|拥抱AI智能科技,让课堂更生动高效
人工智能·科技·ai·数据分析·软件开发·教育
Data-Miner19 分钟前
196页满分PPT | 集团流程优化及IT规划项目案例
大数据·数据分析
阿华的代码王国20 分钟前
MySQL ------- 索引(B树B+树)
数据库·mysql
鸽芷咕38 分钟前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
Hello.Reader1 小时前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯1 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
yanglamei19621 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
qq_15321452641 小时前
【2023工业异常检测文献】SimpleNet
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·视觉检测
工作中的程序员1 小时前
ES 索引或索引模板
大数据·数据库·elasticsearch