Oracle 内存数据库 TimesTen

Oracle 内存数据库 TimesTen 是一个针对内存进行了优化的关系数据库,它为应用程序提供了当今实时企业和行业(如电信、资本市场和国防)所需的即时响应性和很是高的吞吐量。(产品数据表)算法

Oracle 内存数据库 TimesTen 经过改变数据在运行时驻留位置的假设来提供实时性能。经过在内存中管理数据,并相应地优化数据结构和访问算法,数据库操做可以以最大效率执行,从而大大提升响应速度和吞吐量,甚至可以与彻底使用高速缓存磁盘的 RDBMS 相媲美。Oracle 内存数据库 TimesTen 可嵌入到应用程序中,从而消除了进程间通讯和没必要要的网络操做,以进一步提升数据库操做的性能。数据库

 

内存数据库一般被误认为仅限于单用户应用程序,而且容易在服务器发生故障时丢失数据。对于 Oracle 内存数据库 TimesTen 而言,事实并不是如此。使用带有提交后读取 (committed-read) 隔离的行级锁定机制,多用户和多线程应用程序变得很普通。经过内部记录版本消除了读程序和写程序之间的锁争用,从而提供了一致的响应时间和高级别的并发。 Oracle TimesTen 数据库是持久的且可恢复。 应用程序能够根据其性能要求选择事务 ACID 属性的设置。 根据标准关系数据模型,可使用 SQL、JDBC 和 ODBC 访问 Oracle TimesTen 数据库。 任何熟悉 RDBMS 和 SQL 接口的开发人员使用 Oracle 内存数据库 TimesTen 能够当即提升开发实时应用程序的效率。缓存

Oracle 内存数据库 TimesTen 支持各类部署配置以适应各类状况,从临时查找缓存到操做数据存储、再到任务关键的事务处理系统。服务器

因为应用程序的任务关键特性,大多数部署都添加了 Replication - TimesTen to TimesTen 选件以实现高可用性和负载平衡。对于应用程序层缓存(如对面向服务的体系结构的支持),Cache Connect to Oracle 选件可将内存数据库扩展成一个可更新的缓存,从而管理 Oracle 数据库与 Oracle 内存数据库 TimesTen 之间的数据加载和同步。网络

TimesTen做为一个内存数据库,数据彻底放置在内存中,那么它的数据持久性如何保持?以及如何实现高可用性保证的呢?
TimesTen的数据持久性是经过磁盘上的DataStore文件和Log文件保持的。TimesTen每一次操做,都会先缓存在内存的LogBuffer中,而后由后台的守护进程异步地同步到磁盘上的Log文件中。TimesTen每隔一段时间或者收集到必定的脏日志量后,就触发一次Checkpoint,将内存中变化的数据增量写到磁盘上的DataStore文件中,而后清除掉已经同步过的Log文件。因此当掉电,或者其它故障时,TimesTen能够经过这些文件进行自动恢复。数据结构

至于高可用性保证,若是是单节点,不想有任何的数据丢失,TimesTen能够经过设置参数DurableCommits =1来保证,即每次提交都强制性同步到磁盘上(缺省为异步方式),这种状况下,数据库写的性能会受到影响。因此若是既想保持高性能,又能保证数据的高可用性,TimesTen经过Replication机制完美地达到了上述两点,经过Replication,TimesTen在多个节点的之间保持数据的自动高效同步。节点之间由多种复制模式能够选择:Active-Standby,Active-Active,Active-Standby-Disaster Recovery等等;数据的传送模式也有同步、半同步、彻底同步等三种模式。多线程

TimesTen主要的四个用途:并发

1)主数据库:为实时应用提供服务的主数据库。这时候它和别的关系型数据库同样,做为整个应用系统中的一块:后台数据库,提供对数据的检索和更新功能。异步

2)实时数据管理:这时候TimesTen 和传统的数据库结合在一块儿,实时的数据存储在TimesTen中,而大量的数据仍是存储在Oracle中,TimesTen和Oracle之间经过Cache Group来进行数据的交互。性能

3)消息中转:这时候TimesTen做为一个消息的中转站,能够在不一样的应用之间架设一个消息传递的桥梁;不一样的应用经过TimesTen,以消息的形式来进行数据的交互。

4)数据整合点