Apache Doris 4.1 全面增强 Iceberg:支持 UPDATE、MERGE INTO 与 Iceberg V3

Lakehouse架构实战:云原生实时数仓与SQL化治理落地指南 Lakehouse作为融合数据湖弹性与数仓管理能力的新一代架构,其核心在于通过Delta Lake/Iceberg等开放表格式实现ACID事务、Schema演化与时间旅行,结合Flink/Trino/Spark等引擎协同完成批流一体计算。技术价值体现在显著降低数据错乱率、支持声明式SQL建模及自动血缘追踪,广泛应用于实时风控、电商GMV分析、用户行为洞察等高时效性场景。本文聚焦Lakehouse在云原生环境下的真实落地路径,涵盖S3存储优化、Flink实时建模、dbt SQL化治理、Delta元数据协同等关 阅读详情

在 Lakehouse 架构中,数据通常以开放湖格式(如 Iceberg)存放在对象存储中,并由 Spark、Flink、Trino、Apache Doris 等计算引擎共同管理和访问。这是一套天然的存算分离架构,并且同一份开放数据可以服务于不同的计算场景。

但数据开放,并不意味着操作链路已经统一。围绕同一张 Iceberg 表,之前的分工往往是这样的:Iceberg 做表格式,Spark 负责管理(写入、修改、维护),Doris 负责查询。

这套分工的代价不在性能,而在链路。

假设一名数据工程师在 Doris 中发现某个批次的一条记录存在错误。修复本身可能只需要一条 UPDATE,但他仍需编写 Spark 任务、调整调度配置、提交代码评审,再等待平台团队执行。数据修改只需几秒,整个流程却可能持续十几个小时。

表维护也是如此。CDC 数据持续小批量写入并伴随频繁更新或删除后,小文件和删除信息会逐渐累积。工程师即使知道可通过 rewrite_data_files 优化文件布局,也可能因操作依赖另一套平台,最终将一条 SQL 变成等待排期的跨团队任务。

问题不在于 Iceberg 不够开放,而在于围绕同一张表的查询、修改和维护被拆散在不同系统里——为了完整地操作一张 Iceberg 表,用户必须同时维护两套技术栈。

Apache Doris 4.1 要补齐的,正是缺失的那一半。在已有查询能力的基础上,Doris 进一步支持了 UPDATE、DELETE、MERGE INTO 等数据修改操作、完整的表结构管理与分区演进,以及 rewrite_data_files、expire_snapshots 等日常维护操作,并完整支持 Iceberg V3 格式。分工因此可以简化为:

Iceberg 做表格式,Doris 同时负责管理和查询。

1-doris 前后变化.PNG

用户在查询中定位到问题之后,可以继续在当前 SQL 上下文中修改数据、验证结果并完成后续维护,不必再为了改一行数据而切换到另一套系统。

Apache Doris 在 Iceberg 生态中的定位

此前,Doris 在 Iceberg 生态中主要承担实时查询角色。到了 Apache Doris 4.1,这一角色扩展为覆盖数据读取、修改、表结构演进和日常维护的完整生命周期。

2-生态中的地位.PNG

目前支持的主要范围包括:

3-主要能力表格.png

这并不意味着 Doris 要取代 Spark 或 Flink。Spark 擅长复杂的批处理与跨数据源 ETL,Flink 擅长持续的流式摄入与处理,Doris 擅长高并发、低延迟的实时分析。用户完全可以按照自己的技术栈,继续为每类任务选择最合适的引擎。

改变的是 Doris 的能力边界。过去,只要涉及对 Iceberg 表的任何修改——哪怕只是改一行数据、加一个字段、合一次小文件,用户都必须离开 Doris;现在,从数据查询、数据修改、增量合并,到表结构演进与文件维护,围绕 Iceberg 表的大部分日常工作都可以在 Doris 中直接完成。用户不再因为「Doris 改不了 Iceberg」这一条限制,被迫为同一张表搭起第二套系统。

本文将重点介绍其中两部分内容:Iceberg 表上的主要 DML 操作,以及支撑这些操作长期可用的 Iceberg V3 能力。

在 Doris 中修改 Iceberg 表:DML 与 Iceberg V3

最直观的变化,是用户可以在当前 SQL 客户端中直接修改 Iceberg 数据。

例如,修正查询中发现的错误记录:

UPDATE iceberg_tbl
SET name = 'Alice-fixed'
WHERE id = 1;

删除错误写入的数据批次:

DELETE FROM iceberg_tbl
WHERE dt = '2026-04-01'
  AND source = 'bad_pipeline';

对于 CDC 入湖或增量宽表场景,则可以通过 MERGE INTO 同时表达更新、删除和插入:

MERGE INTO iceberg_tbl t
USING incremental_data s
ON t.id = s.id

WHEN MATCHED AND s.flag = 'D' THEN
    DELETE

WHEN MATCHED THEN
    UPDATE SET
        name = s.name,
        age = s.age

WHEN NOT MATCHED THEN
    INSERT (id, name, age)
    VALUES (s.id, s.name, s.age);

Doris 支持 WHEN MATCHED THEN UPDATE、WHEN MATCHED THEN DELETE 和 WHEN NOT MATCHED THEN INSERT 等常见分支,也支持使用子查询作为数据源。

需要注意的是,Doris 的 UPDATE、DELETE 和 MERGE INTO 只作用于 format-version = 3 的 Iceberg 表(同时需要将 Doris 升级至 4.1 及以上版本)。因为决定这些 DML 能否长期可用的,从来不是「能不能执行」,而是「高频执行之后,这张表会变成什么样」。而这恰好是 Iceberg V3 要解决的问题。

Deletion Vector:让高频 DML 的代价不再累积

Iceberg V3 引入 Deletion Vector,使用位图记录数据文件中已经失效的行,并将相关信息存储在 Puffin 文件中。与为每次操作生成独立 Position Delete 文件不同,对同一数据文件产生的多次删除可以通过 Deletion Vector 统一表达:一个数据文件最多对应一个 Deletion Vector,查询时在扫描数据文件的过程中直接应用对应位图。

4-DML 积压.png

以连续执行两次更新和一次删除为例,V2 中的文件布局可能如下:

+---------+------------------------------------+--------------+
| content | file_path                          | record_count |
+---------+------------------------------------+--------------+
|    0    | .../data/00000-...parquet          |       3      |   <- data
|    1    | .../data/00001-...delete.parquet   |       1      |   <- pos delete
|    1    | .../data/00002-...delete.parquet   |       1      |   <- pos delete
|    1    | .../data/00003-...delete.parquet   |       1      |   <- pos delete
+---------+------------------------------------+--------------+

(在 content 列中,0 表示数据文件,1 表示位置删除文件)

在 V3 中,相同操作可以表现为一个数据文件和一个 Puffin 文件:

+---------+------------------------------------+--------------+
| content | file_path                          | record_count |
+---------+------------------------------------+--------------+
|    0    | .../data/00000-...parquet          |       3      |   <- data
|    1    | .../data/00000-dv.puffin           |       3      |   <- Deletion Vector
+---------+------------------------------------+--------------+

删除信息的文件数量,因此从「随修改次数线性增长」变成「与数据文件数量同阶」,这会直接反映在文件数、存储空间和查询开销上。在原文给出的测试环境和数据布局下,结果如下:

  • 在 16 个数据文件上分多次删除 20% 的数据后,V2 需要处理 16 个数据文件和 320 个删除文件,共 336 个文件;V3 则只需要处理 16 个数据文件和一个 Puffin 文件。
  • 在一亿行、99% 数据被删除的场景中,V2 的删除信息占用约 98 MiB,V3 仅使用一个约 3.8 MiB 的 Puffin 文件,存储空间下降约 96%。

在包含 16 个数据文件、共 100 万行的数据集上,不同删除比例下的查询结果如下:

5-加速比.png

在大文件且 99% 数据被删除的测试中,V3 的查询时间约为 V2 的三分之一。

6-加速前后的趋势图.png

这些结果说明,在测试覆盖的工作负载中,Deletion Vector 能够显著减少删除文件数量与删除信息存储空间,并降低高删除比例下的读取成本。实际收益仍取决于数据规模、文件布局和查询方式。

