阅读更多

1顶
2踩

数据库

转载新闻 回首经典的SQLServer2005

2014-09-15 14:04 by 见习编辑 u012797015 评论(2) 有4336人浏览

SQL Server是我使用时间最长的数据库,算起来已经有10年了。上世纪90年代,微软在软件开发的所有领域高歌猛进,形成了操作系统、办公软件、企业开发、游戏制作、浏览器各领域的全线垄断。那曾经是微软发展的黄金时期,至到今天,它仍然在享受着当年的红利。

 

在SQL Server 2000那个年代,由其功能强大,使用方便,“国人免费”等特点迅速流行起来,成为企业开发的不二选择。早期的用友、管家婆的ERP也使用此作为数据库。那个时候WEB开发还不像现在这样流行,主要就是做一些网站,而企业桌面管理软件则是大家争抢的市场。SQL Server和Visual Studio开发的软件跑在Windows平台下,则成为标配,大量程序员夜以继日的研究其中的奇巧淫技,乐此不彼。SQL Server和Sybase之间还有些渊源,有兴趣的同学自查。

 

在摩尔定律的推动下,硬件飞速发展,软件复杂度增加,SQL Server 2000的潜能已经被榨干,市场迫切需要性能更高,功能更完善的数据库。数据库是微软的现金牛,当然是当然不让。经过5年的开发,推出了经典的SQL Server 2005。5年时间才发布一次版本,和VS2008, 2010,2012,2013比起来,弱爆了啊。SQL Server 2005完全颠覆了“数据库就是保存数据的地方”概念,带有一系列的辅助组件,身材翻了几倍,在我的老DELL笔记本安装了一个多小时……

 

SQL Server 2005新增了一系列的函数,推出了CLR存储过程,提升XML为数据类型,Service Broker消息组件,BI报表服务等。报表服务(Report Service)目的是想取代水晶报表,挖掘数据,后来的发展事实证明这玩艺儿就是玩具,很快被开发者摒弃。Service Broker消息组件被一些公司作为数据同步机制使用,也就是读写分离。XML增强后可以直接在SQL中XPATH运算,通过相关函数,还可以和Table做Join,为一些特定场景提供了灵活性,但物极必反,过度使用会造成效率问题。

 

SQL Server 2005中第一次引入了表变量,可以很多场合替代临时表,像变量一样自动回收的特性立即吸引了我。引入了Oracle中数据窗口的概念,可以方便完成以前需要复杂SQL的工作。影响最常见和深远的应该是对分页的影响,ROW_NUMBER分页几乎现在已经标准化,新生代程序员可能很少去关注了。而在此之前,牛逼的DBA都喜欢做分页存储过程来显示自己的能力,而开发者也喜欢比较各自使用的分页存储过程效率,各种测试甚至口水仗,那是一个多么纯真的年代啊。

 

SQL Server 2005借用Visual Studio的经验,提供了相当华丽的的SQL Server Management Studio。集成了SQL Server 2000时代的企业管理器和查询分析器,重新设计整体布局,用户体验瞬间提高了不少。遗憾的是,仍然没有提供智能提示的支持,还得继续使用第三方工具辅助。

 

SQL Server 2005给开发者的惊喜是空前绝后的,现在恐怕再也看不到如此革命性的突破了。其打下的根基和建立的概念在后续版本中得到了增强和完善。当前业界在不断弱化关系型数据库,NOSQL、BigData流行了起来,SQL的激情岁月一去不复返了,留给我们却是一代程序员的回忆。

