oracle timesten (in-memory database cache) · 2009-04-16 · реального времени...

75
<Insert Picture Here> Oracle TimesTen (In-Memory Database Cache) Геннадий Сигалаев Oracle CIS ADVANCED COMPRESSION ACTIVE DATA GUARD REAL APPLICATION TESTING IN MEMORY DATABASE CACHE ORACLE VM TOTAL RECALL SQL PLAN BASELINE RESULT CACHE SQL PERFOMANCE ANALYZER PERFOMANCE OPTIMIZER FEATURES

Upload: others

Post on 19-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

<Insert Picture Here>

Oracle TimesTen (In-Memory Database Cache)

Геннадий Сигалаев Oracle CIS

ADVANCED COMPRESSION

ACTIVE DATA GUARD

REAL APPLICATION TESTING

IN MEMORY DATABASE CACHE

ORACLE VM

TOTAL RECALL

SQL PLAN BASELINE

RESULT CACHE

SQL PERFOMANCE ANALYZER

PERFOMANCE

OPTIMIZER FEATURES

Page 2: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

<Insert Picture Here>

План презентации

• Для чего необходим IMDBC?

• Архитектура

• Использование IMDBC

• Подключение

• Кэш группы• READ ONLY

• SYNCHRONOUS WRITETHROUGH (SWT)

• ASYNCHRONOUS WRITETHROUGH (AWT)

• USERMANAGED

• Возможности

• Демонстрации

Page 3: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Когда мы представляем “База данных…”

RDBMS + соединение по сети

Но это НЕ достаточно быстро для

Критичных к времени отклика приложений

Типичное решение: Сделать свой, специфичный для приложения, буферный

‘кэш’…..

SQLSQL

ResultsResultsRDBMSApplication

Page 4: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Что если ...

Disk- based

RDBMSApplication

• Со всеми возможностями реляционной СУБД

• Ориентированный на работу в оперативной памяти, быстрый

• Высоко доступный, восстанавливаемый

•• СоСо всемивсеми возможностямивозможностями реляционнойреляционной СУБДСУБД

•• ОриентированныйОриентированный нана работуработу вв оперативнойоперативной памятипамяти, , быстрыйбыстрый

•• ВысокоВысоко доступныйдоступный, , восстанавливаемыйвосстанавливаемый

SQL

Results

Кэш приложения и Базу Данных в Один продукт с

Page 5: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

In-Memory Database Cache

Application Application

In-Memory Database Cache - это возможность использования СУБДреального времени Oracle TimesTen, как быстрый кэш над СУБДOracle Database

Page 6: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Почему TimesTen быстрее:Дисковая СУБД

Hash

Function

Linked

Lists Into

Buffers

Buffer Pool

Приложение

SQL

Копирование

записей в

Private Buffer

Data

Page

Предположим,

что страница уже

в памяти...

Пересылка

буфера в

приложение

(via IPC)

Table#Page#Query

Optimiser

/Executor

Определение адреса искомой страницы на диске

Вычисление указателя на

адрес страницы (Page Pointer) с

использованием хэширования

и линейного поиска

IPC

Page 7: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Почему TimesTen быстрее:TimesTen

Memory-Resident

Database

Приложение

SQL

Вся БД загружена с

диска в память до

начала работы

Memory AddressQuery

Optimiser /

Executor

Data Store

Вычисление прямого адреса в памяти для

искомой записи

Копирование

данных в буфера

приложения

Page 8: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Почему TimesTen быстрее?

• TimesTen нужно меньше CPU ресурсов, чем дисковой СУБД, чтобы выполнить ту же работу

• Используются физические адреса записей

• Не нужно преобразовывать логические адреса в физические

• Структуры данных, например индексы, оптимизированы для работы в RAM

Page 9: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Д е м о н с т р а ц и я

Использование

In-Memory Database Cache

Page 10: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

10

CDRS

PK Id

Creation

Tel_no1

Tel_no2

Duration

CALLS

PK Id

Creation

Account1_id

Account2_id

Duration

Amount

Tel_Part_No

ACCOUNTS

PK,FK1,FK2 Id

Creation

Plan_id

Amount

Tel_Part_No

PLANS

FK1 IdCreation

Account1_id

Duration

Amount

Tel_Part_No

Схема данных системы “DBOD Billing”