Apache Doris 4.1 同时支持 Deletion Vector 的读取和写入,而这一点对用户是无感的:面对 format-version = 3 的 Iceberg 表,仍然使用普通的 DELETE、UPDATE 和 MERGE INTO 语法,Doris 会按照 V3 语义生成 Puffin 格式的删除信息,而不是继续堆积 Position Delete 文件。也就是说,前面那几条 DML 语句的代价,不会随着执行次数的增加而持续放大——这正是「在 Doris 里改 Iceberg」能够作为日常操作、而不只是一次性尝试的前提。

Row Lineage:识别真正发生变化的行

Deletion Vector 解决了频繁 DML 的物理开销,但增量同步还需要回答另一个问题:哪些行发生了真实变化?

Iceberg V3 为此增加了两个系统列:

  • _row_id:系统为每一行分配的稳定数值标识。
  • _last_updated_sequence_number:该行最近一次修改对应的序列号。

这两个字段由系统自动维护,用户不能主动写入。初次插入数据时,每一行都会获得自己的 _row_id。当某条记录发生更新后,其 _row_id 保持不变,而 _last_updated_sequence_number 会更新为新的序列号。

Doris 4.1 支持读取这两个系统列,用户可以直接在 SQL 中观察行级变化。例如,创建一张 V3 表并插入三条数据:

CREATE TABLE users_v3 (
    id INT, name STRING, email STRING
) PROPERTIES ('format-version' = '3');

SET show_hidden_columns = true;

-- Step 1: initial insert of 3 rows
INSERT INTO users_v3 VALUES
    (1, 'Alice', 'alice@x.com'),
    (2, 'Bob',   'bob@x.com'),
    (3, 'Carol', 'carol@x.com');

SELECT id, name, email, _row_id, _last_updated_sequence_number FROM users_v3;

查询隐藏列后,可以看到每行的 Row ID 和序列号:

+----+-------+-------------+---------+-------------------------------+
| id | name  | email       | _row_id | _last_updated_sequence_number |
+----+-------+-------------+---------+-------------------------------+
|  1 | Alice | alice@x.com |    0    |              1                |
|  2 | Bob   | bob@x.com   |    1    |              1                |
|  3 | Carol | carol@x.com |    2    |              1                |
+----+-------+-------------+---------+-------------------------------+

更新 Bob 的邮箱后:

-- Step 2: update Bob's email
UPDATE users_v3 SET email = 'bob@newmail.com' WHERE id = 2;

SELECT id, name, email, _row_id, _last_updated_sequence_number FROM users_v3;

Bob 的 _row_id 仍然为 1,而 _last_updated_sequence_number 更新为 2;未被修改的 Alice 和 Carol 保持不变。

+----+-------+------------------+---------+-------------------------------+
| id | name  | email            | _row_id | _last_updated_sequence_number |
+----+-------+------------------+---------+-------------------------------+
|  1 | Alice | alice@x.com      |    0    |              1                |
|  2 | Bob   | bob@newmail.com  |    1    |              2                |  <-- SN++
|  3 | Carol | carol@x.com      |    2    |              1                |
+----+-------+------------------+---------+-------------------------------+

假设下游系统已经处理完序列号 1 对应的数据,并将 1 保存为 Watermark。下一次获取增量数据时,可以查询 _last_updated_sequence_number 大于当前 Watermark 的记录:

SELECT
    id,
    name,
    email,
    _last_updated_sequence_number
FROM users_v3
WHERE _last_updated_sequence_number > :watermark;
+----+------+-----------------+-------------------------------+
| id | name | email           | _last_updated_sequence_number |
+----+------+-----------------+-------------------------------+
|  2 | Bob  | bob@newmail.com |              2                |
+----+------+-----------------+-------------------------------+

查询返回的是 Watermark 之后发生过修改的当前行状态。在该示例中,只有 Bob 会被返回,未发生变化的 Alice 和 Carol 不会出现在结果中。

即使在两次增量查询之间执行了 Compaction 或 rewrite_data_files,单纯的物理文件重写也不会更新 _last_updated_sequence_number,因此不会被识别为一次新的业务数据修改。

