内容简介:正常应用和数据库交互的过程是这样的,其实我们也可以把部分应用逻辑放到DB端去执行,来提升效率
正常应用和数据库交互的过程是这样的,
其实我们也可以把部分应用逻辑放到DB端去执行,来提升效率
User-defined Function
Stored Procedures
Triggers
Change Notification
User-defined Types
Views
UDF
用户定义的function,往往用于select中,不会修改数据本身
UDF可以用 SQL 实现,也可以用外部语言,右边是PG的例子
Stored Procedure
存储过程,可以理解成在数据库上执行一个脚本
不但可以读还可以操作修改库
存储过程的执行往往直接在命令行执行
Trigger
触发器,按条件去触发逻辑
3个要素,事件类型,事件的范围,什么时候触发
例子,当foo表被改动的时候,往foo audit表里面插入一条audit记录
首先要定义UDF,log_foo_updates
然后定义trigger,foo_updates,时间是在更新前,before update,范围是每一行,for each row
Change Notification
trigger是在数据库内部的操作,如果要把消息通知到外部用户,就需要change Notification
User-Defined Type
一般如果要在数据库里面存储复杂类型,有两种方式
是否有更为优雅的方式?
UDT,了解一下
View
View是虚拟的,其实是一种sql改写,你对view写的sql最终会被改写成对原表的查询sql
所以View不会提升查询性能
最要为了表达方便,比如对一个非常复杂的查询生成一个view,那就不用每次都重复写这个复杂查询
还有用处,不想让别人直接读原表的所有知道,用view做一个过滤,只让他看到他应该看的
View由于是虚拟,所以不存在同步问题,原表更新了,view也会一起更新,因为都是重新查的
这个和Select...Into不同,select into是做snapshot,会把内容真正的写入静态表里面,这样如果原表更新了,snapshot是不会跟着变的
还有一种view
物化视图,这个一般只有在商业化数据库中有实现
物化视图就是做优化,他会materialized部分或全部数据,这样查询view的时候性能就会很好,然后当原表更新的时候,物化视图也要跟着被更新
物化视图如何实现的,有很多方法,比如用trigger,但是高效的实现是很困难的
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
营销三大算法
刘学林、刘逸春、张新春、王颖、余彬晶、刘锦炽、董少灵、沈逸超、王锐睿、孙静若 / 上海交通大学出版社 / 2018-1-31 / 88.00元
未来的营销应该是数字化的,即数字营销。以数据为本,用演算做根,数字营销能够演算生活的方方面面。在数字营销领域,市场的整个投入、产出带来什么东西?企业一定要狠清楚地知道,这是做数字营销的本质。数字营销和企业做生意的本质是一样的,目的都是以投入换取产出。 本书由正和岛数字营销部落编写,基于大量企业的案例与数据,提出了营销三大核心算法与一套全局营销系统,帮助企业CEO与营销人员科学化建立全局营销系......一起来看看 《营销三大算法》 这本书的介绍吧!