【工控技术】SQL server2014将成为实时数据库最大的劲敌
实时数据库一直是OSI,Rockwell,ASPEN,EDNA,wonderware,GE,honeywell角逐的战场,他们主要以大数据量采集和存储(6万点以上)并伴随大数据量的查询为主要需求,排斥了传统组态软件厂商竞争资格,这么多年大家都已经很默契了,也都知道谁家的产品主要应用在哪个领域,相互之间的残杀还是比较冷静的。但就在2014年中旬,微软在实时数据库领域放下一颗深水炸弹。SQL Server 2014提供内存数据库了。微软就宣布了SQL Server2014版本中附带代号为Hekaton的内存数据库引擎。大家也都知道SQL server很早就被信息化系统集成商使用在工业自动化信息化项目中,因为价格便宜,remark版本随处可见。但主要因为实时数据库处理能力太差,所以系统集成商不得不在一些小项目中点数不是很多的情况下使用SQL server,随着SQL server 2014的出现,恐怕实时数据库厂商的日子将越来越难。我们先来看看微软的内存数据库。
内存数据库
在传统的数据库表中,由于磁盘的物理结构限制,表和索引的结构为B-Tree,这就使得该类索引在大并发的OLTP环境中显得非常乏力,虽然有很多办法来解决这类问题,比如说乐观并发控制,应用程序缓存,分布式等。但成本依然会略高。而随着这些年硬件的发展,现在服务器拥有几百G内存并不罕见,此外由于NUMA架构的成熟,也消除了多CPU访问内存的瓶颈问题,因此内存数据库得以出现。
内存的学名叫做Random Access Memory(RAM),因此如其特性一样,是随机访问的,因此对于内存,对应的数据结构也会是Hash-Index,而并发的隔离方式也对应的变成了MVCC,因此内存数据库可以在同样的硬件资源下,Handle更多的并发和请求,并且不会被锁阻塞,而SQL Server 2014集成了这个强大的功能。
在SQL Server的Hekaton引擎由两部分组成:内存优化表和本地编译存储过程。虽然Hekaton集成进了关系数据库引擎,但访问他们的方法对于客户端是透明的,这也意味着从客户端应用程序的角度来看,并不会知道Hekaton引擎的存在。如图1所示。
图1.客户端APP不会感知Hekaton引擎的存在
首先内存优化表完全不会再存在锁的概念(虽然之前的版本有快照隔离这个乐观并发控制的概念,但快照隔离仍然需要在修改数据的时候加锁),此外内存优化表Hash-Index结构使得随机读写的速度大大提高,另外内存优化表可以设置为非持久内存优化表,从而也就没有了日志(适合于ETL中间结果操作,但存在数据丢失的危险)
下面我们来看创建一个内存优化表:
首先,内存优化表需要数据库中存在一个特殊的文件组,以供存储内存优化表的CheckPoint文件,与传统的mdf或ldf文件不同的是,该文件组是一个目录而不是一个文件,因为CheckPoint文件只会附加,而不会修改,如图2所示。
我们刚才看到的就是SQL server2014内存数据库的一些信息,相信未来3-5年,SQL server2014在实时数据库的战争中会脱颖而出,如果大家对此感兴趣可以来信一起探讨。也请大家持续关注小编。