本次处理完成后,下游可以将返回结果中的最大序列号保存为新的 Watermark,供下一次查询使用。需要注意的是,这种方式用于识别哪些行在 Watermark 之后发生过变化,并不等同于返回完整的逐次变更事件。

以下是基于 Row Lineage 的增量行识别流程前后对比:

7-row lineage.png

稳定的 _row_id 还可以与 Iceberg Time Travel 配合,用于在不同快照中定位同一条记录。例如,一条订单记录在多次更新后仍然保留相同的 _row_id,用户可以针对不同快照查询该 Row ID,以回看各阶段的记录状态。

但 Row Lineage 并不等同于完整的审计系统。它提供的是稳定的行标识和最近变更序列,修改人、修改原因、审批记录等业务审计信息,仍然需要由外部系统保存。

快速入门:五分钟体验 Doris + Iceberg V3

以下是一条从创建 Catalog 到验证 Deletion Vector 和 Row Lineage 的最简路径。

前置条件:

  • Apache Doris 4.1.0 或更高版本(官网下载或从 Docker Hub 拉取 apache/doris:4.1.0)。
  • 支持 Iceberg V3 的 Catalog。
  • Doris BE 可以访问的对象存储,例如 S3、MinIO、OSS 或 HDFS。

第一步:创建 Iceberg Catalog。在任意已连接到 Doris FE 的 MySQL 协议客户端中执行以下 SQL:

CREATE CATALOG iceberg_v3 PROPERTIES (
    'type'              = 'iceberg',
    'iceberg.catalog.type' = 'rest',
    'uri'               = 'http://your-rest-catalog:8181',
    'warehouse'         = 's3://your-bucket/warehouse',
    's3.endpoint'       = 'https://s3.us-west-2.amazonaws.com',
    's3.access_key'     = '<AK>',
    's3.secret_key'     = '<SK>',
    's3.region'         = 'us-west-2'
);

SWITCH iceberg_v3;
CREATE DATABASE IF NOT EXISTS demo;
USE demo;

第二步:创建 V3 表并执行 DML。

CREATE TABLE orders (
    id INT, status STRING, amount DECIMAL(10,2)
) PROPERTIES ('format-version' = '3');

INSERT INTO orders VALUES (1,'pending',100), (2,'pending',200), (3,'pending',300);

UPDATE orders SET status = 'shipped' WHERE id = 1;
DELETE FROM orders WHERE id = 3;

第三步:验证 Deletion Vector 和 Row Lineage。

-- 检查是否生成 Puffin 格式的 Deletion Vector
SELECT content, file_path, record_count FROM orders$files;

-- 查看 Row Lineage 系统列
SET show_hidden_columns = true;
SELECT id, status, _row_id, _last_updated_sequence_number FROM orders;

如果结果中包含 _row_id 和 _last_updated_sequence_number 两个系统列,则说明当前 Catalog、Doris 和 Iceberg 表已经能够处理对应的 V3 行级信息。

第四步:尝试 MERGE INTO。

MERGE INTO orders t
USING (SELECT 1 AS id, 'delivered' AS status, 110 AS amount) s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET status = s.status, amount = s.amount
WHEN NOT MATCHED THEN INSERT (id, status, amount) VALUES (s.id, s.status, s.amount);

后续规划

Iceberg 生态仍在快速演进,Doris 对 Iceberg 的支持也会继续沿着「管理与查询收敛到同一套系统」这条主线推进。接下来有两项工作已经在设计开发中:

Iceberg Variant 类型的读写。Variant 是 Iceberg V3 引入的半结构化数据类型,用于在不预先定义完整 Schema 的情况下存储 JSON 类数据。Doris 自身已经具备成熟的 Variant 实现与相应的存储、查询加速能力,后续将把这部分能力对接到 Iceberg 表上,支持 Iceberg Variant 列的读取与写入,让日志、埋点、事件等半结构化数据也能直接在 Iceberg 上完成分析,而不必先做一轮打平和建模。

