YashanDB PL 引擎

简介: YashanDB PL 引擎

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

相关文章
|
SQL 缓存 安全
Android ORM 框架之 greenDAO
Android ORM 框架之 greenDAO
902 0
|
8月前
|
数据库 文件存储 数据安全/隐私保护
YashanDB redo日志文件管理
YashanDB的redo日志文件用于记录数据库物理日志,支持宕机重演和主备复制。 redo日志有4种状态:NEW(新创建)、CURRENT(当前写入)、ACTIVE(未归档或未写盘)和INACTIVE(可复用)。可通过V$LOGFILE视图或直接查看$YASDB_DATA/dbfiles目录来管理redo日志。此外,支持添加、切换和删除redo日志以优化性能或应对磁盘故障等情况,但需注意仅能删除INACTIVE或NEW状态的日志以确保数据安全。
|
8月前
|
Oracle 关系型数据库 Linux
YashanDB异构数据库链接配置
本指南介绍在YashanDB中配置异构数据库链接(DBLINK)的方法,特别是连接至Oracle数据库的前置要求与步骤。需确保YashanDB服务端安装plugin插件包、Oracle Instant Client及libaio库,否则可能导致错误或进程崩溃。文档还提供了Oracle Instant Client和libaio库的具体安装指导,帮助管理员顺利完成配置。
|
8月前
|
存储 监控 数据库
YashanDB SYSAUX表空间管理
YashanDB 的 SYSAUX 表空间是 SYSTEM 表空间的辅助表空间,作为许多特性(如快照信息)的默认存储区域。其大小由组件功能和数据库负载决定,可减少表空间数量与 SYSTEM 表空间的压力。尽管核心功能在 SYSAUX 不可用时仍运行,但相关功能可能受限。建议管理员监控和清理以避免过度增长。文档提供了添加、删除数据文件、调整大小及查询占用情况的操作示例,不同部署模式下路径指定规则有所不同。
|
8月前
|
存储 数据库
YashanDB归档日志文件管理
本文介绍了YashanDB中归档日志文件的管理,包括默认存储路径($YASDB_DATA/archive)和文件命名规则。单机部署格式为arch_{resetlogs_id}_{sequence}.ARC,共享集群新增instanceId字段,格式为arch{instanceId}_{resetlogs_id}_{sequence}.ARC。1号节点与单机格式一致。可通过V$ARCHIVED_LOG视图查询相关信息,文件的增删由归档管理操作控制,详情参见官方文档。
|
6月前
|
前端开发 API 开发者
一键抠图有多强?19Kstar 的 Rembg 开源神器,5 大实用场景颠覆想象!
Rembg是一款基于Python的开源抠图工具,利用深度学习模型(U-Net/U-2-Net)实现高质量背景移除。它支持命令行、Python API、服务端API及插件等多种形式,适用于电商商品图、社交头像优化、设计项目图像等场景。凭借高精准度、即插即用特性和全面生态,Rembg在GitHub上已获19.1K星,成为开发者社区中的热门工具。其本地部署特性确保数据隐私,适合专业与商业环境使用。项目地址:https://github.com/danielgatis/rembg。
1870 24
|
10月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
766 0
YOLOv11改进策略【Backbone/主干网络】| 替换骨干网络为:Swin Transformer,提高多尺度特征提取能力
|
10月前
|
缓存 网络协议 安全
即时通讯初学者必知必会的20个网络编程和通信安全知识点
即时通讯IM应用开发的初学者很容易迷失在网络编程的复杂性以及通信安全的各种概念里,本文不涉及深度理论知识,尽量通过一句话或几句话让你快速了解20个相关的网络编程和通信安全知识点,希望能助你愉快地开始即时通讯应用开发。
467 0
|
9月前
|
设计模式 缓存 Java
重学Java基础篇—Java对象创建的7种核心方式详解
本文全面解析了Java中对象的创建方式,涵盖基础到高级技术。包括`new关键字`直接实例化、反射机制动态创建、克隆与反序列化复用对象,以及工厂方法和建造者模式等设计模式的应用。同时探讨了Spring IOC容器等框架级创建方式,并对比各类方法的适用场景与优缺点。此外,还深入分析了动态代理、Unsafe类等扩展知识及注意事项。最后总结最佳实践,建议根据业务需求选择合适方式,在灵活性与性能间取得平衡。
607 3
|
10月前
|
数据采集 缓存 NoSQL
布隆过滤器原理和使用场景
布隆过滤器(Bloom Filter)是一种高效的空间节省型数据结构,用于判断元素是否存在于集合中。它通过多个哈希函数将元素映射到位数组,查询时检查对应位是否全为1。优点是空间效率高,缺点是有一定误判率。典型应用场景包括缓存穿透防护、垃圾邮件过滤、黑名单管理及去重等。Java实现中使用BitSet和自定义哈希函数,而Guava和Redis也提供了布隆过滤器的实现。
477 0