6.1.2 TimesTen应用场景

在谈论TimesTen内存数据库应用场景之前,我们先来介绍一下什么是内存数据库,及其工作原理吧。内存数据库,顾名思义就是将数据存放在内存中,并通过内存操作直接完成数据库相关操作。与磁盘相比,数据在内存中的读写速度要高出几个数量级,能够极大地提高应用程序的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中,重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上,TimesTen也由此而得名。内存数据库从某种角度上来看,也是一种缓存机制,是磁盘数据库的前端缓存,通过物理内存中的数据存储区的直接操作,减少了到磁盘间的 I/O 交互。

说到应用场景,TimesTen内存数据库也不是万能的,不是什么场景都适合使用TimesTen的。在实际工作中,我不只一次地被问及:“如果使用TimesTen,我们的应用程序是不是就能提升性能呢?”我只能说:“TimesTen也是有作用域的,不是什么场景都适合。判断是否适合,我们需要做一次完整的应用POC测试才能判定。”像使用其他工具是一样的,要使用TimesTen内存数据库,需要先了解它的特点。

1. TimesTen特点

如图6-2所示,对比了Oracle数据库与TimesTen内存数据库在应用程序SQL语句执行到返回的过程,可以看到TimesTen内存数据库具有以下优势:

q  完全内存存储和内存读写,没有缓冲缓存管理开销;

q  更短的SQL路径导致更快的性能,更少的CPU指令导致更少的CPU开销。

 book_tt_02

图6-2  Oracle与TimesTen基础架构对比

从以上对比中,我们可以归总一个结论:TimesTen的数据读写速度快,事务并发处理能力强。但是也需要关注到TimesTen的一些限制。TimesTen在进行架构设计的时候,有以下几个关注点:

q  拒绝热点争用,高并发的热点争用更易产生CPU问题;

q  高效I/O要求,TimesTen的数据文件和日志文件均存储在磁盘上,与内存保持同步,如果磁盘I/O不佳会成为性能短板;

q  单库容量不宜过大,会导致恢复成本高;

q  字段不宜过长,内存存储比磁盘存储更消耗容量。

换而言之,我们在享受TimesTen内存数据库带来的高性能和高并发优势的同时,需要注意由此而可能出现的问题点。TimesTen的高速也是需要有代价的,是需要建立在优秀架构设计的基础上。与Oracle的厚重的基础架构相比,TimesTen显得有些“单薄”,更像是一个敏捷数据库,在使用过程中,我们应该尽可能地遵守“快进快出”的原则,一些比较厚重的应用并不适合使用TimesTen数据库。

2. 适用场景和注意事项

归总一下,有哪些场景适合使用TimesTen吧:

q  业务逻辑简单、快速响应的OLTP应用,比如:互联网秒杀活动、网上拍卖、电子计费等;

q  Oracle数据库并发争用压力过大的应用,可以分离到TimesTen上,通过分库分表实现快速响应;

q  对于一些数据量较大、业务逻辑复杂、数据耦合性非常强的应用,如:MIS、OLAP,将不是TimesTen所擅长处理的。

TimesTen内存数据库的最大优势是解决高并发争用压力,同时在响应时间上作出优化,不是从分钟级到秒级的优化,而是从秒级到毫秒级的优化,这才是其最擅长的。在使用设计上需要注意以下方面:

q  表、索引结构设计简单,字段长度较短,且尽可能只使用常用字段类型;

q  函数、存储过程、序列等数据库对象尽量不使用;

q  SQL语句简单(不含复杂的表关联和子查询等),单条语句响应时间尽量能控制在毫秒级;

q  如果作为Oracle的前置缓存,数据刷新频率不宜过高。

Trackback

no comment untill now

Add your comment now

切换到手机版