Iceberg 增量物化视图的支持。借助 V3 的 Row Lineage,两次刷新之间真正发生变化的行是可以被准确识别的。基于这一点,Doris 将支持构建在 Iceberg 表之上的增量物化视图:每次刷新只处理发生变化的数据,而不是全量重算,从而以更低的成本维持结果的新鲜度。这也让 Row Lineage 从一个「可以查询的系统列」,变成支撑上层增量计算的基础设施。

结束语

Apache Doris 4.1 将 Iceberg 支持从查询扩展到写入、修改和维护,使用户能够在同一个 SQL 上下文中完成问题定位、数据修正、结果验证和日常维护。对用户来说,最直接的变化是:为了完整地操作一张 Iceberg 表,不再需要同时维护两套系统。

Iceberg V3 是这条路径得以落地的基础。Deletion Vector 让高频 DML 不再持续累积删除文件与读取开销,Row Lineage 则提供了稳定的行标识和变更序列,让下游能够识别真正发生变化的数据。

Spark 和 Flink 依然承担各自擅长的大规模批处理与流式计算任务,这一点不会改变。改变的是 Doris 的能力边界:既然查询已经把用户带到了目标数据面前,接下来的修改、合并与维护,就不应该再迫使用户切换到另一套工具。Lakehouse 中围绕 Iceberg 的分工,正在从「Iceberg 做表格式 + Spark 管理 + Doris 查询」,走向「Iceberg 做表格式 + Doris 管理和查询」。

同时,欢迎体验 SelectDB,SelectDB 是基于 Apache Doris 打造的企业级实时数据仓库,提供更易用、更稳定的云服务与企业级能力

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01 高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。 阅读详情

相关推荐

VLOOKUP_fixed.py

VLOOKUP_fixed.py

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

D打卡签到,蓝牙中继,广播信号模拟器

模拟WIFI或蓝牙,有如下4种运行模式 1、WIFI模式:指定SSID、BSSID名称等,模拟WIFI,供设备连接。 2、蓝牙静态模式:指定MAC地址,广播固定的RAW数据。 3、蓝牙动态主机模式:扫描周围蓝牙设备,获取指定MAC地址的蓝牙及其RAW数据,实时发送至Cloud云端,可以设定时间段,只在设定的时间段内发送。 4、蓝牙动态从机模式:指定MAC地址,从Cloud云端获取动态主机模式实时上传的该MAC地址的RAW数据,并广播RAW数据。 准备工作: 1、板子:选择ESP32C3或ESP32C3 Supermini 2、nRF Connect手机app:用于扫描获取待模拟蓝牙设备的MAC和RAW数据。 Wifi分析仪或WiFi魔盒手机APP:用于扫描获取待模拟WIFI设备的SSID和BSSID。 3、可使用官方flash_download_tool_3.9.11工具来固件烧录。 使用说明: 上述完成后,设备首次上电,RESET一侧的指示灯会常亮,可以把它理解成电源指示灯; BOOT一侧的灯会亮,该灯常亮,表示设备开启了AP模式,此时设备会发射一个WIFI信号源,名称为ESPWIFI_AP,密码为12345678,手机或电脑连接该WIFI,浏览器输入192.168.4.1,进入设备的配置页面,进行相应的配置,其中动态主机模式和动态从机模式的SSID、Pwd 及要模拟的蓝牙MAC地址。配置完成并保存后,会重启,重启后设备会按照保存的配置运行。若下次要修改设备配置,可以长按BOOT按键,等待BOOT一侧的灯常亮,即进入AP模式,再按照上述流程配置即可。 仅用于蓝牙设备的开发与调试,请勿用于签到等违法违纪用途。

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

基于MPC的风储联合调频模型研究(Simulink仿真实现)

