TimesTen 与基于磁盘的 RDBMS 架构的比较
提供免费下载评估:
http://www.leadingtek.com.cn
感兴趣的朋友可以评估一下这一崭新的实时数据管理技术。小弟也是新手,期待大家共同交流 多多互相学习。
eXtremeDB在管理实时数据的时候,有这样的优点:
.功能特别全。
eXtremeDB将数据保存在内存中,在内存中建立数据结构,在数据结构上提供数据库API,这些API提供了通常只有在企业数据库上才有的各种数据管理功能,如表结构、交易管理、HASH索引、树索引、OID、Autoid、引用、历史版本、事件触发等。在eXtremeDB的表中,不仅可以支持通常的简单数据,而且可以支持结构和矢量等等复杂数据。这对诸如机顶盒等应用领域而言,特别有利。
.性能特别高。
由于数据是保存在内存中,因此,每次插入、检索、更新数据的操作都非常快。通常,在400MHz的处理器上一个交易的时间只有1~2微秒。这要比静态数据管理或常规数据库的性能要高很多。
.硬件要求特别低。
eXtremeDB在使用的时候,基本开销只有50K~100K尺寸;管理数据的效率高达70%~80%。相比而言,Oracle等商业数据库或我们自己编写的数据管理软件,效率在10%~20%左右。以我们为Genesis Microchip做的参考设计而言,管理152K个节目信息,包括标题索引、内容索引等诸多功能的数据库,占用内存的尺寸在8~9M左右。在我们的EPG参考设计中,如果用400MHz的处理器,检索一个节目的时间机会感觉不到。
.开发非常方便
eXtremeDB的数据库系统以C/C++的Library的形式提供给用户,与用户的程序无缝集成在一个运行程序之中。开发过程流畅,使用非常方便。
也经常有人出于业务的考虑,如某些系统要实时数据采集,有些系统可能每秒有上万条的 INSERT INTO 量.我看了一下相关的回复,大体上都是增加硬盘,应用分布式管理,表分区等等..一句话.基本上是砸钱加硬件. :) .这的确是好办法.不过,现在是经济
危机,尤其是中小型企业,每一分钱都算得紧紧的,我相信你这个DBA也很难向老板开口.
1.下载一个 ramdisk 或类拟的软件,先在2G左右的内存虚拟成一个硬盘.
2.在你的实体硬盘上建立一个空的数据库(直接在虚拟盘中建库是不可能的). 设置这个库的事务方式为简单.
3.分离这个新建的库.
4.将这个库 COPY 到你的虚拟盘上,然后附加.
我在我的电脑上测试:L730T + 2G + 320G.
100万条,基本是每秒 INSERT INTO 20000 条左右,而且,这个数据很平稳.
OK,你的内存数据库完成了.
以后呢,凡是分析报表扯到的临时中间表,都可以放到这个库里,用完就KILL,或者你有很多实时数据要采集,也放到这个库里(要注意隔一定时间回写到实体表,还要注意断电. :)
顺便说下,其实市面上有卖日本某公司ram disk硬盘,价格其实也不是太贵,sata接口的.用的是ddr2的内存,一般是32g或者64g的,速度和楼主说的没有什么区别,不过使用上要方便的多.
某个方法是不可能适合所有场景的,我的意思是说,在有些时候,通用内存库来存放统计的中间表或实时要求高的表,可以减少IO,提高服务器的并发数和响应时间。至于有人说还不如将这2G的内存留给SQL,呵呵,你发现过没有?你的数据库只有2个G,内存有十几个G,SQLSERVER一样能把它占满。SQL缓冲机制其实是很傻的。如果人为地,有目的地划一个内存区域来操作,从内存的利用率和前台执行效能来说。这要比SQL自己管理要高得多。
这实质就是主动的缓冲的一种方式。我只是用了SQLSERVER举了一个例子。
主动缓冲对 大型网站,大型的商务应用,是非常必要的。以前我们一般是手工去做,做了一堆LIST(OF T) 的泛型,写了一大堆的静态类来实现这种复杂的逻辑。非常麻烦。写过类拟功能的兄弟肯定知道。
其实,思路再放宽那么一点点,如不用SQLSERVER,用文件型的数据库,如MYSQL。 :) ,效果会更好。效率也更高。在三层应用中,中间放一个MYSQL的内存库(注:MYSQL中有内存表的概念,但效率也好不到哪里去,与这个是两回事)。做一个独立的类来管理它,你的网站经这一个小小的改动,它的并发量将是十倍八倍地增长。
说了这么多,绝招都教出去了。后悔!!哈哈。。。
走出别人的大门后,自己也觉得有点可笑。做SQLSERVER的人,大部分都觉得SQLSERVER就是全部。做DB2的人,也认为DB2就是全部。。。。。
呵呵。。不说了,再说就得罪人了
对于其他应用,微软在这一点不可能改变
因为对于数据库持久化是第一位的,也就是说除了临时数据,任何事务,微软都要先存盘的
不过用在生产环境应该是不大合适滴