浅谈GPT在数据库重构项目中的创新应用

这篇具有很好参考价值的文章主要介绍了浅谈GPT在数据库重构项目中的创新应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言:它来了

当我们对《流浪地球2》中人工智能MOSS产生无尽的科幻联想之际,GPT已经通过大规模数据预训练,拥有了理解、生成文本的能力,并在多个行业引发了巨大冲击,从客户服务到市场营销,从医疗健康到教育,都带来了颠覆性的变革,AI元年悄然而至。

在软件研发领域,它能够帮助我们提高开发效率、改善代码质量、代码自动生成吗?本文依托于一个老项目数据库重构的背景,和大家一起探讨下GPT在研发重构过程中的应用实践。

重构:困难重重

已服役十余年的项目,应客户要求去除商业数据库中间件,使用postgreSQL替换Oracle,经过十余年的业务加载和迭代,启动重构存在很大的考验与风险:

  • 数据库方面:数据库中存在大量的存储过程、函数、动态SQL需要进行语法差异转换,并且调用链情况较为复杂,在存过、函数、动态SQL之间存在着互相调用的情况,耦合度比较高。
  • 代码方面:祖传架构方面,老式集群模式的项目下代码工程多,工程中的技术框架经过很多轮的迭代,包含JDBC、MyBatis、FreeMarker、EJB、工厂模式等。业务实现方面,有大量的存过、函数调用,并且SQL的组装无处不在,有字符串拼接、StringBuffer、StringBuilder、mapper.xml、自定义XML等方式。

综合来看,这是一项具有挑战性的任务,技术上没有瓶颈,但实施上困难重重:

  • 代码走查需仔细,否则范围难控制;
  • 对于人员经验要求高,需要熟悉框架,能够识别、发现、解决问题;
  • 大量的SQL和代码改造,具备高度经验化、高重复化的特征;
  • 项目多人员参与,经验参差不齐,如何保障重构质量。

GPT:研发团队小助手

为了提升效率,引入了chatGPT作为研发小助手,并按使用场景给它分了三个角色,看看它具体可以帮我们做什么:

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

下面让我们通过重构中java代码处理的一个典型场景示例,带大家一起感受一下它的魅力:

第一步:准备好需要处理的java代码段,和指令。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

第二步:问答交互式协助,就如同使用钉钉、微信聊天一样,输入上面的代码段+指令,让它帮我们处理。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

最后:AI的响应结果符合预期,并且给出了详细的汇总分析。由此可见,只要指令够准确,它就可以快速完成代码段的分析、改造和总结,效率很高,整体耗时不会超过10秒钟。

盘它:工欲善其事必先利其器

使用过程中发现chatGPT在高度经验化、重复化的任务处理中表现不俗,研发一个以它为底座的重构工具势在必行。细心的你,会发现上面的截图并不是来自需要科学上网的chatGPT,而是源自我们做的接入GPT API的重构小工具。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

自动走查,解决走查困难问题

用内置扫描器来替代人工走查,当前工具预置扫描器已支持java代码、DDL、xml扫描,精确的按任务文件维度,处理一个超大文件,在保证上下文完整的情形下,拆解成符合AI token要求的较小任务单元(代码段)。

对扫描拆解的代码段,按照预置场景下的命中策略,判断是否需要送AI处理,打标识生成真正的待办任务。

这样不再依赖于人工走查和人员经验,既节约了时间,又减少了疏漏,同时一定程度上提升任务转化效率及准确率。

可视化项目管理

传统的数据库重构项目研发管理,代码走查完成后,由研发经理分配到人,现在不需要了。工具提供项目维度的管理,将AI交互使用场景分类,进行场景化管理,场景扫描生成任务后,自动均匀分配给项目研发人员。

例如,Oracle2PostgreSQL的重构项目,包含的两种场景:

  • DDL转换场景:将Oracle数据库中的表、存储过程、函数、视图等DDL导出到文件中,文本扫描器扫描生成DDL转换任务,分配给研发人员进行审核后,就可以直接交给AI处理;
  • 代码工程转换场景:上传或git拉取代码工程并托管,javaparser、文本扫描器会对代码工程做自动走查扫描,将需要处理的java类、mapper.xml文件等,作为任务,分配给研发人员,待审核后,直接交由AI处理。

