说实话,我在大学的时候用了下SQL Server,自从工作以来一直没有接触过SQL Sever,越是不接触越是排斥,也是不了解越是排斥,所以花点时间了解下自己不熟悉的技术,可能也会有一番收获。
SQLServer的版本
它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,1988年推出了第一个OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本SQL SERVER 2016。
Oracle的版本也开始按照这种套路了,9i,10g,11g,12c,下来就是18,因为自2018年起,Oracle数据库的版本号将直接跳升到18
甘特魔力象限
如果说Oracle是最强大的商业数据库,估计反对的声音会很少,这些年来Oracle一直在这种强大的光环下,但是从近些年的发展来看,SQL Server的变化也很大,直到去年一看Garnter魔力象限,竟然飙到了第一名。
这个象限是通过多个维度来做的一个结论,所以是综合的优势。
DB engines的排名
我从DB Engines拿到了最新的数据库流行度的排行版,前三甲依旧是Oracle,MySQL,SQL Server,从我的片面认识来看,SQL Server似乎没有他地位该有的热度。
而进一步了解一下数据库产品竞争图和客户流向示意图,就会发现,很多数据库都在收缩。在我的印象中,SQL Server在韩国,台湾用的相对比较多。
中间粗粗的一条线就是Oracle到MySQL。下面这个图有一点需要补充,那么就是Oracle到SQL Server,微软已经推出了Linux平台的数据库版本服务,这对于Azure的发展可谓是如虎添翼,而且微软算是投入了大量的人力财力来稀释Oracle的市场占有率。他们推出了SQL Server迁移到Oracle免费的策略,除了免费的SQL Server许可外,微软还提供了免费的SQL Server技术培训以及用于抵消迁移部署成本的补偿金。当然这个政策有一定的时效性。
MVP
微软在社区方面也花了很大的精力,他们的社区专家是被称为MVP,是通过评选获得的,整个的参选标准和Oracle的ACE有点像,得到荣誉之后也会发送奖杯之类的。
安装类型
SQL Server的安装类型比较多,有企业版,标准版,个人版,开发版,企业评估版等。估计还有些没有整理细致,从版本的报价来看,比Oracle略低,版本间有一定的梯度价格。
Oracle的版本相对要少一些,企业版,标准版,还有个中间版本,版本的不同就是组件的差别了。比如ADG,RAC,Partition这些都是企业版的。
MySQL在这方面的差别更明显,商业版,社区版,分支(MariaDB,Percona,Drizzle...),除了商业版有个基本的费用外,其他都免费,还开源,当然这么比就不公平了,毕竟是商业数据库和开源数据库。
体系结构
学习一个数据库,看看它的体系结构设计尤其重要。这是我找到的一个体系结构图。
整体来看,数据库引擎是分为了下面四个部分。
-
协议层(Protocols)
这个层面SQL Server做得很全面,支持TCP/IP,name pipes等,Oracle的网络服务是独立的,本机是bequeath协议,网络TCP.网络扩展支持很强,支持多端口,多种配置模式。
MySQL在这方面的要简单一些,独一端口,统一的协议。
-
关系引擎(Relational Engine),也称为查询处理器(Query Processor)
这个被称为是SQL Server最复杂的一个组件。和我们通常所说的SQL引擎差不多。
-
存储引擎(Storage Engine)
存储引擎包含的组件大体有事务服务,锁管理器,访问方法和实用工具等。
MySQL里面的存储引擎那可是百花齐放,尤以InnoDB为上品。
-
SQLOS是应用层,是最底层的,里面有很多的调度和管理,比如内存管理,死锁检测,调度等。
隔离级别
SQL Server有下面的5种事务隔离级别,比平常我们所说的多了一种:快照。
-
Read Uncommitted:仅支持悲观并发;
-
Repeatable Read:仅支持悲观并发;
-
Serializable:仅支持悲观并发;
-
Snapshot: 支持乐观并发;
-
Read Committed:默认隔离级别,依据配置既可支持悲观并发也可支持乐观并发
备份恢复
这方面的工作,如果手工去做,通过图形界面就能够完成,这一点上很多数据库都达不到SQL Server这种易用性和用户体验。当然大批量的环境应该得用脚本实现。
看了下SQL Server create database的语句,和Oracle很想,有些数据字典也会很类似。比如里面也有information_schema,还有sys等。