《PostgreSQL服务器编程》一一1.10 总结——为什么在服务器中进行程序设计

1.10 总结——为什么在服务器中进行程序设计

我们在服务器端完成大部分数据操作编程工作,主要优势有以下几点。
1.10.1 性能
我们进行基于数据的计算几乎总是性能为王,也就是,我们会努力使获得数据的时间周期变得更短。通常在一个典型的数据密集型计算中,我们的大多数时间都集中花费在获得数据上。因此,在计算中,如何使数据访问变得更快就是使整个计算过程变得更高效的最好方法。在我的笔记本电脑上,从100000行记录的数据库中,随机查询一行并返回客户端需要花费2.2ms,但是在数据库内部获取数据,这个操作仅仅花费0.12ms。这是快了20倍的性能表现,并且这是客户端与服务器在同一台使用UNIX套接字的机器上运行的结果。如果客户端与服务器之间使用了网络连接,那么这个差距将会变得更大。
一个真实的小故事:
我的一个朋友被叫到一家大公司帮忙(我确定你们肯定都知道这家公司,但是我不能告诉你是哪家),公司希望能让他们的电子邮件发送程序运行得更快速。这家公司已经使用了最新的Java EE技术,实现了自己的电子邮件生成系统,首先从数据库获得数据,然后在服务间传送数据,并且进行几次的序列化与反序列化工作,最后在数据上进行XSLT转换从而产生电子邮件正文。最终的结果是他们每秒钟仅生成了几百封邮件,并且造成反应速度的严重下滑。
当我朋友重写这个进程的时候,他使用数据库内的PL/Perl函数格式化数据,并且使这个查询返回的是完全格式化的电子邮件,就这样,这个程序每秒钟突然开始涌出上万封的电子邮件,然后他们必须增加发送邮件程序的另一个副本,才能将这些邮件发送出去。
1.10.2 易于维护
如果所有的数据操作代码都位于数据库内,那么要么是数据库函数要么是视图,实际的升级过程就会变得非常简单。我们要完成所有这些操作,所需要的仅仅是运行一个DLL脚本(这些脚本重新定义了函数),这样所有的客户端就自动地使用最新的代码,而完成这样的过程不需要停机时间,也不需要几个前端系统和团队之间复杂的协调处理。
1.10.3 保证安全的简单方法
对于存在潜在风险的服务器,如果所有访问都采用函数方式,并且仅仅为数据库的用户授权他们所需的函数,其他函数均不予授权,这样他们无法看到表数据,甚至不知道这些表的存在。所以即使当服务器被恶意破坏,用户可以做的事情也只是不停地调用同一个函数。而且,即便用户使用了自己编写的查询,比如SELECT * FROM users;来获取数据库中的所有数据,也不可能发生盗取密码、邮件或其他敏感信息的情况。
最重要的是,在服务器上开发程序是最有趣的。

时间: 2024-10-23 11:18:55

《PostgreSQL服务器编程》一一1.10 总结——为什么在服务器中进行程序设计的相关文章

《Linux高性能服务器编程》——3.10 拥塞控制

3.10 拥塞控制 3.10.1 拥塞控制概述 TCP模块还有一个重要的任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性.这就是所谓的拥塞控制. TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start).拥塞避免(congestion avoidance).快速重传(fast retransmit)和快速恢复(fast recovery).拥塞控制算法在Linux下有多种实现,比如reno算法.vegas算法和cubic

《PostgreSQL服务器编程》一一1.8 程序设计最佳实践

1.8 程序设计最佳实践 开发应用程序软件是复杂的.一些有助于管理复杂性的方法非常流行,以至于它们被赋予容易记忆的首字母缩略词.接下来,我们就会介绍一些这样的规则,并介绍如何在服务器程序设计时更好地遵守这些规则.1.8.1 KISS--尽量简单(keep it simple stupid)成功的程序设计的一个重要技术就是编写简单的代码.也就是,你编写的代码3年以后仍然可以很容易理解,并且其他人也可以理解.这种方式并不一定总是行得通,但是尽可能用最简单的方法编写代码总是有意义的.由于各种原因,比如

《PostgreSQL服务器编程》一一导读