提供任务可视化及闭环管理,项目管理者在监控界面上对场景任务的分配情况一目了然。

一键AI处理

数据库替换重构项目中,需要研发经理做好技术背调,并输出任务清单,然后对研发团队进行赋能和分配任务,接下来研发人员按包路径维度,结合背调知识库,逐个修改。这样做的缺点是容易代入个人编码习惯,无法标准化,可能会带来不必要的BUG,对业务产生影响。

工具自动化后,研发人员只需要关注分配的任务,按照任务清单对代码段审核,就可以一键送AI处理,AI会响应输出结果代码段或SQL,然后针对预处理后的AI返回结果,进行人工校准,就可以一键复写生成java类和SQL。

人机交互模式,将高度经验化、重复化的部分研发工作,交由AI处理,研发人员做好审核和校验,充分利用了AI编码能力,节约了工作量,同时提升了准确率和代码质量。

干货:一点心得

模型选择:text-davinci-003模型 or gpt-3.5-turbo模型

01 模型和使用场景分析

text-davinci-003是基于GPT-3的模型,适用于广泛的自然语言处理任务,包括对话生成、问题回答、文本摘要和翻译等。它功能强大但相对较慢,适合复杂和深入的文本处理,不要求实时性。

gpt-3.5-turbo是基于GPT-3.5的模型,具有高性能、低延迟的特点。它适用于快速生成文本的场景,如在线聊天机器人、客户支持自动化和内容创作辅助。在对话和短文本方面表现出色,响应速度快。

02 token和频次限制

两种模型对于每分钟调用频次、交互token均有限制。开始我们倾向于选择token大和调用频次高的达芬奇模型,但试验后发现,在转换速率和准确率上gpt-3.5-turbo要远优于达芬奇,可是基于chatgpt更高的时效和性能要求,OpenAI对它做了更多的限流控制。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

综上,gpt-3.5-turbo模型更加适合用于高效率、高质量的生成型任务,在算力性能和实时性方面优势很大,选择接入它没错。

turbo模型速率限制解决方案

turbo的限流控制很让人头疼,于是工具研发中引入了令牌桶算法,支持接入多个apikey,完美解决了限流问题。

令牌桶算法(Token Bucket Algorithm)是一种流量控制算法,用于控制资源访问速率。它是一种经典的算法,常用于网络传输、API限流、请求调度的场景。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

token限制解决方案

提炼出java、xml、DDL文件不同的特征,通过预置的Java类扫描器和文本类扫描器,保障上下文完整性,以及符合交互的token限制。

场景命中策略

openai是收费的,内测中免费账户流量很快就耗费殆尽。如何筛选命中有效内容,把实际需要处理的内容交给它很关键。

基于这些考虑,抽象出了场景的概念,在场景下预置不同的正则表达式策略,并提取符合策略规则的内容/代码段,提交给AI处理。

AI交互指令校准

让我们再接着思考:在特定使用场景下如何设置合理角色和prompt?又怎么固定返回我们想要的结果?

  • 模型选择、加载:需要分析场景任务选择合适的模型,将模型加载到计算环境中,以便进行后续的校准和交互;
  • 样本数据准备:为了进行指令的校准,我们将需要问询的数据整理成样本数据;
  • 指令示例:样本数据和特定的场景指令集,组合形成待校准指令集;
  • 筛选指令:根据不同指令的响应,选择符合预期的指令作为场景的prompt。

人机交互的设计

初版设计思路为:扫描->AI处理->回写,验证后发现存在着准确性、及时率的一些问题,于是我们考虑使用半自动-人机交互模式来解决这些问题,流程优化为:扫描->任务审核->AI处理->任务校准->回写,并且提供差异比对和异常重送的功能,以提升交互准确率。

浅谈GPT在数据库重构项目中的创新应用,gpt,数据库,重构

总结:说点想说的

随着AI的不断发展和应用,其强大的自然语言预处理机制和大数据的魅力,在各个领域展现出巨大的潜力。在代码解释分析、代码生成、知识库检索等方面也拥有无限可能,未来,我们可以期待它作为研发的好帮手,发挥更重要的作用。文章来源地址https://www.toymoban.com/news/detail-709665.html