CDRs txt-files

Page 11: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

11

Таблица “сырых” звонков (CDR)

Page 12: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

12

Таблица счетов (accounts)

Page 13: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

13

Таблица просчитанных звонков (calls)

Page 14: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Oracle VM 2.1.1

Используемое окружение

DBOD Billing in Oracle Database

OEL 5U2OEL 5U2

“”DBOD Billing”

Oracle Client 11gJDBC OCI Driver

Oracle*NET

Page 15: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

D E M O N S T R A T I O N

“DBOD Billing” in

Oracle Database

Page 16: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Oracle VM 2.1.1

Используемое окружение

DBOD Billing in Oracle TimesTen

OEL 5U2

Oracle*NET

OEL 5U2

“DBOD Billing”

Page 17: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Создание кэш-групп в TimesTenДля сырых звонков (таблица CDRS)

call ttCacheUidPwdSet(‘cacheadmin',‘cacheadmin');

create asynchronous writethrough cache group cdrs_cg

from cdrs (id number(22) not null,

creation date,

tel_no1 integer,

tel_no2 integer,

duration integer,

Primary key (id) );

commit;

Page 18: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Создание кэш-групп в TimesTenДля обработанных звонков (таблица CALLS)

create asynchronous writethrough cache group calls_cg

from calls (id number(22) not null,

creation date,

account1_id integer,

account2_id integer,

duration number,

amount binary_double,

Primary key (id));

commit;

Page 19: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Создание кэш-групп в TimesTenДля счетов и тарифов: таблицы ACCOUNTS, PLANS

create asynchronous writethrough cache group data_cg from

plans (id number(12) not null,

pricepermin binary_double,

name varchar2(32),

Primary key (id))

unique Hash on (id) pages=1,

accounts (id number(12) not null,

tel_no number(10,0),

plan_id number(12),

amount binary_double,

Primary key (id),

FOREIGN KEY (plan_id) REFERENCES plans(id))

unique Hash on (id) pages=3900;

Page 20: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

D E M O N S T R A T I O N

“DBOD Billing” in

Oracle TimesTen

Page 21: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Архитектура

Page 22: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Архитектура Oracle TimesTen

Checkpoint files (.dsN)

Network

Client/Server applications

Direct-linked application

TimesTen shared libraries

Applicationbusiness logic

TimesTen Client lib

Application

Transaction Logs files (.logN)

In-Memory

Database

• Shared libraries

• Memory-resident data

structures

• Database processes

• Administrative programs

• Checkpoint and log files

TimesTen shared libraries

Applicationbusiness logic

Database processes

Administrative programs

Handle client/server requests

Reserve space files(.resN)

Page 23: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Использование

Page 24: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Использование IMDBC

• Oracle Database• Пользователь tttest – владелец объектов

• Пользователь cacheadmin – администратор кэша

• Oracle TimesTen• Пользователь tttest – должен совпадать с именем пользователя - владельца объектов в Oracle Database.

(Пароль может отличаться)

• Создать ODBC DSN в sys.odbc.ini

CREATE USER tttest IDENTIFIED BY 'tttest‘;

GRANT DDL,ADMIN TO tttest;

Page 25: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

ODBC DSN

[dstest]

Driver=/app/oracle/product/7.0.5/tt/TimesTen/tt70/lib/libtten.so

DataStore=/app/oracle/ttdata/dstest

DatabaseCharacterSet=AL32UTF8

PermSize=256

TempSize=50

UID=tttest

OracleID=orcl

OraclePWD=tttest

Page 26: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

TimesTen Data Store

• Две части в TimesTen Data Store• Permanent partition (PermSize)

• Сохраняемая секция содержит сохраняемые элементы данных

• Только permanent partition записывается на диск во время checkpoint

• Temporary partition (TempSize)

• Временная секция содержит временные данные, генерируемые во время выполнения операций

• TimesTen Data Store size = PermSize + TempSize

• У вашей системы должно быть достаточно RAM, чтобы содержать всю базу данных (dssize, ttSize)

• Размер разделяемого сегмента

• PermSize + TempSize + LogBuffSize+7mb overhead

Page 27: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Database Size Limits by

Platform for TimesTen 7.0

Platform

Max

size of

a single

databas

e

Max Size of All