内容概要:本文系统研究了基于模型预测控制(MPC)的风能与储能系统联合频率调节模型,并通过Simulink工具实现了完整的仿真验证。文章深入剖析了风储联合系统的整体架构设计,详细阐述了MPC控制器的建模原理及其在电网频率调节中的具体应用机制,重点探讨了系统在应对负荷突变与风电功率波动等典型扰动下的动态响应特性与控制性能表现。通过与传统控制策略的仿真实验对比,充分验证了所提出的MPC方法在提升电网频率稳定性、抑制频率偏差方面的显著优越性,并进一步分析了控制器关键参数对系统整体性能的影响规律,为高性能控制策略的设计提供了理论依据。; 适合人群:具备电力系统分析、自动控制理论基础,熟练掌握Simulink/Matlab仿真环境,从事新能源并网、电力系统稳定控制、储能系统集成与优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高比例可再生能源接入背景下电网频率调节的关键技术研究;②为风储联合系统的规划、设计与运行优化提供先进的控制策略参考;③作为模型预测控制在电力系统领域应用的经典教学案例,深化对MPC预测机制、滚动优化与反馈校正等核心原理的理解与实践能力。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作与验证,重点关注MPC控制器的状态空间建模、预测时域设定、代价函数构建及参数整定过程,通过对比不同工况与参数配置下的仿真结果,深入理解风储系统协同调频的作用机理与MPC控制的优势所在。

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型等

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 Spring Boot, MyBatis, Flowable, TypeScript, Vue, Antdv, 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型、代码生成器等

数据驱动复杂网络的数据驱动控制(Matlab代码实现)

内容概要:本文系统介绍了《【数据驱动】复杂网络的数据驱动控制(Matlab代码实现)》这一技术资源,聚焦于复杂网络系统中基于数据驱动的先进控制方法,依托Matlab平台实现建模、仿真与控制策略开发。内容深入涵盖数据驱动控制的核心原理、Koopman算子理论在非线性系统线性化中的应用、机器学习与动态系统建模的融合机制,以及如何在无需精确物理模型的前提下,利用观测数据构建高效控制器。资源提供了完整的Matlab代码实例,覆盖从数据采集、特征提取、模型辨识到控制器设计与性能评估的全流程,突出在电力系统、智能电网、工业自动化等典型复杂网络场景下的应用潜力与工程可行性。; 适合人群:具备一定Matlab编程能力与自动控制理论基础的研究生、科研人员及工程技术人员,尤其适用于从事数据驱动控制、复杂网络建模、智能优化与系统辨识等方向的高校师生和研发工作者。; 使用场景及目标:① 深入理解数据驱动控制在复杂网络中的理论基础与实现路径;② 借助配套Matlab代码快速搭建仿真环境,开展算法验证与性能对比;③ 应用于电力系统稳定性控制、可再生能源集成、工业过程监控等实际工程问题的研究与优化;④ 支撑高水平学术论文撰写、EI/SCI期刊成果复现与科研项目申报。; 阅读建议:建议读者结合文档中的理论推导与代码实现逐项调试运行,深入剖析Koopman算子、模型预测控制(MPC)等关键算法的实现细节;鼓励在现有代码基础上进行参数调整、模型拓展与创新性改进,强化理论与实践的深度融合,提升科研创新能力。

文创媒体电商行业智算中心(AIDC)建设规划方案.pptx

文创媒体电商行业智算中心(AIDC)建设规划方案.pptx

集团企业数字化转型AI智能体平台规划及场景应用方案.pptx

集团企业数字化转型AI智能体平台规划及场景应用方案.pptx

