ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB PL 引擎

YashanDB PL 引擎

原创 国内数据库 作者:崖山数据库系统YashanDB 时间:2025-02-14 17:31:23 0 删除 编辑

本文内容来自 YashanDB 官网,原文内容请见  https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%...

PL 引擎为用户提供了过程化语言编程的平台,基于 SQL 语言扩展过程化能力,包括条件分支、循环,并实现了自定义的过程、函数等,提供了强大的编程能力。

PL 的主要优势有:

  • 提升性能,当应用处理逻辑靠近数据后,能极大减少客户端和服务端的交互次数,显著降低执行的响应时间。
  • 提升开发效率,应用开发时,可以把数据处理的逻辑封装成高内聚低耦合的存储过程或函数接口,共享给多个模块使用。
  • 易于调优,随着数据量的增长,数据库的性能问题会逐步浮现甚至突然爆发,如果数据访问处理相关的逻辑都在存储过程中实现,DBA 能较快识别问题并通过优化 PL 代码立即干预。

#过程体
过程体是过程化语言的最主要载体,当前支持的过程体类型包括:

  • 匿名块
    匿名块是数据库里的一种特殊的 PL 对象,不会被持久化,创建后立即运行。它没有对象名字,不能直接按对象名调用。
  • 存储过程
    存储过程是 PL 语言按过程进行组织的数据库对象形式,类似 Pascal(结构化编程语言)中的过程。
  • 自定义函数
    自定义函数是 PL 语言按函数进行组织的数据库对象形式,简称 UDF,类似 Pascal(结构化编程语言)中的函数。自定义函数包括 PL 语言的自定义函数、外置 JAVA 语言的自定义函数和外置 C 语言的自定义函数。
  • 触发器
    触发器(TRIGGER)是数据库里的一种 PL 对象。创建一个触发器即创建了一个可执行的过程体,但触发器过程体不可以被用户显式调用,只能由一个事件来启动运行,当某个事件发生时触发器会自动隐式运行。
  • 自定义高级包
    自定义高级包是数据库里的一种 PL 对象,简称 UDP。自定义高级包是一组相关的过程、函数、变量、游标和类型等的集合。
  • 自定义类型
    自定义类型(UDT,User Defined Type),相对于数据库内置的类型而言,是由用户定义的数据类型,用于将现实世界的实体建模为数据库中的对象。UDT 与面向对象的编程思想类似,UDT 包含一组属性和方法,用户可以基于数据库内置的基本类型和其他 UDT 类型创建新的 UDT。
  • 定时任务
    定时任务(JOB)是一个根据时间定时触发执行的后台任务。一个定时任务包含如下三个基本要素:JOB 唯一标识、JOB 需要执行的任务、JOB 执行时间及频率。基于这三个要素,提供一系列 PL 语言的过程实现对一个 JOB 的直接操作管理。

#编译与执行
PL 的使用包括编译和执行两个阶段:

  • 编译阶段:将客户端发送的 PL 文本进行词法分析、语法分析得到语义,然后进行基本的合法性校验以及一些必要的优化,此外 PL 中的 SQL 语句部分还需要调用 SQL 引擎的接口进行解析、校验和优化,最终得到可执行的 PL 对象,并缓存在 PL 池(匿名块例外,匿名块会缓存在 SQL 池)。

  • 执行阶段:在执行阶段,如果在 PL 池命中发现可执行的 PL 对象,将直接执行该对象并返回结果。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3072086/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB SQL 引擎
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639991