阅读更多

1顶
2踩

数据库

转载新闻 回首经典的SQLServer2005

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

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.

发表评论

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

相关推荐

  • 设置请求不要有缓存

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

  • 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

  • 防止浏览器缓存的办法

    防止浏览器缓存的办法

  • http header头设置反向代理不缓存

    1、Expries:网页的cache过期时间,到指定日期网页cache失效 2、Last-Modified:网页的最新更新时间 3、Cache-Control 缓存控制 no-cache:不缓存网页 no-store:不缓存网页,如果有则删除之 must-revalidate:使之前,服务器响应使用cache生存时间生效 ...

  • squid中refresh_pattern参数用法及解释

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

  • 在html页头设置不缓存

    方法一:在标签里增加如下meta标签。 meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> meta http-equiv="X-UA-Compatible" content="IE=8"> meta http-equiv="Expires" content="0"> meta http-equiv="Prag

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

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

  • jsp页面设置无缓存方式

    编写web应用,页面之间可以相互跳转。某个页面随着跳转次数会发生一定变化,但是编程无论如何都还是原来的页面。在网上搜索以后才知道,是页面缓存没有清空。此时并未从服务器获得新页面,而是使用缓存中的页面了。解决方法:1)清空tomcat缓存。server->tomcat->clean tomcat work directory.2)设置页面Nocache方式,即每次访问此页面,均需

  • 设置html页面不让浏览器缓存的方法

    1.在html头中加入以下3句话,可以防止大部分浏览器缓存 <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> <meta http-equiv="expires" content...

  • JavaWeb禁止浏览器缓存当前Web页面的方法

             所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取。         虽然浏览器提供的缓存功能可以有效地提高网页的装载速度,但对于某些需要实时更新的网页,这种缓存机制就会影响网页的正常显示。幸好在HTTP响应消息头中提供了三个字段可以关闭客户端浏览器的缓存功能。下面...

  • 设置页面不缓存

    response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); out.clear(); out = pageContext.pushBody();

  • 防止页面客户端被缓存

    防止页面客户端被缓存 许多浏览器为了能快速向用户展示所请求的页面,会把来自服务器的网页存放在客户端的缓存中,如果用户多次 请求访问服务器端的同一个网页,并且在客户端的缓存中年已经存在该网页,那么浏览器只需要从缓存中获取该网页 ,并不需要在请求访问远程服务器上的网页 浏览器端的缓存技术适用于保存服务器端的静态网页,以及不包含敏感数据的网页,一下情形中,服务器往往 不希望客户端被浏览器缓存:

  • 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....

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

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

  • 请求头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

Global site tag (gtag.js) - Google Analytics