到了这里,关于浅谈GPT在数据库重构项目中的创新应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 达梦8数据库性能优化思路浅谈

        作为一名DBA,SQL优化是我们工作中必不可少的技能,在投产的系统中,存在大量的SQL语句需要我们分析和快速做出处理。很是考验我们的经验。这些慢SQL的原因有很多,有SQL编码不规范,设计有缺陷,SQL场景未考虑全面,数据量未评估等,预先需要建立索引的表而未设计建

    2024年02月06日
    浏览(41)
  • 大模型时代下向量数据库的创新与变革

    前言: 在当今信息时代,数据库扮演着关键的角色,用于存储和管理各种类型的数据。向量数据库是一种专门设计用于高维数据存储和快速检索的数据库系统。在不断创新和变革后,腾讯云不久前发布了AI原生(AI Native)向量数据库。 向量数据库 作为一种创新的解决方案应

    2024年02月02日
    浏览(42)
  • 向量数据库的崛起与多元化场景创新

    在当今数字化时代,数据被认为是黄金,对于企业、科学家和决策者而言都具有巨大的价值。然而,随着数据规模的不断增长,有效地管理、存储和检索数据变得愈发复杂。这就引入了向量数据库这一现代数据库技术,它可以革命性地改善数据处理和分析的方式…伴随着大模

    2024年02月06日
    浏览(37)
  • 从ES到Nebula:图数据库在反欺诈团案系统中重构实战

    最近带领团队重构了公司内部风控团案系统,特此记录一下!      在金融风控领域,数据的准确性和实时性对于保障业务安全至关重要。随着业务的快速发展,我们面临的挑战是如何优化现有的风控数据存储和处理系统,以适应不断增长的数据量和复杂性。为此,我们团队成

    2024年02月03日
    浏览(45)
  • 浅谈Redis特性和其他数据库的对比

    随着科技发展,数据库多样化,我们最近在做一款抖音的 直播小玩法,是微服务的,用到Redis。 Redis(全称为Remote Dictionary Server)是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代

    2024年02月13日
    浏览(38)
  • 优雅编码!Java与MongoDB的创新数据库架构

    随着现代应用程序对数据存储和处理需求的不断增加,开发人员需要寻找更具创新性和灵活性的数据库架构来满足这些需求。在这样的背景下,Java与MongoDB的结合为开发人员提供了一种创新的数据库架构,为应用程序带来了无限可能。 下面将探讨Java与MongoDB的创新数据库架构

    2024年02月10日
    浏览(43)
  • 云原生 DaaS 服务:实现数据驱动的创新和价值(数据库、缓存、大数据等)

    随着数据在现代企业中的地位不断提升,数据管理和分析成为了业务成功的关键。在这个信息爆炸的时代,如何高效地管理、处理和分析海量数据成为了每个数据企业面临的重要挑战。为了应对这一挑战,云原生数据即服务(DaaS)应运而生,为企业提供了一种全新的数据管理

    2024年04月15日
    浏览(34)
  • 浅谈数据库系统:MySQL的简介与安装配置

    欢迎来到小K的MySQL专栏,本节将为大家带来MySQL的简介与安装配置的详细讲解 ~ 描述事务的符号记录成为数据。 ✨数据是数据库中存储的基本对象,出了基本的数字之外、像图书的名称、价格、作者等都可以称为数据。 列如:在日常生活之中,可以这样描述一本书的信息,《

    2024年02月08日
    浏览(43)
  • 系统架构设计师考试论文:论NoSQL 数据库技术在现代软件项目中的应用与效果

            随着互联网 web2.0 网站的兴起,传统关系数据库在应对 web2.0 网站,特别是超大规模和高并发的 web2.0 纯动态 SNS 网站上已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL(Not only SQL )的产生就是为

    2024年02月11日
    浏览(43)
  • GaussDB数据库SQL系列-SQL与ETL浅谈

    目录 一、前言 二、SQL与ETL的概述 三、ETL过程中的SQL示例(GaussDB) 1、提取(Extract) 2、转换(Transform) 3、加载(Load) 四、附DataArts Studio介绍 五、小结 在SQL语言中,ETL(抽取、转换和加载)是一种用于将数据从源系统抽取到目标系统的过程。ETL过程通常包括三个阶段:抽

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包