(Multisim课设资料)最全面函数信号发生器(三角波+正弦波+方波信号+锯齿波仿真设计+报告文档

(Multisim课设资料)最全面函数信号发生器(三角波+正弦波+方波信号+锯齿波仿真设计+报告文档

【运维自动化】shell脚本自动化运维示例2

内容概要:本文介绍了shell脚本在自动化运维中的实际应用,重点展示了一个批量远程执行命令与文件分发的典型场景。通过编写健壮的Shell脚本,实现对多台服务器并行执行指定命令(如磁盘使用情况查询),并集成错误处理、超时控制和并发管理机制,提升运维效率与系统稳定性。脚本采用set -euo pipefail增强容错能力,利用SSH免密登录和xargs并行处理实现高效批量操作,同时强调在受控内网环境中运行以保障安全。; 适合人群:具备Linux系统基础和Shell编程经验,从事运维、DevOps或后端开发工作1-3年的技术人员。; 使用场景及目标:①用于批量服务器状态检查、配置同步、日志收集等日常运维任务;②帮助理解自动化脚本设计中的健壮性要素(如错误捕获、并发控制、安全性考虑)并应用于生产环境。; 阅读建议:此资源提供可直接修改复用的实用脚本范例,建议结合自身运维环境进行适配测试,重点关注SSH安全配置、并发参数调优及异常输出捕获,确保在真实部署中稳定可靠。

【多无人机追捕-逃逸】平面中多追捕者保证实现的分散式追捕-逃逸策略研究(Matlab代码实现)

内容概要:本文针对平面环境中多追捕者对逃逸者的追捕任务,提出了一种保证追捕成功的分散式策略。该策略采用去中心化控制架构,使每个追捕者仅依赖局部感知信息进行独立决策,无需全局协调,从而提升了系统的鲁棒性、可扩展性与实用性。研究深入探讨了追捕者与逃逸者的运动学建模、分散式协同策略的设计原理,并重点分析了实现有效包围与确保收敛性的关键条件。通过Matlab仿真实验,验证了该策略在不同初始分布与动态场景下的有效性与优越性能,尤其在避免碰撞、维持编队与最终围捕方面表现突出。该研究成果可广泛应用于多无人机系统、多机器人协同围捕、智能监控等领域。; 适合人群:具备控制理论、优化算法及Matlab编程基础的研究生、科研人员,以及从事多无人机系统、智能体协同控制、自动化与机器人等领域的工程师和技术人员。; 使用场景及目标:①为多无人机、多移动机器人系统在执行追捕、围堵、安防监控等任务时提供高效可靠的分散式控制解决方案;②研究多智能体系统中基于局部信息的协同博弈与分布式决策机制;③利用Matlab仿真平台复现算法、开展性能测试,并在此基础上进行算法改进与创新,服务于学术研究或工程原型开发。; 阅读建议:建议读者结合所提供的Matlab代码,深入剖析算法实现细节,重点关注追捕者间的协同逻辑、避碰机制与收敛性证明部分,并尝试在不同环境配置和初始条件下进行仿真实验,以全面掌握该分散式策略的性能边界、适应能力与优化潜力。

数字政府一网通办及一网协同AI智能体平台规划方案.pptx

数字政府一网通办及一网协同AI智能体平台规划方案.pptx

WorkBuddy制造业解决方案与16场景案例集.pptx

WorkBuddy制造业解决方案与16场景案例集.pptx

3D表面粗糙度和接触的可视化(Matlab代码实现)

内容概要:本文系统阐述了利用Matlab代码实现3D表面粗糙度与接触行为的可视化方法,通过数值模拟技术对材料表面的微观形貌及其接触力学特性进行三维建模与分析。研究涵盖表面粗糙度的数学建模、接触区域的压力分布计算、真实接触面积求解以及三维图形渲染等核心技术环节,并提供了完整的代码实现流程。该方法能够精确反映表面微结构在受压过程中的变形与接触演化过程,适用于从微米到纳米尺度的界面力学研究,为摩擦学、精密制造和材料科学等领域提供了强有力的仿真与可视化工具。; 适合人群:具备Matlab编程基础,从事机械工程、材料科学、摩擦学、表面工程及精密制造等领域的研究生、科研人员和工程技术人员。; 使用场景及目标:①深入研究材料表面粗糙度对其真实接触面积、接触刚度及应力分布等力学性能的影响机制;②在微纳尺度下模拟复杂表面间的接触过程,为摩擦、磨损、密封及热传导等界面现象建模提供直观的可视化支持;③辅助高校教学与科研成果展示,提升对抽象表面物理概念的理解与表达能力。; 阅读建议:建议读者结合提供的Matlab代码逐行运行并调试,重点关注表面高度场生成算法、接触力学模型(如Hertz理论或数值迭代法)的实现细节以及surf、mesh等三维绘图函数的应用技巧,同时可根据具体研究需求调整表面参数(如Ra、Rq)和加载条件,进一步拓展模型功能。

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

上一篇: AI Observe Stack(基于 Apache Doris):AI Agent 可观测性技术能力、选型对比与实践
下一篇: Apache Doris 实战优化:向量化执行与 CPU 指令级性能调优
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值