彩票走势图

Navicat使用教程:数据库或应用程序是自定义功能的最佳场所吗?

翻译|使用教程|编辑:吴园园|2020-05-12 10:51:20.523|阅读 275 次

概述:在今天的文章中,我们了解到您应该将自定义函数代码放置在最能受益于该技术优势的位置:在需要复杂过程处理的应用程序中以及在需要SQL的数据库中。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

点击下载Navicat Premium最新试用版

确定是在数据库中还是在应用程序代码中创建函数可能是一项艰巨的任务。常常,您不会意识到自己做出了错误的选择,直到制作一个面对面的麻烦为止。更糟糕的是,许多开发人员的决定都是基于对SQL或应用程序编码最熟悉的!更好的方法是依靠技术的优势来指导您的决策。在今天的博客中,我们将在用户定义函数(UDF)和驻留在应用程序端的函数之间进行选择时细分决策过程。

数据库功能

数据库可以完成某些事情,并且会遇到困难。像存储过程一样,函数是用SQL编写的。因此,它们将在SQL出色的任务上表现出色。这是此类任务的列表,以及为什么最好用SQL而不是应用程序代码来完成这些任务:

  • joins:在应用程序代码中,这可能需要复杂的数组操作
  • 过滤数据(即where子句):在代码中,这可能需要大量插入和删除列表中的项目
  • 选择列:同样,在应用程序代码中,这可能需要大量列表或数组操作
  • 集合函数:在应用程序代码中,这可能需要数组来保存值和复杂的切换条件
  • 外键完整性:在应用程序代码中,这可能需要在插入之前进行查询,并假设没有人会访问应用程序外部的数据
  • 主键完整性-在应用程序代码中,这也可能需要在插入之前进行查询,并假设没有人会访问应用程序外部的数据

尝试执行上述任何操作而不是依赖SQL不可避免地导致编写大量代码并降低效率,这转化为更多代码进行调试和维护以及较差的应用程序性能。

另一方面,DBMS不能胜任复杂的过程处理。那就是应用程序代码的领域。这是集成开发环境(IDE)的调试功能(例如VS Code或Eclipse)远远优于数据库开发环境中的任何功能的重要原因。

案例研究

该Sakila样例数据库开发作为一种学习工具,并已广泛应用于整个数据库社区共享。这是一个MySQL数据库,其中包含与虚构的视频租赁商店有关的许多表,视图,存储过程和功能。这些功能之一被称为stocker_in_stock。这是一个UDF,它接受一个stock_id并返回一个布尔值,指示该胶片是否有库存。

这是Navicat Premium的函数设计器中的ventory_in_stock函数定义:

Navicat使用教程:数据库或应用程序是自定义功能的最佳场所吗?

让我们快速运行它以了解其工作原理。

单击执行按钮将弹出一个对话框,以接受输入参数:

结果如下:

值为1表示该影片有存货

现在,考虑如果我们用驻留在应用程序中的功能替换该功能会发生什么。它需要对数据库进行两次调用以执行SQL语句。这将导致额外的网络流量,并要求我们在应用程序内维护SQL。通常,这是一个坏习惯,因为它将数据库和应用程序代码混合在一起。

有兴趣了解有关更多信息吗?您可以免费试用14天,以进行评估!有想要购买正版授权的朋友,欢迎


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP