前段时间,领导问知道不知道Oracle的TimesTen,以前只是听说过,没什么研究,碰巧看到Oracle官方的中文博客,这篇TimesTen FAQ的文章,抄录于此,了解一下。


什么是Oracle内存数据库TimesTen?

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

Oracle内存数据库TimesTen作为缓存或嵌入式数据库部署在应用程序层中,利用标准的SQL接口对完全位于物理内存中的数据存储进行操作。所包括的复制技术能够在TimesTen数据库之间进行实时事务复制,以实现高可用性和负载共享。

TimesTen In-Memory Database_数据库

什么是Oracle In-Memory Database Cache?

Oracle In-Memory Database Cache是一个数据库选件,他为Oracle数据库提供了实时、可更新的缓存。Oracle In-Memory Database Cache将来自数据库的对性能极其关键的一系列表和表碎片缓存到应用程序层,从而缩短应用程序事务响应时间。在内存数据库TimesTen中管理缓存表的方式与管理普通的关系型数据库表类似。因此,Oracle In-Memory Database Cache为应用程序提供了关系型数据库的所有共性和功能、缓存和Oracle数据库的一致性透明维护以及内存数据库的实时性能。该数据库选件是缓存Oracle数据库的性能关键的子集以改进应用程序层中响应时间的理想选择。为了获得高可用性,可使用活动-备用配置部署Oracle In-Memory Database Cache,active-standby配置中的缓存表在Oracle TimesTen数据库间进行实时复制。

TimesTen In-Memory Database_linux_02

Oracle内存数据库TimesTen是否对硬件和软件有特殊要求?

Oracle TimesTen数据库是在假设所有受管理的数据都驻留在物理内存 (RAM)中的前提下构建的。因此,对于硬件,要考虑的最重要的事情是应用程序层中要有足够的RAM。除此之外,TimesTen要考虑的硬件因素极少。与所有应用程序一样,具有适当数量的CPU(以相应的时钟速度运行)对于应用程序尽可能快得运行是很重要的。同样,要利用多个CPU,您需要运行多个应用程序,或应当将您的应用程序编写为使用多个线程。此外,事务日志和检查点文件持久保存在磁盘上,磁盘越快,实现的整体性能越好。Oracle In-Memory Database Cache驻留在应用程序层,他使用SQL*Net与Oracle数据库进行通信。Oracle数据库客户端软件必须作为内存数据库缓存安装在同一服务器上,以便连接到Oracle数据库。

内存数据库TimesTen是Oracle 11g/12c数据库的一部分吗?

Oracle In-Memory Database Cache是Oracle数据库的数据库选件,他包括内存数据库TimesTen、Cache Connect To Oracle以及Replication - TimesTen to TimesTen技术。

Oracle内存数据库TimesTen是经过专门许可的产品,包括内存数据库TimesTen和复制组件。

哪些平台支持Oracle TimesTen技术?

支持以下平台:AIX 32/64位(Power)、HP-UX 32/64位(PA-Risc 和 Itanium2)、HP TRU64 64 位(AlphaChip EV68)、Linux RedHat和SUSE 32/64 位(x86、x86-64和Itanium2)、Linux Oracle、MontaVista CGE和Asianux 32/64 位(x86和x86-64)、Sun Solaris 32/64 位(Sparc 和 x86)和Windows 32/64 位(x86 和 x64)。Oracle In-Memory Database Cache选件支持Oracle数据库10g第2版、 Oracle数据库11g和12c最新版本。

内存数据库

内存数据库TimesTen可以作为独立的数据库使用吗?

可以,现在很多客户将Oracle内存数据库TimesTen(IMDB)作为独立的数据库在应用程序层使用。TimesTen IMDB为SQL操作提供了全面的事务处理支持,事务日志持久保存在磁盘上以便于恢复(数据库始终位于内存中)。

Oracle内存数据库TimesTen可以作为Oracle数据库的内存缓存使用吗?

可以,这是Oracle数据库选件“Oracle In-Memory Database Cache”。该数据库选件包括内存数据库TimesTen、Cache Connect to Oracle以及Replication - TimesTen to TimesTen组件。

TimesTen In-Memory Database_数据库_03

内存数据库TimesTen的数据访问API有哪些?

内存数据库TimesTen支持标准的ODBC, JDBC, OCI, ODP.NET等接口,以便应用程序使用SQL-92标准连接到数据库。

TimesTen为32位和64位应用程序提供的接口不同吗?

不是,为32位和64位应用程序提供的应用程序接口是一样的。要利用64位模式,需要重新编译应用程序并将其链接到TimesTen 64位资料库。

开发Oracle TimesTen应用程序可以使用什么语言?

可以使用C、C++ 、Java 、PL/SQL、PHP以及R语言等多种应用程序开发。

TimesTen In-Memory Database_mysql_04

嵌入模式是指什么?

Oracle内存数据库TimesTen的设计和优化使其可在应用程序层运行。数据存储可直接链接(嵌入式)到应用程序以获得最佳性能。通过将数据库嵌入应用程序,SQL访问不会导致任何网络或IPC开销。

TimesTen In-Memory Database_大数据_05

Oracle内存数据库TimesTen是否支持类似Oracle RDBMS的索引?

是,Oracle内存数据库TimesTen支持索引。索引可以提高数据库查询的性能,就像他们在Oracle中的作用一样。TimesTen支持两种类型的索引:范围索引,用于涉及等式和不等式范围的查找;和散列索引,提供较范围索引更为快速的主键访问,可精确匹配查找和同等联接。