database on a single system

Notes

HP-UX (32-bit) 1GB Approx. 1.75GB

In HP-UX, 32 bit applications can use databases which are taken from two different areas of virtual memory - a 1GB area as well as a 750MB area. Each area can contain one or more databases, but a database must completely fit within a single area. All applications share the same shared memory areas.

AIX (32-bit) /

Linux (x86)Solaris (32-bit)

2GBLimited by system configuration

On Solaris, settings in /etc/system determine system maximums

Windows (32-bit)

Variable

(675MB-

1.5GB)

Variable

Database size limits on Microsoft Windows vary depending on OS facilities that the application uses. Simple applications have been seen to allow 907MB databases, while complex, web-based, applications have been seen to allow as little as 675MB for TimesTen database size. The reason for this has to do with how DLLs are loaded into memory. Manufacturers of DLLs can choose where they reside within memory. They tend to be spread out across available memory and thus segment remaining memory that might otherwise be used byTimesTen databases. Since TimesTen requires a single contiguous block of shared memory, finding a single large block within Windows’s address space is dependent on the number and placement of DLLs within the address space.

HP-UX / AIX /

Linux

Solaris /

Windows (64-

bit)

Very Large

Limited by system configuration

Database size on 64 bit platforms is limited by the amount of physical memory available and practical limits.On Solaris, settings in /etc/system determine system maximums. On HP-UX, The issues described above under 32-bit HP-UX do not apply to 64-bit processes.

Page 28: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Хранение данных (INLINE)

• Постоянной длины (date, number и др.)

Command> desc readtab;

Table TTTEST.READTAB:

Columns:

*A NUMBER NOT NULL

B VARCHAR2 (100) INLINE

1 table found.

(primary key columns are indicated with *)

Page 29: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Хранение данных (OUT OF LINE )

• Переменной длинны (varchar2 и др.)

Command> desc test_size;

Table TTTEST.TEST_SIZE:

Columns:

*ID NUMBER NOT NULL

NAME_1 VARCHAR2 (200) NOT INLINE

NAME_2 VARCHAR2 (200) NOT INLINE

NAME_3 VARCHAR2 (500) NOT INLINE

1 table found.

(primary key columns are indicated with *)

Page 30: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Подключение

Page 31: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Подключение к IMDB Cache

Два вида подключения:

• Direct connection

• Client/server connection

Интерфейсы:

• JDBC

• ODBC

TimesTen Libraries

Application

TimesTen Libraries

Application

Checkpoint files

Network

Client-Server

Direct-linked

TimesTen Libraries

Application

TimesTen Client lib

Application

Transaction Logs

In-Memory

Database

Page 32: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Direct connection

TimesTen Libraries

Application

Data store

TimesTen

deamon

TimesTen

subdeamon

Direct connection – приложение и data store находяться в одном сегменте разделяемой памяти

Checkpoint files Transaction Logs files

“deadman” socket connection

Page 33: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Подключение

• Командный интерпретатор ttisql

[oracle@localhost ~]$ ttisql

Copyright (c) 1996-2008, Oracle. All rights reserved.

Type ? or "help" for help, type "exit" to quit ttIsql.

All commands must end with a semicolon character.

Command> connect dstest;

Connection successful:

DSN=dstest;UID=tttest;DataStore=/app/oracle/ttdata/dstest;DatabaseCharacterSet=AL32UTF8;

ConnectionCharacterSet=US7ASCII;DRIVER=/app/oracle/product/7.0.5/tt/TimesTen/tt70/lib/

libtten.so;OracleId=orcl;PermSize=256;TempSize=50;TypeMode=0;

(Default setting AutoCommit=1)

Command>

Page 34: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Подключение[oracle@[oracle@[oracle@[oracle@localhostlocalhostlocalhostlocalhost ~]$~]$~]$~]$ ttstatusttstatusttstatusttstatusTimesTenTimesTenTimesTenTimesTen status report as of Wed Oct 15 04:40:54 2008status report as of Wed Oct 15 04:40:54 2008status report as of Wed Oct 15 04:40:54 2008status report as of Wed Oct 15 04:40:54 2008

