写点什么

YashanDB PL 引擎

作者:YashanDB
  • 2025-02-14
    广东
  • 本文字数:1118 字

    阅读完需:约 4 分钟

本文内容来自 YashanDB 官网,原文内容请见https://doc.yashandb.com/yashandb/23.3/zh/概念手册/YashanDB体系架构/PL引擎.html


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 对象,将直接执行该对象并返回结果。

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB PL引擎_YashanDB_InfoQ写作社区