1
2
评论 共 2 条 请登录后发表评论
2 楼 allenny 2014-10-11 01:54
你把Oracle置于何处?
1 楼 hot66hot 2014-09-16 12:13
SQL没有一去不复反啊,NOSQL = NOT ONLY SQL,sql是存储的逻辑接口,物理存储不一定是BTree.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • HTTP请求中浏览器的缓存机制

    【流程】 当资源第一次被访问的时候,HTTP头部如下 (Request-Line)  GET /a.html HTTP/1.1 Host    127.0.0.1 User-Agent  Mozilla/5.0 (X11; U; Linux i686;zh-CN;rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0....

  • 设置请求不要有缓存

    2.使用服务器端控制AJAX页面缓存: response.setHeader( "Pragma", "no-cache" ); response.addHeader( "Cache-Control", "must-revalidate" ); response.addHeader( "Cache-Control", "no-cache" ); response.addHeader( "Ca

  • 【网络基础】学学headers里面有什么东西,包括强缓存和协商缓存

    文章目录前言Request HeadersResponse Headers强制缓存协商缓存为什么需要缓存强缓存和协商缓存的配合 前言 一个http请求中会有headers,它包含了请求头Request Headers和响应头Response Headers。 headers前后端都是可以自定义的 Request Headers 记住常用的如下: 内容 含义 accept 浏览器可接收的数据格式 accept-encoding 浏览器可接收的压缩算法,例如gzip accept-l

  • Java--HTTP Request Header 请求头

    Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5 Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip Accept-Language 浏览器可接受的语言 Accept-Language

  • HTTP头 Pragma:no-cache 缓存来源

    今天给同事分享了一下前端性能优化,在介绍了php文件缓存的方法后,发现一个AJAX请求的文件,在请求头中始终有一个:Pragma:no-cache,导致这个文件不能被浏览器缓存。接着发现这个站几乎所有动态页面都有这个参数Pragma:no-cache。 开始怀疑是不是设置了Cache-control:no-cache导致的,但查遍程序没发现。怀疑服务器的配置,没什么异常的。最后,同事定位到了

  • HTTP消息头中的“Cache-control”介绍

    1. response.setHeader("Cache-Control","no-cache"); This is used to prevent the browser from caching your dynamic content generated by a JSP or Servlet. You set this attribute in the HTTP

  • 请求头Cache-Control: no-cache,Cache-Control: no-store,Pragma: no-cache区别

    Cache-Control: no-cache:这个很容易让人产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。 Cache-Control: no-store:这个才是响应不被缓存的意思。 Pragma: no-cache:跟Cache-Control: no-...

  • Http Request Headers各属性的作用

    下图是我访问一个URL:http://www.hzau.edu.cn 的一个header,根据具体实例来分析一下各部分的功能及其作用。Accept 作用: 浏览器端可以接受的媒体类型, 例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(n

  • HTTP Request Header 请求头理解

    Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编码集 Accept-Charset: iso-8859-5 Ac...

  • 浏览器HTTP请求头header缓存No.8

    浏览器HTTP请求头header缓存 一、静态资源缓存 对于PHP输出的内容,如果不是需要经常变动的内容(例如伪静态的一些页面,PHP输出JS或者CSS),使用PHP合理设置HTTP响应头添加缓存设置,让浏览器尽可能缓存下内容,在刷新和再次访问同样内容时,便不需要再次请求浏览器,从而能够大幅减少服务器的响应次数,同时浏览...

  • HTTP Request header 详解

    HTTP Request header当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方...

  • 防止浏览器缓存的办法

    防止浏览器缓存的办法

  • squid中refresh_pattern参数用法及解释

    refresh_pattern指令如下: refresh_pattern [-i] regex min percent max [options] * percent与Min、Max两个值是完全没有关系 先理解什么情况下响应过期: 1.缓冲对象在squid的cache缓冲的时间大于refresh_pattern定义的max ,该响应过期; 2...

  • JSP用户安全退出【清除浏览器缓存中页面】

    大部分浏览器都有一个后退按钮。当点击后退按钮时,默认情况下浏览器不是从Web服务器上重新获取页面,而是从浏览器缓存中载入页面。基于Java的Web应用并未限制这一功能,在基于PHP、ASP和.NET的Web应用中也同样存在这一问题。在用户点击后退按钮后,浏览器到服务器再从服务器到浏览器这样通常意思上的HTTP回路并没有建立,仅仅只是用户,浏览器和缓存进行了交互缓存的好坏,真是仁者见仁智者见智。缓存

  • 服务端控制各种浏览器禁止缓存页面资源 学习笔记

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; ...

  • 禁用浏览器缓存

    控制浏览器禁止缓存当前文档内容 1.为什么禁止使用缓存. 我们向服务器发送请求,第一次响应回来时会带一个last-modify值,它代表的是资源最后被修改的时间。 在以后访问时,会在请求中带一个if-modify-since值,服务器得到这个值,会与资源最后修改时间做比较,如果 时间相同,就不会返回资源,返回的是304状态码。 浏览器得到304状态码,会直接在自己的缓存中显示。 在

  • 防止浏览器缓存的几种方法

    Cache-Control/Pragma这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP协议相关的缓存或代理服务器。 Cache-Control请求字段被各个浏览器支持得较好,而且它的优先级也比较高,它和其他一些请求字段(如Expires)同时出现时,Cache-Control会覆盖其他字段。Pra

  • web开发中设置页面禁止缓存

    java代码: // 禁止缓存 response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragrma", "no-cache"); response.setDateHeader("Expires", 0); jsp代码:

Global site tag (gtag.js) - Google Analytics