DaemonDaemonDaemonDaemon pidpidpidpid 6075 port 17000 instance tt706075 port 17000 instance tt706075 port 17000 instance tt706075 port 17000 instance tt70TimesTenTimesTenTimesTenTimesTen serverserverserverserver pidpidpidpid 6084 started on port 170026084 started on port 170026084 started on port 170026084 started on port 17002TimesTen webserver pidTimesTen webserver pidTimesTen webserver pidTimesTen webserver pid 6082 started on port 170046082 started on port 170046082 started on port 170046082 started on port 17004

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Data store /app/oracle/ttdata/dstestData store /app/oracle/ttdata/dstestData store /app/oracle/ttdata/dstestData store /app/oracle/ttdata/dstestThere are 7 connections to the data storeThere are 7 connections to the data storeThere are 7 connections to the data storeThere are 7 connections to the data storeData store is in shared modeData store is in shared modeData store is in shared modeData store is in shared modeShared Memory KEY 0x0200fde0 ID 32769Shared Memory KEY 0x0200fde0 ID 32769Shared Memory KEY 0x0200fde0 ID 32769Shared Memory KEY 0x0200fde0 ID 32769Type PID Context Connection Name Type PID Context Connection Name Type PID Context Connection Name Type PID Context Connection Name ConnIDConnIDConnIDConnIDProcess 3026 0x099dbff0 dstest Process 3026 0x099dbff0 dstest Process 3026 0x099dbff0 dstest Process 3026 0x099dbff0 dstest 1111Subdaemon 2283 0x0a064770 Worker 20Subdaemon 2283 0x0a064770 Worker 20Subdaemon 2283 0x0a064770 Worker 20Subdaemon 2283 0x0a064770 Worker 2042424242Subdaemon 2283 0x0a106ea0 Flusher 2Subdaemon 2283 0x0a106ea0 Flusher 2Subdaemon 2283 0x0a106ea0 Flusher 2Subdaemon 2283 0x0a106ea0 Flusher 2043043043043Subdaemon 2283 0x0a1562a8 Aging Subdaemon 2283 0x0a1562a8 Aging Subdaemon 2283 0x0a1562a8 Aging Subdaemon 2283 0x0a1562a8 Aging 2046204620462046Subdaemon 2283 0x0a165480 Monitor 2Subdaemon 2283 0x0a165480 Monitor 2Subdaemon 2283 0x0a165480 Monitor 2Subdaemon 2283 0x0a165480 Monitor 2044044044044Subdaemon 2283 0x0a174658 HistGC 20Subdaemon 2283 0x0a174658 HistGC 20Subdaemon 2283 0x0a174658 HistGC 20Subdaemon 2283 0x0a174658 HistGC 2045454545Subdaemon 2283 0x0a203c90 Checkpoint 2047Subdaemon 2283 0x0a203c90 Checkpoint 2047Subdaemon 2283 0x0a203c90 Checkpoint 2047Subdaemon 2283 0x0a203c90 Checkpoint 2047Replication policy : ManualReplication policy : ManualReplication policy : ManualReplication policy : ManualCache agent policy : ManualCache agent policy : ManualCache agent policy : ManualCache agent policy : Manual------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Access control enabled.Access control enabled.Access control enabled.Access control enabled.End of report

Назначение каждого изНазначение каждого изНазначение каждого изНазначение каждого изподдемонов поддемонов поддемонов поддемонов DOC_ID 759437.1DOC_ID 759437.1DOC_ID 759437.1DOC_ID 759437.1

Page 35: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Кэш группы

Page 36: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

In-Memory Database Cache

• Кешируются таблицы из Oracle Database

• Пользователь конфигурируетcache groups

• Кеширование индивидуальных таблиц и зависимых таблиц

• Кеширование всех или подмножества строк и колонок

• Только чтение или изменение

• Автоматическая синхронизация данных• Из TimesTen в Oracle

• Из Oracle в TimesTen

Checkpoints

Tx Logs

Network

Client-Server

Cache Tables

CacheAgent

Direct-linked

ApplicationApplication

TimesTen Libraries

TimesTen Client lib

Application

Page 37: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Кеширование данных из Oracle Database

Cache Group – структура данных из Oracle Database, которые должны быть закешированы в TimesTen In-Memory Database

Page 38: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Типы Cache group

• READ ONLY

• SYNCHRONOUS WRITETHROUGH (SWT)

• ASYNCHRONOUS WRITETHROUGH (AWT)