前 言 PostgreSQL服务器远远不只是一台数据库服务器.实际上,PostgreSQL甚至可以承担起一个应用程序开发框架的角色,这个框架的优势在于其具备事务支持.大量数据存储.日志记录.系统恢复等功能,以及PostgreSQL引擎提供的许多优秀特性.在蓬勃发展的商业化时代,如果你掌握了足够的PostgreSQL相关知识,你将有能力满足当前人才市场对高级PostgreSQL技能的强烈需求. 本书将带你学习PostgreSQL函数基础知识.在学习过程中,你将会使用各种程序语言(不限于自带的PL/

《PostgreSQL服务器编程》一一1.1 为什么在服务器中进行程序设计

1.1 为什么在服务器中进行程序设计 开发者使用各种不同的语言进行程序开发,并且希望所编写的代码能够在任何环境下运行.当编写应用程序的时候,一些程序员会坚守这样的信条:他们认为服务端应用程序里面的处理逻辑应尽可能多地被推送到客户端.因此,我们经常能见到这样一种情况,即越来越多的应用程序会在浏览器中使用JavaScript.还有的情况则是把处理逻辑放置在中间层,然后通过应用程序服务器来处理业务规则.这些实际上都是设计应用程序的各种有效方式,那么为什么还要在数据库服务器中进行程序设计呢?让我们从一个

《Linux高性能服务器编程》——导读

前 言 为什么要写这本书 目前国内计算机书籍的一个明显弊病就是内容宽泛而空洞.很多书籍长篇大论,恨不得囊括所有最新的技术,但连一个最基本的技术细节也无法解释清楚.有些书籍给读者展现的是网络上随处可见的知识,基本没有自己的观点,甚至连一点自己的总结都没有.反观大师们的经典书籍,整本书只专注于一个问题,而且对每个技术细节的描述都是精雕细琢.最关键的是,我们在阅读这些经典书籍时,似乎是在用心与一位编程高手交流,这绝对是一种享受. 我们把问题缩小到计算机网络编程领域.关于计算机网络编程的相关书籍,不得不

10 个免费的服务器监控工具推荐

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的.你要确保用户始终可以打开你的网站并且网速不慢.服务器监控工具允许你收集和分析有关你的Web服务器的数据. 有许多非常好的服务器监控解决方案,而为了省去你寻找方案的麻烦,这里我为你列出了我能找到的最好的服务器监控工具. 1. Performance Co-Pilot Performance Co-Pilot,简称 PCP,是一个系统性能和分析框架.它从多个主机整理数据并实时的分析,帮你识别不正常的表现模式.它也提供 API 让你设计

Java网络服务器编程(NIO版)

编程|服务器|网络 从Java 1.4开始提供的NIO API常用于开发高性能网络服务器,本文演示了如何用这个API开发一个TCP Echo Server.   Java网络服务器编程 一文演示了如何使用Java的Socket API编写一个简单的TCP Echo Server.其阻塞式IO的处理方式虽然简单,但每个客户端都需要一个单独的Thread来处理,当服务器需要同时处理大量客户端时,这种做法不再可行.使用NIO API可以让一个或有限的几个Thread同时处理连接到服务器上的所有客户端.

IIS又发现10个安全漏洞 服务器门户大开

iis|安全|安全漏洞|服务器 微软于4月10日宣布,该公司的Web服务器软件"Internet Information Server/Services(IIS)"中发现了10种新的安全漏洞.受到这些安全漏洞影响的版本为IIS 4.0/5.0/5.1.如果有人恶意利用其中最严重的安全漏洞,甚至可以在Web服务器上运行任意程序.由于上述全部漏洞的补丁都已经公布,所以请服务器管理者尽早采用. 在上述10种安全漏洞之中,5种与缓冲器溢出有关,2种与拒绝服务有关,另外3种为交叉站点脚本相关的漏

转 【整理】服务器编程模型

最近在研究服务器编程相关内容,故将看到的有用内容进行记录.  ====================================  从线程的角度,可以将服务器编程分为两类:单线程和多线程.  [单线程模型]         一个进程中只有一个线程,由于只有一个线程,所以要实现高性能,必须与 "non-blocking I/O + I/O multiplexing" 相结合,另外 libevent 本身也是单线程的.相对于多线程,单线程 server 没有线程切换以及加锁的开销,劣