如何在TimesTen IMDB中设计和创建数据结构? 

内存数据库TimesTen支持SQL标准。要创建数据结构,可使用SQL DDL语句,如CREATE TABLE、CREATE INDEX、CREATE SEQUENCE、CREATE VIEW、CREATE MATERIALIZED VIEW、ALTER TABLE等。用于RDBMS的相同数据库设计技术也可用于TimesTen。在TimesTen中设计和管理数据库要比在针对磁盘优化的RDBMS中简单,因为不需要调整表区域大小或者整理磁盘碎片。

TimesTen是内存数据库,那他如何从节点/电源故障进行恢复? 

虽然整个数据库驻留在内存中,但事务日志和检查点文件都保存在磁盘上。如果系统重新启动或者出现故障,将从检查点文件和事务日志文件恢复IMDB。此外,客户可以配置TimesTen Replication以向另一个TimesTen节点提供事务复制。

TimesTen In-Memory Database_mysql_06

TimesTen In-Memory Database_大数据_07

In-Memory Database Cache

什么是Cache Connect to Oracle?

Cache Connect to Oracle是Oracle 数据库选件“Oracle In-Memory Database Cache”的一个组件。他使内存数据库TimesTen能够提供为Oracle数据库提供实时、可更新的缓存。Cache Connect负责加载数据、在内存缓存和Oracle数据库之间传播更新,以及维护两个数据库之间的缓存一致性。 

Oracle In-Memory Database Cache支持哪些Oracle数据库版本?

In-Memory Database Cache支持Oracle数据库10g第2版、Oracle数据库11g和最新的12c版本。

Oracle In-Memory Database Cache支持哪些平台?

In-Memory Database Cache作为Oracle数据库服务器的客户端应用程序运行。支持的平台包括AIX、HP Tru64、HP-UX、Linux、Solaris和Windows。

我可以在不同平台上通过Oracle数据库服务器运行Oracle In-Memory Database Cache?

可以,由于Cache Connect作为Oracle客户端运行,因此他可以在不同的平台上通过Oracle数据库服务器运行。

我可以在Oracle数据库的MAA架构下使用TimesTen Cache功能来实现容灾么?

可以,当前TimesTen Cache可以支持RAC和同步模式的Data Guard。

注:在即将推出的新版本中,TimesTen将支持Cache的最大高可用模式,即:TimesTen Cache可以运行在Active-Standby + Subscriber的模式下,配合Oracle数据库的RAC + 异步Data Guard来实现多维度的MAA架构。

TimesTen In-Memory Database_大数据_08

Replication

什么是TimesTen Replication?

TimesTen Replication是内存数据库TimesTen的一个组件。TimesTen Replication技术支持TimesTen服务器节点之间的实时数据复制。Replication支持使用同步或异步数据传输进行active/standby或active/active配置。 

TimesTen In-Memory Database_python_09

TimesTen Replication如何在系统故出现障时确保持续的可用性?

可以将TimesTen Replicaiton配置为将整个TimesTen数据库复制到一个或多个TimesTen节点。发生故障转移后,备用节点将变成活动节点,出现故障的节点可以通过备用(现在为活动)数据库恢复。

我可以复制数据库中选定的表?

可以,表级别的复制和数据库级别的复制均受支持。

TimesTen Replication支持哪些网络协议?

TimesTen Replication在LAN或WAN上的复制节点间使用持久的流式TCP/IP套接字。

TimesTen Replication是双向的吗?

是的,单向和双向复制均受支持。对于双向复制,建议对负载进行分区以避免大量冲突。如果在对相同的数据库行进行更新时发生冲突,TimesTen Replication支持基于时间戳的冲突检测和解决。

TimesTen的Replication支持Cache么?

是的,当前TimesTen内置的高可用复制模式Active-Standby支持TimesTen Cache。

客户选择TimesTen产品的原因有哪些?

当前TimesTen数据库被广泛的应用到实时处理的应用场景当中。客户选择TimesTen产品来为其OLTP应用提供数据库服务的主要原因有:

对实时事件的响应

– 微秒级响应时间
• 一致稳定的响应

– 快速、一致的响应时间 ,低延时

• 数据完全加载到内存、且支持直连模式

– 高峰时段处理超大事务及事件处理
• 提供持续且不间断的服务

– 高可用、在线升级
• 内置的基于复制的Active-Standby + Subscriber架构,支持TimesTen Cache以及跨版本升级

– 标准SQL/关系型模型、标准API、缓存且自动同步Oracle数据库

• 极小的应用代码和接口调整即可提升现有应用

TimesTen In-Memory Database_python_10

已有客户使用TimesTen产品的架构有哪些?

TimesTen在全球有上千家大型客户,客户行业包括电信、金融、证券、保险、交通、政府、互联网等等。以下列举的客户架构图中,有独立使用TimesTen作为核心数据库的架构,也有使用TimesTen Cache加速其Oracle RAC以及Exadata应用的客户。

1. 独立使用TimesTen 数据库的客户:

TimesTen In-Memory Database_大数据_11

2. 已有的Oracle数据库RAC用户,使用TimesTen Cache来加速其OLTP应用并实现读、写分离架构:

TimesTen In-Memory Database_linux_12

3. 已有的Oracle数据库Exadata用户,使用TimesTen Cache来加速其OLTP应用:

TimesTen In-Memory Database_linux_13

目前,TimesTen官方可下载最新的版本是22R1,

https://www.oracle.com/database/technologies/timesten-downloads.html

TimesTen In-Memory Database_python_14