• USERMANAGED

Page 39: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Read Only Cache Group

• Read-only Cache Groups

• Изменения запрещены вcache group

• Возможность использованияPassThrough для изменений в Oracle DB

• Изменения в Oracle DB автоматически обновляются в cache group

• Высокая доступность инадежность

Propagateчерез

PassThrough

RefreshAutorefreshпо запросу

Application

Page 40: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Транзитная передача операторов из

TimesTen в Oracle

• Транзитная передача SQL делается прозрачно для приложений через соединение с Oracle DB

• SQL предложения, которые не могут быть выполнены вTimesTen перенаправляются вOracle DB

• TimesTen управляет соединением с Oracle DB

Oracle DBOracle DBOracle DB

Cache group

TimesTen

Passthrough logic

Statements that

cannot be handled

in TimesTen are

passed through

to Oracle

Statements that

can be handled

in TimesTen

Application

Page 41: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Д е м о н с т р а ц и я

Использование

Read Only Кэш группы

Page 42: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

SWT Cache Group

• Транзакции выполняются вкэше

• Изменения в cache group фиксируются синхронно с Oracle DB

Propagateавтоматически

Загрузка один раз

при создании группы

Application

Page 43: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

SWT Cache Group Data Flow

Application (0) DML

(1) COMMIT

TimesTen(2) Propagate transaction to Oracle

(DML, COMMIT)

Oracle(3) Commit transaction and

return to TimesTen

TimesTen(4) Commit to transaction log(5) Return control to application

ttCachePropagateFlagSet

2

3

4

TimesTen

transaction

log

Oracle DBOracle DBOracle DB

SYNCHRONOUS

WRITETHROUGH

TimesTen

Application 51

Page 44: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

SWT Cache Group

Propagateавтоматически

Загрузка один раз

при создании группы

Пример:

CREATE SYNCHRONOUS

WRITETHROUGH CACHE

GROUP readcache

FROM readtab (

a NUMBER NOT NULL

PRIMARY KEY,

b VARCHAR2(100) );

Application

Page 45: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

AWT Cache Group

• Транзакции выполняются в кэше

• Изменения в cache group фиксируются асинхронно с Oracle DB

• Обеспечивает наилучшую производительность

Propagateавтоматически

Application

Page 46: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

AWT Cache Group Data Flow

Application(0) DML

(1) COMMIT

TimesTen(2) Commit to transaction log(3) Return control to application(4) Propagate transaction to Oracle

(DML, COMMIT)

Oracle(5) Commit transaction and

return to TimesTen

4

5

2

TimesTen

transaction

log

Oracle DBOracle DBOracle DB

ASYNCHRONOUS

WRITETHROUGH

TimesTen

Application 31

Page 47: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Прозрачная загрузка при SELECT

• Прозрачная загрузка при SELECT грузит данные из таблиц Oracle в соответствующие TimesTen кэш таблицы, если SELECT не нашёл данных в кэштаблицах

• Прозрачную загрузку при SELECT включает:• TransparentLoad DSN атрибут

• ttIsql set transparentload команда

• Запрос не может использовать множественные операции UNION, INTERSECT, MINUS

Page 48: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Прозрачная загрузка при SELECT

• Виды SELECT

•SELECT * FROM table1 WHERE primkey=1;

•SELECT * FROM table2 WHERE pkcol1=10 AND

pkcol2=10;

•SELECT * FROM table2 WHERE foreignkey=1;

•SELECT * FROM table2 WHERE fkcol1=10 AND

fkcol2=10;

•SELECT * FROM table1,table2 where

table1.primkey=1 and

table2.foreignkey=table1.primkey;

Page 49: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Автоматическая очистка данных

• Очистка данных – операция по удалению данных, которые больше не нужны

• Удаление старых данных на основе времени

• Удаление данных, которые не использовались какое-то время

• Поддерживаются два типа очистки данных

• Time-based – основанный на timestamp значениях

• Usage-based – основанный на LRU алгоритме

• Политика очистки данных устанавливается пользователем

• на уровне таблиц или кэш групп

• Даёт возможность приложению держать в кэше только самые свежие данные

• Соответствие нормативам

• Скользящее окно кэширования данных

• Контроль размера базы данных

Page 50: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Автоматическая очистка данных

