Postgres正则表达式性能优化:pg_re2扩展的引入与应用

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

 

本文字数:4947;估计阅读时间:13 分钟

作者:David Wheeler and Philip Dubé

 

 

 

编者按: 本文译自 ClickHouse 原博客。 原文围绕「基于RE2的Postgres高速正则表达式扩展」展开。对于Postgres用户而言,pg_re2扩展的引入为正则表达式操作带来了显著的性能提升。其基于RE2引擎,有望解决传统正则表达式的性能瓶颈。 

 

速度是 ClickHouse 产品设计与工程的核心驱动力。我们对性能的重视,在开发 ClickBench 和 PostgresBench 等基准测试中可见一斑,其中一些已成为行业标准。这种理念自然也贯穿于我们产品的方方面面,甚至延伸至 SQL 函数和运算符。

秉持这一理念,我们推出了 pg_re2,这是一个 Postgres 扩展,旨在为 Postgres 提供基于 RE2 的高速正则表达式功能。你可以通过 PGXN 或 GitHub 安装它;ClickHouse Managed Postgres 已预装此扩展。

安装方式如下:

CREATE EXTENSION re2;

安装后即可开始使用。

SELECT 'HouseQuake' @~ 'Quake\b';
?column? 
----------
 t
(1 row)

有关完整功能列表,请参阅文档(https://pgxn.org/dist/re2/doc/re2.html)。

Postgres 本身已提供丰富的正则表达式运算符和函数。既然如此,为何还要提供替代方案?主要原因有二:速度与兼容性。

 

 

速度需求

 

究其根本,Postgres 和 RE2 的正则表达式引擎基于截然不同的搜索算法。Postgres 的 POSIX 正则表达式采用回溯(backtracking)算法,返回最长匹配结果;而 RE2 则依赖于有限自动机(finite automata)。2010 年,Russ Cox 在其宣布 RE2 的文章中总结称:

RE2 证明,利用自动机理论几乎可以实现像 PCRE 这样的现代回溯正则表达式库的所有功能。由于其深植于自动机理论基础,RE2 在执行时间上提供了比临时实现更强的保障,并支持那些临时实现难以或无法完成的高级分析。最后,RE2 是开源的。祝您使用愉快!

鉴于这些发现,ClickHouse 的字符串搜索、字符串替换、字符串提取 和字符串分割功能均以 RE2 为基础。我们也希望为 Postgres 用户带来同样优势。

 

 

基准测试

pg_re2 项目 中包含一个基准测试,旨在比较其基于 RE2 的正则表达式函数与 Postgres 原生函数的实际性能。下图总结了在运行 PostgreSQL 18 的 AWS m6g.2xlarge 实例上的横向加速倍数:

 

测试结果如下:

• RE2 在所有测试中均表现出色 ,性能达到 Postgres 的 1.8 倍至 8.6 倍。

• 最大的性能提升来自 extract_all (7.2-8.6 倍)。该函数直接返回数组,与 Postgres regexp_matches(..., 'g') 函数因返回集合而产生的 坦承不公平的 额外开销相比,优势显著。

索引

pg_re2 v0.4.0 新增了匹配运算符 @~,作为 Postgres ~ 运算符的补充。此外,它还增加了 btree 和 GIN 索引支持,以减少评估 RE2 正则表达式时所需的表扫描。第二个基准测试比较了在同一服务器上 RE2 与 Postgres 正则表达式索引的性能表现:

 

研究发现如下:

• RE2 在所有测试中再次领先 ,相比等效的 Postgres 操作,性能提升了 1.1 到 1.8 倍。

• 对 btree 索引进行 前缀 匹配时,其整体加速效果与全表扫描相似,因为两者都能以原始执行速度处理索引条目。

• gin_re2_ops GIN 操作类受益于收集 RE2 所需的字节等效 三元组 ,甚至包括跨越标点符号的情况。因此,像 error_code=42[0-9] 这类模式可以使用索引,而当 Postgres 的正则表达式使用 pg_trgm 操作类时,则会回退到全表扫描。

• 对于 普通词模式 ,RE2 的 gin_re2_ops 和 Postgres 的 pg_trgm 操作类提取的键相似,且 pg_trgm 较低开销的一致性检查可能更具优势(参见上文的 error_code=123 )。

总体而言,Russ Cox 提出的性能改进在 Postgres 的正则表达式中同样适用。

 

 

高度兼容

创建 pg_re2 的第二个原因是为了与 ClickHouse 正则表达式函数兼容。事实证明,RE2 不仅速度有别,其语法也与 Postgres POSIX 表达式存在差异。这些差异至关重要,因为 pg_clickhouse v0.2.0 为多个 PostgreSQL 运算符和函数添加了下推(pushdown)支持。这对于简单的正则表达式效果良好:

SELECT id, by FROM log.entries WHERE by ~ 'Click' ORDER BY id;
id |     by     
----+------------
  1 | ClickHouse
  5 | MouseClick
 (2 rows)

如果你想尝试这些示例,下面的例子使用了这个 ClickHouse 表:

CREATE TABLE entries (
    id UInt32 NOT NULL,
    by String NOT NULL
) ENGINE = MergeTree ORDER BY (id);

INSERT INTO entries VALUES
    ( 1, 'ClickHouse' ),
    ( 2, 'HouseQuake' ),
    ( 3, 'HouseQuake' ),
    ( 4, 'QuakerOats' ),
    ( 5, 'MouseClick' );

以及 Postgres 中的这个 pg\_clickhouse 外部表配置:

CREATE EXTENSION pg_clickhouse;
CREATE EXTENSION re2;
CREATE SERVER ch FOREIGN DATA WRAPPER clickhouse_fdw OPTIONS(driver 'binary');
CREATE USER MAPPING FOR CURRENT_USER SERVER ch;
CREATE SCHEMA log;
IMPORT FOREIGN SCHEMA "default" FROM SERVER ch INTO log;

它也适用于简单的锚定表达式,例如 `^` 和 `$`:

SELECT id, by FROM log.entries WHERE by ~ '^House' ORDER BY id;
    id |     by     
    ----+------------
      2 | HouseQuake
      3 | HouseQuake
    (2 rows)

    但有时 pg\_clickhouse 会返回意想不到的结果:

    SELECT id, by ~ 'Quake\b' FROM log.entries WHERE by ~ 'Quake\b';
    id | ?column? 
    ----+----------
      2 | f
      3 | f
    (2 rows)

      在此例中,`by ~ 'Quake\b'` 在 `WHERE` 子句中会被下推到 ClickHouse 执行,并对两行数据返回 true;但在 SELECT 列表中执行的相同表达式(它在 Postgres 中执行),结果却出人意料地返回 false。这究竟是为何?

       

       

       

      Postgres POSIX 与 ClickHouse RE2

       

      这个令人费解的结果源于两个引擎之间的差异。在 ClickHouse 中,\b 代表词边界,而在 Postgres 中它代表退格字符。因此,下推到 ClickHouse 的 `WHERE` 表达式返回真,但在 Postgres 中执行的 SELECT 表达式则不返回真。

      这两个引擎之间存在诸多此类差异。许多反斜杠(\)特性在两者中的工作方式不同,或仅在其中一个引擎中存在:

       

      两者都支持通过 (?xyz) 或作为 Postgres 函数的额外参数来传递标志。然而,这些标志的差异也十分显著:

       

      两个引擎都支持的标志,其表述虽有不同,但*似乎*会产生等效行为。例如,PostgreSQL 的术语“非换行符匹配”意味着模式对换行符不敏感,因此*确实*匹配换行符。这些文档差异使得在没有实际测试的情况下,难以验证其行为。

      此外,还有一些例子:

      • ClickHouse 不支持任意的先行断言或后行断言 ((?=re), (?!re), (?<=re), and (?<!re))

      • ClickHouse 不支持反向引用 (\1, \2, etc.),例如用于匹配引号的 (["'])(.*?)\1;但在替换表达式中,两者都支持反向引用。

      • 排序规则和区域设置决定了 Postgres 字符类中包含哪些非 ASCII 字符,而 ClickHouse RE2 字符类只包含 ASCII 字符。

       

       

      影响

      这些差异只是两个正则表达式引擎之间诸多区别中的一小部分。显然,在查询 pg\_clickhouse 表时,必须警惕这些差异。务必彻底测试你的正则表达式,尤其是在使用标志、字符类和反斜杠特性时。

      为了简化问题(或者可能制造 两个问题(https://regex.info/blog/2006-09-15/247 "Source of the famous “Now you have two problems” quote")),我们在 pg\_clickhouse v0.3.0 中增加了 pg\_re2 函数的下推功能。与下推 Postgres 正则表达式函数相比,在 pg\_clickhouse 表的列中使用 pg\_re2 函数具有多项优势:

      • 无需判断是否发生下推,因为两个数据库上的行为一致。

      • RE2 提供渐近更优的性能,这一点我们已在 前文 提及。

      • 对于 ClickHouse 用例,只需处理一种正则表达式语法。

      当我们回顾本节开头提到的那些意想不到的结果时,这些优势便会显而易见:

      SELECT id, by ~ 'Quake\b' FROM log.entries WHERE by ~ 'Quake\b';
      id | ?column? 
      ----+----------
        2 | f
        3 | f
      (2 rows)

      再次强调,~ 运算符下推到 ClickHouse 时返回 true,但在 Postgres 中执行时返回 false。将 Postgres 的 ~ 运算符替换为 re2 扩展的 re2match() 函数后,它仍会下推至 ClickHouse 的 match function:

      SELECT id, re2match(by, 'Quake\b')
      FROM log.entries where re2match(by, 'Quake\b');
      id | re2match 
      ----+----------
        2 | t
        3 | t
      (2 rows)

      但由于 re2 扩展与 ClickHouse 使用相同的 RE2 库,查询现在能够返回一致的结果:re2match() 在 Postgres 中执行时返回 true,下推到 ClickHouse 执行时也返回 true。

       

       

      开始使用

      re2 扩展 的开发宗旨,是将 Postgres 与 ClickHouse 整合为一个协同工作的高性能数据平台。为此,它复刻了 ClickHouse 完整的正则表达式函数集,这些函数在 字符串搜索、字符串替换、字符串提取 和 字符串分割 文档中均有描述。此外,其测试套件也借鉴了 ClickHouse 现有的正则表达式测试。

      因此,我们建议在条件允许时,尽可能使用 pg_re2 来提升 Postgres 上正则表达式的执行速度。对于分析查询尤其如此,这有助于确保数据迁移到 ClickHouse 后,性能和下推(pushdown)保持一致。

      关于我们

      ClickHouse 是面向 AI 时代打造的高性能实时分析数据库,能够以极致性能处理海量数据分析任务。凭借高并发、低延迟和云原生架构,ClickHouse 广泛应用于可观测性、数据仓库、实时分析及 AI 数据基础设施等场景。我们致力于帮助企业在公有云平台上构建安全、弹性且高性价比的实时分析与 AI 数据平台,加速释放数据价值,推动智能化创新与数字化转型。目前,Trip.com、DiDi、Meta、Sony、Netflix、Deutsche Bank、Sierra、Cloudflare 等全球领先企业均在使用 ClickHouse 支撑其关键业务和数据分析平台。

       

      从轻量化到高精度:3DXML 转 STP 的工程数据升级技术指南 本文详细解析了3DXML转STP格式的工程数据升级技术,对比了两种格式在轻量化和高精度方面的特性差异,并提供了CATIA、FreeCAD及Python编程等多种专业级转换方案。通过实际案例展示了如何确保转换过程中的数据精度,适用于CAD设计、精密制造等场景,帮助工程师实现工程数据的高效升级。 阅读详情

      相关推荐

      从亚稳态到流片失败:SpyGlass CDC在5G芯片设计中的避坑指南

      本文深入探讨了在复杂5G芯片设计中,如何利用SpyGlass CDC工具构建高效的时钟域交叉验证流程,以避免因亚稳态问题导致的流片失败。文章结合实战经验,详细解析了从约束编写、时钟复位完整性检查到层次化验证和特殊场景处理的全过程,并强调了精准的检查约束是确保验证有效性的基石,旨在帮助设计团队安全跨越异步时钟域的雷区。

      weixin_29168153的博客 444

      Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

      本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

      BADAO_LIUMANG_QIZHI的博客 199

      TMC步进电机驱动stealthChop

      经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。

      那可真是太开心了的博客 4489

      Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

      Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

      要努力去发光,而不是被照亮~ 130

      wpa_supplicant EAPOL状态机分析

      wpa_supplicant EAPOL状态机分析

      加油鸭 1476

      【调优】OpenClaw从零开始高阶调优之skill篇

      本文详细解析了OpenClaw技能系统的核心机制。首先介绍了技能的分层加载逻辑,按照优先级从高到低依次为:工作区专属技能、全局共享技能、出厂自带技能和自定义路径技能。通过流程图展示了从扫描到注册的完整加载流程,并解释了同名技能覆盖规则。随后深入剖析了SKILL.md文件结构,包含YAML元数据定义技能属性和Markdown正文说明使用方法,以公众号写作技能为例展示了具体配置。文章还提供了技能优先级切换的实用技巧,帮助用户灵活管理不同版本的技能。

      海兰 239

      Docker Compose:搭建本地多服务开发环境

      从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

      m0_62221377的博客 461

      rk3588主板PDM接口接数字MIC录音

      本文介绍了Rockchip 3588平台上6麦克风PDM接口的硬件连接与软件调试过程。硬件方面展示了PDM0_CLK0_M0时钟脚和三组数据脚的连接方案。软件配置包括设备树修改,生成声卡节点,并提供了6通道录音命令示例。文章重点分析了两个常见问题:录音无声(需检查供电、接线和波形)和通道数据缺失(需正确配置rockchip,path-map寄存器映射)。最后通过Audition工具验证录音文件,确认各通道工作正常。调试过程完整展现了从硬件连接到软件配置的完整流程。

      m0_60805802的博客 1014

      AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

      ⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

      源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 411

      OpenOCD入门到精通:第 4 章 配置文件体系详解

      本文深入解析OpenOCD配置文件的体系结构和工作机制。首先介绍了配置文件的搜索路径优先级和加载顺序,以及配置阶段与运行阶段的区别。然后详细分析了interface配置文件的适配器参数调优方法,包括ST-Link、CMSIS-DAP和FTDI等常见调试器的配置示例。最后重点讲解了target配置文件的核心结构,包括TAP声明、目标创建和工作区设置等关键步骤,并以stm32f1x为例展示了完整的配置流程。通过本文可以全面了解OpenOCD配置文件的分层设计理念和参数化配置方法。

      从事嵌入式linux android驱动开发,拥有全栈能力 594

      uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

      vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

      🏆 前端领域优质创作者 4438

      数据库主键选型指南:BIGINT vs VARCHAR

      主键选型关乎数据库性能与架构演进。BIGINT(如雪花算法)在顺序写入、二级索引开销和分布式生成上优势显著,适合高并发核心链路;而传统 VARCHAR UUIDv4 因随机性导致频繁页分裂、存储膨胀,性能堪忧。UUIDv7 通过时间戳有序性实现高效追加写入,结合 BINARY(16) 存储可兼顾性能与安全,成为现代微服务新选择。关键在于:主键应稳定、无业务含义,优先选用趋势递增的紧凑类型,并根据场景合理采用双主键模式或 ULID 等替代方案。

      小李同学的博客 301

      COMSOL介电弹性体数值仿真指南:预拉伸圆形DEA的稳态变形分析(II)

      本期博客是《COMSOL介电弹性体数值仿真指南》系列博客中的一期。聚焦于介电弹性体驱动器(DEA)中最为经典的预拉伸圆形DEA驱动器构型,对其在COMSOL平台中的具体建模步骤进行介绍与讨论。

      忘了面孔的Batou 353

      自动化运维选型:四条技术路线的能力边界,以及它们为什么不能互相替代

      自动化运维怎么选型?拆解配置管理、基础设施即代码、作业调度与场景化编排四条技术路线边界,分析账本归属与时间语义差异,给出四种架构组合与判断点,帮企业看清为何不能互相替代。

      trainsignalcn的专栏 327

      IDEA的使用指南

      IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

      蓝牙模块HM-10手册

      蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

      C++算法(七)

      C++ stack算法题和一些客观题

      2503_94479566的博客 370

      霍尼韦尔SoftMaster使用说明

      霍尼韦尔SoftMaster使用说明

      不用再为文本搜索单独维护一套系统!全文检索深度解析

      为了给商品、客服工单或者企业知识库增加一个搜索框,企业往往需要在业务数据库之外,再部署一套Elasticsearch。数据库保存商品、订单和用户等真实业务数据,搜索引擎保存另一份文本索引;两套系统之间,还需要通过CDC、消息队列或者同步程序持续传输数据。一个看似简单的搜索需求,最后可能变成两套集群、两份数据和一条必须保持稳定的数据链路。由此产生的问题并不少:数据库已经完成更新,搜索结果却可能尚未同步;业务查询同时涉及文本、库存、权限和订单状态时,应用需要在两个系统之间来回组合结果;

      TiDB 社区干货传送门 254

      win10 跳过U8环境检测的IE WebControls.rar

      win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

      IDEA 简介:从零认识 IntelliJ IDEA

      IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

      ztI10的博客 153

      48-逻辑结构表空间段区块

      默认 10%,意思是块里的空闲空间低于 10% 时就不再插入新行,留着给已有行的 UPDATE 变胖用。注意 INSERT 过程中每次申请新区,都是一次潜在的空间报错点,如果表空间满了,此刻就会抛 ORA-01653。剩下的空间被谁占了?段的每个区可以落在表空间的任一数据文件,所以 2T 的表在 32G 单文件上限(smallfile)的世界里照样能活——多加文件就行。,一张只有两个 CLOB 字段的表,实际在库里是三个段(表段 + 两个 LOBSEGMENT),空间统计漏算 LOB 段是新手常犯的错。

      yuhou25的博客 286

      市场调查与统计分析专业大学期间考证怎么安排?

      市场调查与统计分析专业的考证规划,适合从一份完整的调查报告倒推:能不能设计问卷、判断样本是否合理、清洗数据,再把分析结果转化为业务建议?围绕这条能力链安排证书,比单纯按“热门程度”报名更有针对性。结合2026年的学习安排,并为2027年的实习、升学和求职预留时间,大学期间可以重点考虑六类证书:全国计算机等级考试证书、大学英语四级或六级成绩报告单、CDA数据分析师、初级统计专业技术资格证书、微软办公软件国际认证中的Excel相关证书,以及软考数据库系统工程师资格证书。

      cc572502653的博客 159

      Oracle 19c 在线重定义后旧表空间清理及 ASM 存储资源回收 SOP

      Oracle 19c 在线重定义后旧表空间清理与 ASM 存储资源回收 SOP

      「YYL DBA手记」 数据库 · 架构 · 运维 · 实战 yyldba.blog.youkuaiyun.com 487

      大表 ALTER TABLE 怎么做?NineData OnlineDDL 配置与执行实践

      介绍NineData OnlineDDL大表变更实践,涵盖执行策略、切表控制、拷贝批次与可视化进度追踪。

      dbasenewbie的博客 271

      从事件风暴到因果收敛:Mopheus多智能体协同事件触发架构与防循环实践

      在构建生产级多智能体协同引擎的过程中,我们总结了三条核心工程准则:1.不可变因果链优于事后关系反查在高度并发且异步的多智能体网络中,因果关系的追溯绝不能依赖事后查库反查关联;将只增的因果祖先链显式封装在事件载荷与任务上下文中,以O(1)的内存检查实现确定性极高的闭环防范。2.生产端纯粹广播与消费端前置极速过滤是高吞吐的基石遵循严格的Pub/Sub模式,让核心业务实体与下游智能体编排解耦;通过调度层内存条件字典求值(conditions),在纳秒级内过滤掉99%的无关事件,保障零业务侵入与极高的系统吞吐。

      weixin_54551388的博客 240

      Spring事务和事务传播机制

      3. 可重复读(REPEATABLE READ): 事务不会读到其他事务对已有数据的修改, 即使其他事务已提交. 也就可以确保同⼀事务多次查询的结果⼀致, 但是其他事务新插⼊的数据, 是可以感知到的. 这也就引发了幻读问题. 可重复读, 是 MySQL 的默认事务隔离级别.p1事务可以认为是⽗事务, 嵌套事务是⼦事务. ⽗事务出现异常, ⼦事务也会回滚, ⼦事务出现异常, 如果不进⾏处理, 也会导致⽗事务回滚.

      txxzjmzlh的博客 205

      Redis 入门详解:核心特性、重要文件与全局命令实战

      本文系统介绍了Redis的核心特性、重要文件及全局命令。Redis凭借内存存储、C语言实现和单线程设计,具备极高的读写性能;支持持久化(RDB/AOF)、主从复制与集群架构,适用于缓存、排行榜、计数器等场景,但不适合存储海量冷数据。文中还解析了常见面试题,如为何快速、单线程原理、持久化机制、KEYS *禁用原因及过期键处理策略,强调其在高并发场景下的优势与局限。

      2303_77004089的博客 198

      【FDE前沿部署工程师实战教程】第62章:Enterprise AI Developer Platform——企业级 AI 开发者平台与低代码 AI 应用工厂

      企业从AI能力平台迈向AI应用生产平台,需构建统一的企业级AI开发者平台,将模型、RAG、Agent、Workflow等能力封装为可视化、可复用的开发工具。通过PromptIDE、AgentBuilder、WorkflowBuilder等模块,实现低代码与专业代码协同,降低开发门槛。平台覆盖应用全生命周期管理,集成测试评估、安全治理与CI/CD发布体系,推动AI应用规模化、标准化交付。最终形成“需求→设计→开发→测试→发布→运营”的企业AI应用工厂模式,助力制造等行业的智能化转型。

      IT古董 306

      SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路

      # SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路 > 这是一套基于 Spring Boot 的美容院管理系统源码,配套 `db.sql` 建表脚本,业务覆盖美容项目预约、美容用品销售、购物车、订单流转、收货地址、库存销量统计,以及技师/前台/会员三类内部角色的业绩统计。形态是**前后台双端**:前台是顾客和会员用的商城站,后台是管理员、技

      面朝大海 237
      上一篇: 基准与蒙昧主义:一条不应逾越的“红线”
      下一篇: ClickHouse 托管版 Postgres 的大页配置与性能优化实践
      ClickHouseDB
      博客等级 码龄3年 1707粉丝 320原创
      评论
      成就一亿技术人!
      拼手气红包6.0元
      还能输入1000个字符
       
       条评论被折叠 查看
      添加红包

      请填写红包祝福语或标题

      个

      红包个数最小为10个

      元

      红包金额最低5元

      当前余额3.43元 前往充值 >
      需支付:10.00元
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付元
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

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

      余额充值