Jump to content

TimesTen: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Updated released version per http://www.oracle.com/technetwork/database/database-technologies/timesten/downloads/index.html
Fix for wrongly used parameter
 
(33 intermediate revisions by 19 users not shown)
Line 1: Line 1:
{{Infobox software
{{Infobox software
| name = Oracle TimesTen In-Memory Database
| name = Oracle TimesTen In-Memory Database
| logo = Oracle logo.svg
| title =
| logo = [[File:Oracle logo.svg|250px]]
| logo size = 250px
| logo caption =
| logo caption =
| screenshot = <!-- [[File: ]] -->
| screenshot = <!-- [[File: ]] -->
| caption =
| caption =
| collapsible =
| collapsible =
| author =
| developer = [[Oracle Corporation]]
| author =
| released = <!-- {{Start date|YYYY|MM|DD|df=yes/no}} -->
| developer = [[Oracle Corporation]]
| discontinued =
| released = <!-- {{Start date|YYYY|MM|DD|df=yes/no}} -->
| latest release version = 18.1.4
| discontinued =
| latest release version = 11''g'' Release 2 (11.2.2.6.0)
| latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest preview version =
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| programming language =
| frequently updated = <!-- DO NOT include this parameter unless you know what it does -->
| operating system =
| programming language =
| platform = Cross-platform
| operating system =
| size =
| platform = Cross-platform
| language =
| size =
| genre = [[Relational database management system]]
| language =
| license = [[Proprietary software|Proprietary]]
| status = Active
| website = [https://www.oracle.com/database/technologies/related/timesten.html TimesTen Home Page]
| genre = [[Relational database management system|RDBMS]]
| license = [[Proprietary software|Proprietary]]
| website = [http://www.oracle.com/technetwork/database/timesten/ TimesTen OTN Home Page]
}}
}}


'''TimesTen''' is an [[In-memory database|in-memory]], [[relational database management system]] with persistence and recoverability. Originally designed and implemented at [[Hewlett-Packard]] labs in [[Palo Alto, California]], TimesTen was spun out into a separate startup in 1996 and acquired by [[Oracle Corporation]] in 2005.<ref name="acquisition">{{cite web|title=Oracle TimesTen Acquisition|url=http://www.oracle.com/us/corporate/Acquisitions/timesten/index.html|publisher=Oracle Corporation}}</ref>
'''Oracle TimesTen In-Memory Database''' is an [[In-memory database|in-memory]], [[relational database management system]] with persistence and high availability. Originally designed and implemented at [[Hewlett-Packard]] labs in [[Palo Alto, California]], TimesTen spun out into a separate startup in 1996 and was acquired by [[Oracle Corporation]] in 2005.<ref name="acquisition">{{cite web|title=Oracle acquires TimesTen database software|url=https://www.computerworld.com/article/2809130/oracle-acquires-timesten-database-software.html|publisher=Computerworld}}</ref>


TimesTen databases are persistent and can be highly available. Because it is an in-memory database it provides very low latency and high throughput. It provides standard relational database APIs and interfaces such as the [[SQL]] and [[PL/SQL]] languages. Applications access TimesTen using standard database APIs such as [[Open Database Connectivity|ODBC]] and [[Java Database Connectivity|JDBC]].
All data within a TimesTen database is located in physical memory (RAM), which means no disk I/O is required for any data operation. This is unlike traditional disk-optimized relational databases such as the [[Oracle Database]], [[IBM DB2|DB2]], [[Informix]] or [[Microsoft SQL Server|SQL Server]], whose designs must contain algorithms that attempt to minimize disk accesses.<ref>{{cite web|last=Wang|first=Wenguang|title=Storage Management in RDBMS|url=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.138.6378|publisher=CiteSeerX}}</ref> TimesTen provides applications with short, consistent response times and very high throughput required by applications with database-intensive workloads.<ref>{{cite web|title=Oracle TimesTen In-Memory Database and Oracle In-Memory Database Cache|url=http://www.oracle.com/technetwork/products/timesten/overview/index.html|publisher=Oracle Corporation}}</ref>


TimesTen can be used as a standalone database, and is also often used as a cache in front of another relational database such as [[Oracle Database]].<ref>{{Cite web|title=Oracle TimesTen Application-Tier Database Cache Overview|url=https://www.oracle.com/database/technologies/timesten-cache.html|website=Oracle}}</ref> It is frequently used in very high volume [[Online transaction processing|OLTP]] applications such as prepaid telecom billing and financial trading. It is also used for read-intensive applications such as very large websites and location-based services.
As memory is far faster than hard disk, TimesTen is heavily used in applications where [[service level agreements]] require very low and predictable response times, such as telecommunication, real-time financial services trading applications, network equipment, and large web applications. Also, unlike other memory caching systems that utilize key-value pairs such as [[Memcached]], [[Hazelcast]] or [[Oracle Coherence|Coherence]], TimesTen is a full-featured relational database that can be accessed with standard APIs like [[ODBC]], [[JDBC]], [[Oracle Call Interface|OCI]], [[Pro*C|Pro*C/C++]] and ODP.NET, and provides the rich functionality of the [[SQL]] query language.


TimesTen can be configured as a shared-nothing clustered system (TimesTen Scaleout) supporting databases much larger than the RAM available on a single machine, and providing scalable throughput and high availability. It can also be configured in replicated active/standby pairs of databases (TimesTen Classic) providing high availability and microsecond response time.
Applications with existing data residing in an [[Oracle Database]] can utilize the combination of the Oracle Database and TimesTen through the ''Oracle In-Memory Database Cache'' database option, in which TimesTen functions as an in-memory cache database in front of the Oracle Database.<ref>{{cite web|title=Oracle In-Memory Database Cache Product Website|url=http://www.oracle.com/us/products/database/in-memory-database-cache-066510.html|publisher=Oracle Corporation}}</ref>


TimesTen runs on most major [[Unix]]/[[Linux]] platforms and on various [[Microsoft Windows|Windows]] platforms, in both 32-bit and 64-bit modes.<ref>{{cite web|title=TimesTen 11.2.2 Supported Platforms (from TimesTen FAQ)|url=http://www.oracle.com/technetwork/products/timesten/faq-091526.html#GENERAL6}}</ref>
TimesTen runs on [[Linux]], [[Oracle Solaris|Solaris]] and [[IBM AIX|AIX]] and also supports client applications running on [[Microsoft Windows|Windows]] and [[macOS]].<ref>
{{cite web|title=TimesTen Supported Platforms (from TimesTen FAQ)|url=http://www.oracle.com/technetwork/products/timesten/faq-091526.html#GENERAL6}}
</ref>


==Technology==
==Technical Overview==


TimesTen is an [[In-memory database| in-memory database management]] technology that provides very fast data access time. The reason TimesTen is so fast is because it was built from the ground up around the idea that all its data will reside in physical memory (RAM) during run time.<ref>{{cite web|title=Why is Oracle TimesTen In-Memory Database fast? (TimesTen 11.2.2 Documentation)|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/overview.htm#TTCIN120|publisher=Oracle Corporation}}</ref> The result is very low response times, which enable high throughput, even on commodity hardware.<ref>{{cite web|title=Extreme Performance Using Oracle TimesTen In-Memory Database|url=http://www.oracle.com/technetwork/products/timesten/overview/wp-timesten-tech-132016.pdf|publisher=Oracle Corporation}}</ref>
TimesTen is an [[in-memory database]] that provides very fast data access time. It ensures that all data will reside in physical memory (RAM) during run time. This allows its internal search and data management algorithms used to be simplified, resulting in very low response times even on commodity hardware. TimesTen can make use of available [[random-access memory|RAM]] available on its host machine, up to terabytes in size; using TimesTen Scaleout databases much larger than the RAM of a single machine are supported.


=== Database Concepts ===
===Architecture and Component Overview===
TimesTen supports standard relational database concepts. Tables consist of rows; rows consist of columns of specific data types. Data is manipulated using SQL. Transactions allow data to be manipulated with appropriate levels of atomicity and isolation; TimesTen supports all standard [[ACID|ACID properties]] expected of relational databases.


Datatypes supported by TimesTen are in general a subset of those supported by Oracle Database, including NUMBER, VARCHAR and LOBs; TimesTen specific datatypes such as binary integers are also supported.
====Shared Libraries====


Applications access TimesTen databases using standard relational APIs such as [[Open Database Connectivity|ODBC]], [[Java Database Connectivity|JDBC]], OCI, and ODPI-C. This allows applications to be written in many programming languages and environments. Applications use those APIs to access and manipulate data using standard SQL. Stored procedures can also be implemented and executed using PL/SQL.
TimesTen functionality is contained in a set of shared libraries that application developers link to their application, allowing TimesTen to execute as part of the application's process. This shared library approach is different than conventional [[Relational database management system|RDBMS]] systems where the database is essentially a set of distinct processes to which applications connect via some form of inter-process communication. This communication may take the form of a [[Client-server model|client/server]] connection spanning over a [[Computer network|network]] or it may be some form of intra-system IPC such as a Unix domain socket connection or a shared memory based connection mechanism.<ref>{{cite web|title=Shared Libraries -- Oracle In-Memory Database Cache Architecture and Components Documentation|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/arch.htm#BAAEBJEF}}</ref>


=== Persistence ===
====Memory-resident Database====
Though an in-memory database, TimesTen databases are persistent and can be [[High availability|highly available]]. At runtime all TimesTen data is in RAM, however TimesTen utilizes non-volatile storage for database persistence and recoverability. TimesTen stores snapshots of the database, called checkpoint files, in a local filesystem. In addition all modifications to the database are also recorded in transaction log files. The combination of checkpoint files and transaction log files allow TimesTen to recover the database in the event of a system failure.


In addition TimesTen databases can be replicated to multiple machines to provide for high availability and disaster recovery.
The data for each active TimesTen database is stored in a shared memory segment, allowing multiple TimesTen databases to be active concurrently, and also allowing an application to simultaneously access several TimesTen databases on the same system. On 64-bit platforms, the size of a TimesTen database is practically limited only by the amount of [[RAM]] available on its host computer. One customer has a production TimesTen database approaching two [[terabyte]]s in size<ref>{{cite web|title=Extreme Performance with In-Memory Database Technology – Real Life Stories -- USPS (presented at Open World 2010)|url=http://www.oracle.com/technetwork/products/timesten/overview/usps-customer-case-1446282.pdf|publisher=Oracle Corporation}}</ref> utilized for [[OLTP|on-line transaction processing]].


=== Connection Methods ===
====Database Processes====
Applications may connect to TimesTen databases either in a traditional client/server manner using TCP/IP as the underlying transport or in direct mode. Direct mode allows applications running on the same machine as the database to avoid network stack and [[context switch]]ing overheads. At runtime the data in a TimesTen database is stored in [[shared memory]]; this allows application processes to directly attach to the database memory and access it without [[Inter-process communication|IPC]] or context switch overheads. The same APIs and capabilities are available in both modes.


===Caching===
Starting TimesTen requires starting a background process called the TimesTen main daemon, which then starts multiple TimesTen subdaemon processes to manage each database created in the system. These subdaemon processes perform database operations such as:
# loading and unloading the database into RAM
# writing periodic fuzzy [[#Checkpoint and Transaction Log Files|checkpoints]] of the TimesTen database to disk
# writing transaction log records from the in-memory log buffer to the [[#Checkpoint and Transaction Log Files|transaction log files]] on disk
# handling deadlocks


Because TimesTen databases are persistent and can provide high availability, they can be used as the only database in many solutions.
====Connection Modes====


However, TimesTen databases are often used alongside other databases such as Oracle Database, with a TimesTen database serving as a cache for a subset of data in the (perhaps larger) traditional database.
Client applications that connect to traditional disk-based relational databases typically use [[Internet protocol suite|TCP/IP]] or another [[Inter-process communication|IPC]] mechanism to communicate with a database server process. In TimesTen, applications that reside in the same server as the TimesTen database can connect directly to the in-memory image of the database directly by using the TimesTen direct driver, eliminating the need for any inter-process communication of any kind, thus providing extremely fast performance.<ref>{{cite web|title=TimesTen Direct Driver Connection Overview|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/arch.htm#BAAGBJAC|publisher=Oracle Corporation}}</ref> If the application resides on a remote server, the application can also connect to the TimesTen database using the traditional [[Client–server model|client/server model]] of data access.


TimesTen provides the capability to cache data from an [[Oracle Database]] source. To utilize Oracle Database caching, one defines one or more SQL objects known as ''cache groups''. A ''cache group'' is a set of one or more related database tables and allows for subsets of its rows and/or columns. Database tables in a cache group must each have a defined [[Unique key|primary key]] or a unique index declared across a set of non-nullable columns and must be related in a parent-child hierarchy via [[Unique key|primary key]]-[[foreign key]] constraints. [[SQL]] predicates can be used to control what data is to be cached.
===Data Availability and Integrity===


Once a cache group is defined, the cache group can then be "loaded", allowing Oracle Database data to be cached in TimesTen. Applications can then read from and write to cache groups, and all data modifications will then be synchronized with the corresponding Oracle Database tables.
====Checkpoint and Transaction Log Files====


Other solutions such as [[Oracle GoldenGate|Oracle Golden Gate]] can also be used to synchronize data between TimesTen and other databases, also allowing TimesTen to be used as a very fast cache in front of other databases.
All TimesTen data exists in RAM, however TimesTen does utilize non-volatile storage (such as a hard disk) for database persistence and recoverability. A TimesTen database stores all transactional data modifications in an in-memory log buffer, which is eventually persisted to disk in the form of transaction log files. In addition, TimesTen also persists snapshots of the in-memory database, called checkpoint files, to disk. The combination of checkpoint files and transaction log files allow TimesTen to provide recoverability in the event of a system failure. TimesTen implements a parallel log manager in order to maximize throughput on large SMP systems.


== Deployment Modes ==
By default, TimesTen operates in non-durable commit mode. In this mode, a commit operation occurs purely in memory, and the writing of the log records for the transaction to disk occurs asynchronously to the commit.<ref>{{cite web|title=TimesTen Replication Overview (TimesTen 11.2.2 Documentation)|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21633/trans.htm#CIHJJHCJ|publisher=Oracle Corporation}}</ref> This provides for very low response times and very high throughput at the cost of the potential for some small amount of data loss in the event of a system failure. A true synchronous commit mode (durable commit mode) is also provided; this mode avoids the possibility of any data loss at the cost of reduced performance. When operating in synchronous commit mode, TimesTen provides automatic group commit optimization. TimesTen allows the architect / developer to balance performance versus data safety by providing control of the commit mode at three different levels: database, connection, and transaction. Another option for data protection and high-availability is to use TimesTen replication.<ref>{{cite web|title=TimesTen Replication Overview (TimesTen 11.2.2 Documentation)|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/availability.htm#CHDJFEHJ|publisher=Oracle Corporation}}</ref>
TimesTen can be configured in two ways, called TimesTen Classic and TimesTen Scaleout.


====Replication====
=== TimesTen Classic ===
TimesTen Classic implements in-memory databases that are implemented on a single machine, but which can be replicated to other machines for high availability. Databases provided by TimesTen Classic provide extremely low latency, as queries do not require any network I/O and all data is local.


The TimesTen replication mechanism enables you to design a [[High availability|highly available]] system by sending database updates between two or more hosts. With TimesTen replication, a ''master'' host sends updates to one or more ''subscriber'' hosts. TimesTen recommends an active-standby pair configuration for highest availability.<ref>{{cite web|title=Oracle TimesTen 11.2.2 Replication Overview|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/arch.htm#BAABECIB|publisher=Oracle Corporation}}</ref> An active-standby pair consists of two master databases, an ''active'' and a ''standby'' database. In addition to the active and standby databases, multiple subscriber databases can be configured to serve as disaster recovery copies or read-only farms.
The TimesTen Classic replication mechanism enables a [[High availability|highly available]] system by sending database updates between two or more hosts. Typically an active-standby pair of databases is used for highest availability.<ref>{{cite web|title=TimesTen In-Memory Database Replication Guide|url=https://docs.oracle.com/database/timesten-18.1/TTREP/toc.htm|url-status=dead|publisher=Oracle Corporation|archiveurl=https://web.archive.org/web/20211105205914/https://docs.oracle.com/database/timesten-18.1/TTREP/toc.htm|archivedate=2021-11-05|access-date=2021-11-05}}</ref> In addition to the active and standby databases, multiple subscriber databases can be configured to serve as disaster recovery copies or read-only farms.


=== TimesTen Scaleout ===
Replication in TimesTen is implemented by the ''replication agent'', a daemon process that aims at every TimesTen database involved in replication. The replication agent sends and receives updates between databases by communicating with the replication agents of other databases involved in the same replication scheme. Change capture is via log-mining with in-memory optimization; under normal operating conditions change records are captured from the in-memory log buffer with no need for any disk I/O. Communication between replication agents is via an efficient stream-oriented protocol built on top of regular [[Internet protocol suite|TCP/IP]] connections.<ref>{{cite web|title=TimesTen Replication Configuration Overview|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/availability.htm#CHDJFEHJ|publisher=Oracle Database}}</ref> The replication agent is multi-threaded and in the 11.2.2 release, TimesTen supports parallel replication for increased throughput. The replication workload is automatically parallelized to maximize throughput while still maintaining correctness.<ref>{{cite web|title=TimesTen Parallel Replication Overview|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21635/setup.htm#CHDGDCFF|publisher=Oracle Database}}</ref>
TimesTen Scaleout allows a single TimesTen database to span many machines. A [[shared-nothing architecture]] is used to distribute data across multiple TimesTen instances running on many machines. All machines can query and modify all data in the database, and all database [[ACID|ACID properties]] are fully supported. Multiple copies of data are kept for high availability. Databases provided by TimesTen Scaleout can be larger than the amount of RAM available on a single machine, and database throughput is scalable as more machines are added.


== Typical Uses ==
===In-Memory Database Cache===


* Telecom billing and call processing
TimesTen provides the capability to cache data from an [[Oracle Database]] source. When used in this fashion, TimesTen is referred to as ''Oracle In-Memory Database Cache (IMDB Cache)'', an Oracle Database product option.<ref>{{cite web|title=Oracle IMDB Cache Overview (TimesTen 11.2.2 Documentation)|url=http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/cache.htm#CBBDAFJC|publisher=Oracle Corporation}}</ref>
* Financial services security trading

* Scalable database services in very large websites
To utilize Oracle Database caching, one defines one or more SQL objects known as ''cache groups''. A ''cache group'' is a set of one or more related database tables and allows for subsets of its rows and/or columns. Database tables in a cache group must each have a defined [[Unique key|primary key]] or a unique index declared across a set of non-nullable columns and must be related in a parent-child hierarchy via [[Unique key|primary key]]-[[foreign key]] constraints. [[SQL]] predicates can be used to control what data is to be cached.
* Location-based services

Once a cache group is defined, the cache group can then be "loaded", allowing Oracle Database data to be cached in TimesTen. Applications can then read from and write to cache groups, and all data modifications will then be synchronized with the corresponding Oracle database tables either automatically or manually.

===Event Notification===

TimesTen provides an event notification mechanism through the TimesTen Transaction Log API (XLA). XLA provides functions which allow applications to be notified of data changes occurring in TimesTen tables (and also [[Data Definition Language|DDL]] occurring in the TimesTen database). XLA can also be used in conjunction with [[materialized view]]s to simplify the process of monitoring changes made to rows spanning multiple tables. XLA works by mining the TimesTen transaction log stream in a similar manner to the replication agent.

Database application deployments that do not include an Oracle database which want to use TimesTen as an in-memory cache database can use XLA to capture updates made to the TimesTen database and, via custom application code, apply these updates to their backend database. They can also utilize a real-time data integration tool like [http://www.oracle.com/technetwork/middleware/goldengate/overview/index.html Oracle GoldenGate] to replicate changes from their backend database into TimesTen.


==History==
==History==


TimesTen was founded in [[Hewlett-Packard|HP]] labs by Marie-Anne Neimat,<ref name="marie-anne">{{cite web|title=2004 Fast 50 Winner - Marie-Anne Niemat|url=http://www.fastcompany.com/fast50_04/winners/neimat.html|publisher=Fast Company}}</ref> Sherry Listgarten, and Kurt Shoens, under the name of "Smallbase".<ref name="Smallbase">{{cite web|title=TimesTen Technology For Epoch Well|url=http://www.ppt2txt.com/r/db4d1246/}}</ref> At HP, Jean-René Bouvier decided to embed Smallbase into [[HP OpenCall]], which made the first commercial use of the product in 1995.<ref name="Jean-Rene Bouvier">{{cite web|title=HP Selects TimesTen's Real-time Database for Its HP OpenCall Intelligent Network Platforms.|url=http://www.thefreelibrary.com/HP+Selects+TimesTen's+Real-time+Database+for+Its+HP+OpenCall...-a054716313|publisher=Business Wire}}</ref>
TimesTen was founded in [[Hewlett-Packard|HP]] labs by Marie-Anne Neimat,<ref name="marie-anne">{{cite magazine|title=2004 Fast 50 Winner - Marie-Anne Niemat|url=http://www.fastcompany.com/fast50_04/winners/neimat.html|magazine=Fast Company|date=December 2003}}</ref> Sherry Listgarten, Kurt Shoens and Kevin Wilkerson, under the name of "Smallbase". At HP, Jean-René Bouvier decided to embed Smallbase into [[HP OpenCall]], which made the first commercial use of the product in 1995. In 1996, the product was spun off into a separate [[venture capital]] funded [[startup company]] based in [[Mountain View, California]] under the leadership of CEO Jim Groff. The product became popular for telecommunications equipment, as response times in the [[milliseconds]] or even [[microseconds]] were required for applications like [[Packet (information technology)|packet]] switching. The company had 90 employees and was profitable when it was acquired by [[Oracle Corporation]] in 2005.<ref>{{cite news|title=Oracle Acquires TimesTen for Real-Time Database|url=http://www.itjungle.com/tug/tug061605-story03.html|newspaper=The Unix Guardian|url-status=dead|archiveurl=https://web.archive.org/web/20120126224204/http://www.itjungle.com/tug/tug061605-story03.html|archivedate=2012-01-26}}</ref> After the acquisition, many Oracle database features were added to TimesTen such as support for [[PL/SQL]] and integration with [[Oracle SQL Developer]] and [[Oracle Enterprise Manager]]. TimesTen Scaleout was added in 2018.
In 1996, the product was spun off into a separate [[venture capital]] funded [[Startup company|startup]] company based in [[Mountain View, California]] under the leadership of CEO Jim Groff. The product became popular for telecommunications equipment, as response times in the [[milliseconds]] or even [[microseconds]] were required for applications like [[Packet (information technology)|packet]] switching. The company had 90 employees and was profitable when it was acquired by [[Oracle Corporation]] in 2005.<ref>{{cite news|title=Oracle Acquires TimesTen for Real-Time Database|url=http://www.itjungle.com/tug/tug061605-story03.html|newspaper=The Unix Guardian}}</ref> After the acquisition, Neimat remained as the director of TimesTen development at Oracle,<ref name="marie-anne"/> adding many Oracle database features to the product such as support for [[PL/SQL]] and integration with [[Oracle SQL Developer]] and [[Oracle Enterprise Manager]].

==Customers==

Over 1,500 companies around the globe use TimesTen for their real-time applications.<ref name="acquisition"/> TimesTen is also embedded in the [http://www.oracle.com/us/solutions/ent-performance-bi/business-intelligence/exalytics-bi-machine/overview/index.html Oracle Exalytics] appliance, released in 2012.


==References==
==References==
Line 104: Line 94:


==External links==
==External links==
*[http://www.oracle.com/us/products/database/timesten/overview/index.html TimesTen Product Website on oracle.com]
*[https://www.oracle.com/database/technologies/related/timesten.html TimesTen Product Website]
*[http://www.oracle.com/technetwork/database/timesten TimesTen OTN website]
*[https://docs.oracle.com/database/timesten-18.1/index.htm TimesTen documentation]
*[https://blogs.oracle.com/timesten/ TimesTen Blog]
*[https://blogs.oracle.com/timesten/ TimesTen Blog]
*[http://www.oracle.com/technetwork/products/timesten/overview/timesten-imdb-086887.html TimesTen In-Memory Database Overview]
*[https://github.com/oracle/oracle-timesten-samples TimesTen Samples]

*[http://www.oracle.com/technetwork/products/timesten/overview/ds-timesten-imdb-129255.pdf TimesTen In-Memory Database Product Sheet]
{{Oracle}}
*[http://www.oracle.com/us/products/database/in-memory-database-cache-066510.html Oracle In-Memory Database Cache Product Website on oracle.com]
*[http://www.oracle.com/technetwork/products/timesten/overview/timesten-imdb-cache-101293.html Oracle In-Memory Database Cache Overview]
*[http://www.oracle.com/technetwork/products/timesten/overview/ds-imdb-cache-1470955.pdf Oracle In-Memory Database Cache Product Sheet]
*[https://forums.oracle.com/forums/forum.jspa?forumID=244 Oracle TimesTen Community Discussion Forum]
*[http://download.oracle.com/otn_hosted_doc/timesten/1122/quickstart/html/main/home.html TimesTen 11.2.2 Quick Start Guide]
*[http://apex.oracle.com/pls/apex/f?p=44785:2:1127475523458701:FORCE_QUERY::2,CIR,RIR:P2_TAGS:TimesTen TimesTen Demos in the Oracle Learning Library]


[[Category:Relational database management systems]]
[[Category:Relational database management systems]]

Latest revision as of 09:54, 2 June 2024

Oracle TimesTen In-Memory Database
Developer(s)Oracle Corporation
Stable release
18.1.4
PlatformCross-platform
TypeRelational database management system
LicenseProprietary
WebsiteTimesTen Home Page

Oracle TimesTen In-Memory Database is an in-memory, relational database management system with persistence and high availability. Originally designed and implemented at Hewlett-Packard labs in Palo Alto, California, TimesTen spun out into a separate startup in 1996 and was acquired by Oracle Corporation in 2005.[1]

TimesTen databases are persistent and can be highly available. Because it is an in-memory database it provides very low latency and high throughput. It provides standard relational database APIs and interfaces such as the SQL and PL/SQL languages. Applications access TimesTen using standard database APIs such as ODBC and JDBC.

TimesTen can be used as a standalone database, and is also often used as a cache in front of another relational database such as Oracle Database.[2] It is frequently used in very high volume OLTP applications such as prepaid telecom billing and financial trading. It is also used for read-intensive applications such as very large websites and location-based services.

TimesTen can be configured as a shared-nothing clustered system (TimesTen Scaleout) supporting databases much larger than the RAM available on a single machine, and providing scalable throughput and high availability. It can also be configured in replicated active/standby pairs of databases (TimesTen Classic) providing high availability and microsecond response time.

TimesTen runs on Linux, Solaris and AIX and also supports client applications running on Windows and macOS.[3]

Technology

[edit]

TimesTen is an in-memory database that provides very fast data access time. It ensures that all data will reside in physical memory (RAM) during run time. This allows its internal search and data management algorithms used to be simplified, resulting in very low response times even on commodity hardware. TimesTen can make use of available RAM available on its host machine, up to terabytes in size; using TimesTen Scaleout databases much larger than the RAM of a single machine are supported.

Database Concepts

[edit]

TimesTen supports standard relational database concepts. Tables consist of rows; rows consist of columns of specific data types. Data is manipulated using SQL. Transactions allow data to be manipulated with appropriate levels of atomicity and isolation; TimesTen supports all standard ACID properties expected of relational databases.

Datatypes supported by TimesTen are in general a subset of those supported by Oracle Database, including NUMBER, VARCHAR and LOBs; TimesTen specific datatypes such as binary integers are also supported.

Applications access TimesTen databases using standard relational APIs such as ODBC, JDBC, OCI, and ODPI-C. This allows applications to be written in many programming languages and environments. Applications use those APIs to access and manipulate data using standard SQL. Stored procedures can also be implemented and executed using PL/SQL.

Persistence

[edit]

Though an in-memory database, TimesTen databases are persistent and can be highly available. At runtime all TimesTen data is in RAM, however TimesTen utilizes non-volatile storage for database persistence and recoverability. TimesTen stores snapshots of the database, called checkpoint files, in a local filesystem. In addition all modifications to the database are also recorded in transaction log files. The combination of checkpoint files and transaction log files allow TimesTen to recover the database in the event of a system failure.

In addition TimesTen databases can be replicated to multiple machines to provide for high availability and disaster recovery.

Connection Methods

[edit]

Applications may connect to TimesTen databases either in a traditional client/server manner using TCP/IP as the underlying transport or in direct mode. Direct mode allows applications running on the same machine as the database to avoid network stack and context switching overheads. At runtime the data in a TimesTen database is stored in shared memory; this allows application processes to directly attach to the database memory and access it without IPC or context switch overheads. The same APIs and capabilities are available in both modes.

Caching

[edit]

Because TimesTen databases are persistent and can provide high availability, they can be used as the only database in many solutions.

However, TimesTen databases are often used alongside other databases such as Oracle Database, with a TimesTen database serving as a cache for a subset of data in the (perhaps larger) traditional database.

TimesTen provides the capability to cache data from an Oracle Database source. To utilize Oracle Database caching, one defines one or more SQL objects known as cache groups. A cache group is a set of one or more related database tables and allows for subsets of its rows and/or columns. Database tables in a cache group must each have a defined primary key or a unique index declared across a set of non-nullable columns and must be related in a parent-child hierarchy via primary key-foreign key constraints. SQL predicates can be used to control what data is to be cached.

Once a cache group is defined, the cache group can then be "loaded", allowing Oracle Database data to be cached in TimesTen. Applications can then read from and write to cache groups, and all data modifications will then be synchronized with the corresponding Oracle Database tables.

Other solutions such as Oracle Golden Gate can also be used to synchronize data between TimesTen and other databases, also allowing TimesTen to be used as a very fast cache in front of other databases.

Deployment Modes

[edit]

TimesTen can be configured in two ways, called TimesTen Classic and TimesTen Scaleout.

TimesTen Classic

[edit]

TimesTen Classic implements in-memory databases that are implemented on a single machine, but which can be replicated to other machines for high availability. Databases provided by TimesTen Classic provide extremely low latency, as queries do not require any network I/O and all data is local.

The TimesTen Classic replication mechanism enables a highly available system by sending database updates between two or more hosts. Typically an active-standby pair of databases is used for highest availability.[4] In addition to the active and standby databases, multiple subscriber databases can be configured to serve as disaster recovery copies or read-only farms.

TimesTen Scaleout

[edit]

TimesTen Scaleout allows a single TimesTen database to span many machines. A shared-nothing architecture is used to distribute data across multiple TimesTen instances running on many machines. All machines can query and modify all data in the database, and all database ACID properties are fully supported. Multiple copies of data are kept for high availability. Databases provided by TimesTen Scaleout can be larger than the amount of RAM available on a single machine, and database throughput is scalable as more machines are added.

Typical Uses

[edit]
  • Telecom billing and call processing
  • Financial services security trading
  • Scalable database services in very large websites
  • Location-based services

History

[edit]

TimesTen was founded in HP labs by Marie-Anne Neimat,[5] Sherry Listgarten, Kurt Shoens and Kevin Wilkerson, under the name of "Smallbase". At HP, Jean-René Bouvier decided to embed Smallbase into HP OpenCall, which made the first commercial use of the product in 1995. In 1996, the product was spun off into a separate venture capital funded startup company based in Mountain View, California under the leadership of CEO Jim Groff. The product became popular for telecommunications equipment, as response times in the milliseconds or even microseconds were required for applications like packet switching. The company had 90 employees and was profitable when it was acquired by Oracle Corporation in 2005.[6] After the acquisition, many Oracle database features were added to TimesTen such as support for PL/SQL and integration with Oracle SQL Developer and Oracle Enterprise Manager. TimesTen Scaleout was added in 2018.

References

[edit]
  1. ^ "Oracle acquires TimesTen database software". Computerworld.
  2. ^ "Oracle TimesTen Application-Tier Database Cache Overview". Oracle.
  3. ^ "TimesTen Supported Platforms (from TimesTen FAQ)".
  4. ^ "TimesTen In-Memory Database Replication Guide". Oracle Corporation. Archived from the original on 2021-11-05. Retrieved 2021-11-05.
  5. ^ "2004 Fast 50 Winner - Marie-Anne Niemat". Fast Company. December 2003.
  6. ^ "Oracle Acquires TimesTen for Real-Time Database". The Unix Guardian. Archived from the original on 2012-01-26.
[edit]