• LRU aging может быть использован со всеми типами кэш групп кроме кэш групп с атрибутом AUTOREFRESH

• Таблицы связанные ограничением ссылочной целостности должны иметь одинаковые политики очистки

• Если используется LRU aging и строка в дочерней таблице недавно использовалась, то не родительская строка, не дочерняя строка не будут удалены

• Если используется time-based aging и строка в родительскойтаблице кандидат для очистки, тогда родительская строка и все еенаследники будут удалены

Page 51: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Automatic Data Aging Примеры

CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP LocalJobs FROM

hr.jobs (job_id VARCHAR2(10) NOT NULL,

job_title VARCHAR2(35) NOT NULL,

min_salary NUMBER(6),

max_salary NUMBER(6),

PRIMARY KEY (job_id))

AGING LRU

CALL ttAgingLRUConfig(.75, .95, 15)

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP NewEmployees FROM

hr.employees (employee_id NUMBER(6) NOT NULL,

first_name VARCHAR2(20),

last_name VARCHAR2(25) NOT NULL,

email VARCHAR2(25) NOT NULL,

hire_date TIMESTAMP NOT NULL DEFAULT SYSDATE,

job_id VARCHAR2(10) NOT NULL,

PRIMARY KEY (employee_id))AGING USE hire_date LIFETIME 365 DAYS CYCLE 24 HOURS ON

Page 52: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Automatic Data Aging Примеры

CREATE READONLY CACHE GROUP cg1

AUTOREFRESH STATE ON INTERVAL 1 MINUTES

FROM t1(i NUMBER NOT NULL PRIMARY KEY,

ts TIMESTAMP NOT NULL,

c VARCHAR2(50))

AGING USE ts LIFETIME 3 HOURS

CYCLE 10 MINUTES;

Sliding Window:

Page 53: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Д е м о н с т р а ц и я

Использование

AWT Кэш групп

Page 54: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Usermanaged Cache Group

• Возможность создавать группы с нестандартным поведением

• Возможность использования FLUSH, REFRESH, UNLOAD

Загрузка по

требованию

Propagateпо

требованию

Application

Page 55: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Usermanaged Cache Group

Загрузка по

требованию

Propagateавтоматически

Пример:

CREATE USERMANAGED CACHE GROUP ucache

AUTOREFRESH

INTERVAL 30 SECONDS

FROM readtab (

a NUMBER NOT NULL

PRIMARY KEY,

b VARCHAR2(100) ,

PROPAGATE);

Application

Page 56: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Дополнительная информация

DOC_ID 473493.1

Page 57: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Возможности

Page 58: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Возможности IMDB Cache

• ODBC и JDBC интерфейсы

• Поддержка SQL

• Access Control

• Журнализация изменений

• Многопользовательский конкурентный доступ

• Автоматическая очистка данных

• Наблюдение за журналом транзакций

• Replication – TimesTen to Timesten

• Web интерфейс Cache Administrator

Page 59: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Поддержка SQL

• Поддерживает широкий диапазон SQL – 92 (SELECT, UPDATE, DELETE, INSERT, MERGE)

• Стандартные типы данных (числовые, строковые, дата, и т.д.)

• Поддержка большого набора SQL функций (DECODE, MOD, CASE и т.д.)

• Существуют ограничения (LOB, XML)

Page 60: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Надежность

• Все транзакции сохраняются в in-memory log buffer а затем записываются на диск• Асинхронный commit

• Синхронный (надежный) commit

• Автоматические контрольные точки

• TimesTen использует 2 файла контрольной точки для каждого data store

• После перезапуска системы, данные могут быть загружены в память из файлов контрольных точек и файлов транзакций

Page 61: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Оптимизация запросов

• Hash Indexes

• Сверх-быстрый поиск точных значений и эквисоединений

• Не больше одного индекса на таблицу

• T-Tree Indexes

• Memory-optimized index technology

• Создаются командой SQL “CREATE INDEX”

• Быстрый поиск точного значения и диапазона значений

• Создаются по умолчанию при создании первичного ключа

• Cost-Based Optimizer

• Планы и хинты

Page 62: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Утилиты

• ttBulkCp

• ttBackup

• ttDestroy

• ttRestore

• ttisql

• ttDaemonAdmin

• ttAdmin

• и др.

Page 63: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

• Полная поддержка транзакций(COMMIT/ROLLBACK)

• Блокировка на уровне записи

• Версионность

• Записи не блокируют чтения

• Чтения не блокируют записи

Конкурентный доступ

Page 64: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Transaction Log Monitoring (XLA)

• Отслеживает изменения в таблицах и материализованных представлениях

• Поддержка нескольких, одновременных XLA приложений, работающих с одним data store

• Maintain log positions via Bookmarks

• Поддержка для C++ в TTClasses

Page 65: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Пример XLA приложений

• Trigger-like функциональность• Любой INSERT, UPDATE, DELETE в базе данных может

мониториться

• Для Update отображается новое и старое значение

• 1000-чи транзакций в секунду – намного быстрее чем триггеры

• Репликационные агенты• Реплицировать данные в реляционные и нереляционные

базы данных

• Обработка событий• Когда цена акции ORCL вырастет на $1.00 оповестить

другие приложения

• Когда добавлен новый подписчик, оповестить биллинговую и другие системы

Page 66: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Высокая доступностьReplication – TimesTen to TimesTen

• Репликация данных в реальном времени

• Между базами данных TimesTen

• Гибкая конфигурация

• Master-standby, Master-master, N-way

• Высокая производительность

• Асинхронная репликация

• Синхронная репликация

• Надежная

Network

InIn--Memory Memory

DatabaseDatabase

TimesTen Libraries

Application

TimesTen Libraries

Application

TimesTen Libraries

Application

ReplicationTimesTen to TimesTen

InIn--Memory Memory

DatabaseDatabase

TimesTen Libraries

Application

TimesTen Libraries

Application

TimesTen Libraries

Application

Page 67: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Replication – TimesTen to TimesTen

• Базы данных целиком или отдельных таблиц (кэш группы)

• Конфигурируется используя SQL

• Асинхронная или синхронная (задается динамически в SQL)

• Автоматическое восстановление

• Не надо менять код приложения

Master - Standby

N – Way

Propagation

Master - Master

Page 68: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Высокая доступностьИнтеграция с Oracle Database RAC

• Автоматическое восстановление в случае падения узла используяTAF, FAN

• Автоматическое переключение на другой узел

• Автоматическая синхронизация изменение из Oracle Database вTimesTen и обратно

• Нет потерь транзакций

Page 69: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

In-Memory Database Cache

с active-standby pair

репликацией для высокой

доступности на уровне

приложения

Real Application Clusters

для масштабируемости и

высокой доступности на

уровне БД

In-Memory Database Cache

Пример конфигурации HA

App 1 App 2 App 3

Page 70: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

In the EnterpriseIn Telecom On Wall StreetIn Networks

• 1500+ предприятий используют TimesTen

• 7 из 9 ведущих поставщиков сетевого оборудования используют TimesTenв своих продуктах

• Самые популярные биллинговые системы в мире используют TimesTen

• 4 из 5 основных операторов беспроводной связи в Европе используют TimesTen

• Самые большие в мире CALL CENTERS работают на TimesTen

Системы реального времениТысячи компаний используют Oracle TimesTen

Page 71: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Причины для выбораIn-Memory Database Cache

• Ограниченное время отклика• Микросекунды вместо миллисекунд

• Высокая производительность

• Высокая пропускная способность

• Высокая доступность и восстанавливаемость

• Стандартная реляционная модель, поддержка SQL• Не нужно переписывать бизнес логику или интерфейс

• Кэширование таблиц Oracle Database c автоматической синхронизаций данных

Page 72: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

Дополнительная Информация

Oracle In-Memory Database Cache на OTN:

http://oracle.com/technology/products/timesten/imdb_cache

• Технические статьи

• Руководства по использованию и установке

• Форум

Page 73: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

ОТВЕТЫ

ВОПРОСЫ

Page 74: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications

<Insert Picture Here>

Геннадий Сигалаев Старший консультант, Oracle СНГ

Email : [email protected] Phone : +7 (495) 641 14 00Direct: +7 (495) 795 22 28Mobile: +7 (985) 169 75 66

Page 75: Oracle TimesTen (In-Memory Database Cache) · 2009-04-16 · реального времени Oracle TimesTen, ... и линейного ... while complex, web-based, applications