Untitled Document
As Published In

Oracle Magazine
November/December 2006
TECHNOLOGY: Embedded

백만 분의 일 초와의 싸움
저자 – Jonathan Gennick

Oracle TimesTen 인-메모리 데이터베이스는 데이터에 대한 초고속 액세스를 가능하게 합니다.

오라클은 최근 몇 년 동안 활발한 전략적 기업 인수 작업을 수행해 왔습니다. 그 중에서도 특히 주목할만한 기술로 TimesTen이라 불리는 인-메모리 데이터베이스가 있습니다. Oracle TimesTen은 밀리초가 아닌 마이크로초(microsecond) 단위의 미션-크리티컬 실시간 애플리케이션을 개발할 수 있는 환경을 제공합니다. Oracle TimesTen은 스탠드얼론 형태로 사용될 수도 있고, 또는 오라클 데이터베이스에서 자주 접근되는 데이터를 위한 양방향 캐시(bidirectional cache)로 사용될 수도 있습니다.

Oracle TimesTen이 도움이 될 수 있는 경우로 (119와 같은) 응급구조시스템을 예로 들 수 있습니다. (실제로, Oracle TimesTen은 미국의 911 관련 애플리케이션에 의해 사용되고 있습니다.) 이러한 시스템의 응답 시간은 단순히 중요하다는 표현으로는 부족하며, 생사를 좌우하는 문제가 됩니다.

미국에서 911 전화를 걸면, 전화를 받은 구조원의 화면에 상대방의 전화번호와 주소가 즉각적으로 표시됩니다. 또 전화를 건 지역의 지도나, 전화를 건 사람에 관련한 의료 정보가 표시되기도 합니다. 예를 들어, 에피네프린 자동주사기를 사용 중인 심각한 알레르기 환자가 이 정보를 응급 구조 시스템에 저장해 두기를 원할 수도 있습니다. 이러한 위치 및 기타 중요 정보에 즉각적으로 접근할 수 있어야만 지원을 신속하게 제공할 수 있을 것입니다.

본 문서는 응급 구조 시스템의 핵심 정보를 표시하는데 사용되는 매우 기초적인 형태의 데이터베이스 시스템을 구현하는 사례를 설명하고 있습니다. 이 예제를 통해 Oracle TimesTen을 오라클 데이터베이스와 연동하여 안정적인 마이크로초 단위의 응답시간을 확보하고, 핵심 정보가 즉각적으로 조회 가능함을 보장하는 방법을 알아 보기로 합니다.

아키텍처

그림 1은 Oracle TimesTen의 기반을 이루는 아키텍처를 보여 주고 있습니다. Oracle TimesTen의 관점에서 볼 때, 데이터베이스는 데이터 스토어(data store)라 불립니다. 디스크 상에 구현된 데이터 스토어는 체크포인트 파일( checkpoint file)이라 부릅니다. 데이터 스토어가 처음으로 열리면, Oracle TimesTen은 체크포인트 파일로부터 데이터의 전체 컨텐트를 메모리로 읽어 들입니다. 이후 INSERT, DELETE, SELECT, UPDATE 등의 작업은 메모리 상에서 실행됩니다. 이러한 작업에 의해 발생한 데이터 스토어의 변경 사항은 정기적, 비동기적으로 디스크 상의 체크포인트 파일에 기록됩니다. 데이터 스토어가 셧다운 처리되면, 데이터 스토어를 종료하기 전에 아직 기록되지 않은 변경 사항을 모두 체크포인트 파일에 기록합니다.

그림 1
그림 1: Oracle TimesTen 아키텍처
Oracle TimesTen는 또 디스크 스토리지를 트랜잭션 보호를 위한 복구 메커니즘으로 활용합니다. 트랜잭션은 로그 파일에 기록됩니다. 시스템에 장애가 발생하여 재시작되면, 체크포인트 파일을 메모리로 읽어 들이고, 트랜잭션 로그를 적용하고, 데이터 스토어를 여는 작업이 순차적으로 실행됩니다. 또 데이터베이스의 변경 사항을 주기적으로 체크포인트 파일에 저장함으로써, 이러한 복구 작업에 소요되는 시간을 최소화할 수 있게 합니다.

Oracle TimesTen는 스탠드얼론 데이터베이스로 실행될 수도 있고, 또는 오라클 데이터베이스를 위한 일종의 성능 가속기로 활용될 수도 있습니다. 그림 1은 Oracle TimesTen을 오라클 데이터베이스에 연결하기 위한 캐시 에이전트와 복제 서비스를 보여주고 있습니다. 본 문서의 시나리오에서는, (스탠드얼론 방식을 예시하기 위해) 일부 데이터는 Oracle TimesTen에 저장되며, (성능 가속기로의 활용 방법을 예시하기 위해) 다른 데이터는 오라클 데이터베이스에 저장됩니다. 이처럼 두 가지 방법을 필요에 따라 조합하여 사용하는 것이 가능합니다.

Oracle TimesTen 데이터베이스의 생성

Oracle TimesTen는 다양한 Linux 배포본, Windows XP, Windows Server 2003, Solaris, HP-UX 등의 멀티-플랫폼 환경을 지원합니다. 는 지원되는 모든 플랫폼에 대한 설치 방법을 설명하고 있습니다. 그 중에서도 Windows 설치 방법은 매우 간단하며, 본 문서에서는 Windows 운영 체제를 기준으로 설치 방법을 설명하기로 합니다.

Oracle TimesTen에 대한 접근은 궁극적으로 ODBC를 통해 이루어집니다. (Java 애플리케이션은 JDBC와 TimesTen JDBC 드라이버를 사용하지만, TimesTen JDBC 드라이버는 다시 ODBC를 사용하여 TimesTen에 연결합니다.) Oracle TimesTen 데이터 스토어를 생성하는 방법은 아주 간단합니다. ODBC 데이터소스를 정의하고 이 데이터소스에 연결하기만 하면 됩니다. 본 문서에서는, Listing 1에 보여지는 것과 같은 테이블을 포함하는 DISPATCH 스키마를 오라클 데이터베이스에 생성해 둔 것으로 가정합니다. 또, Oracle TimesTen과 응급 구조 애플리케이션을 Windows 서버에 설치한 것으로 가정합니다. 아래와 같은 방법으로 응급 구조 애플리케이션을 지원하고 오라클 데이터베이스의 중요 데이터를 캐시에 저장하기 위한 Oracle TimesTen 데이터 스토어를 생성합니다:

Code Listing 1: Oracle Database 10g의 DIPATCH 스키마

CREATE TABLE phones (
   phone_num    VARCHAR2(8),
   street_addr    VARCHAR2(20),
   city              VARCHAR2(15),
   PRIMARY KEY (phone_num));

CREATE TABLE call_log (
   call_num       NUMBER(9),
   event_time    TIMESTAMP,
   event            VARCHAR2(80),
   PRIMARY KEY (call_num, event_time));

GRANT SELECT, UPDATE, INSERT ON call_log TO ttdispatch;

INSERT INTO phones VALUES ('555-1234','100 W. Munising Ave', 'Munising');
INSERT INTO phones VALUES ('555-2345','101 E. Varnum', 'Munising');
INSERT INTO phones VALUES ('555-3456','E2904 S. First', 'Trenary');
INSERT INTO phones VALUES ('555-4567','N3284 M-67', 'Limestone');
INSERT INTO phones VALUES ('555-5678','N7569 Spruce St.', 'AuTrain');
INSERT INTO phones VALUES ('555-6789','112 Colwell', 'Grand Marais');

COMMIT;

1. 제어판에서 ODBC 데이터 소스 관리자를 엽니다. 시작 -> 설정 -> 제어판 -> 관리 도구-> 데이터 소스 (ODBC)를 선택합니다.

2. TimesTen Data Manager 6.0 드라이버를 사용하여 system 데이터소스를 추가합니다.

3.Data Store 탭(그림 2 참고)에서 데이터소스 네임(DSN), 데이터 스토어 경로, 로그 디렉토리를 입력합니다. 데이터 스토어 경로에는 반드시 파일 이름이 포함되어 있어야 합니다. 하지만 확장자는 입력하지 않습니다.

figure 2
그림 2: Oracle TimesTen 데이터소스의 설정

4.General Connection 탭에서 User ID 필드에 테이블 접근 권한을 가진 오라클 데이터베이스 사용자 이름을 입력합니다. 이곳에서 스키마 오너의 이름을 사용할 수도 있습니다.

5.Cache Connect 탭의 오라클 패스워드 필드에 4 단계에서 사용한 사용자의 패스워드를 입력합니다. 그런 다음 Oracle ID 필드에서 Oracle TimesTen이 오라클 데이터베이스 연결에 사용할 net service 네임(tnsnames.ora에 정의된)을 입력합니다.

6.OK 를 클릭하여 ODBC 데이터소스를 생성합니다.

참고: Linux 또는 기타 UNIX 기반 시스템을 실행하는 경우, .odbc.ini 파일을 이용하여 데이터소스를 정의합니다. 자세한 정보는(Oracle TimesTen In-Memory Database Operations Guide) 를 참고하시기 바랍니다.

7. Oracle TimesTen의 인터액티브 SQL 유틸리티인 ttIsql(오라클 데이터베이스의 SQL*Plus와 유사한 도구)을 사용하여 새로 생성된 ODBC 데이터소스에 연결합니다. 그런 다음 CONNECT 커맨드를 사용하여 데이터 소스를 열고 데이터 스토어를 생성합니다. 실행 예가 아래와 같습니다:

C:\A>ttisql

Copyright (c) 1996-2006, Oracle.
.
.
.
Command> CONNECT dsn=ttdispatch;
.
.
.
Connection successful: 

이제 메모리에 Oracle TimesTen 데이터 스토어가 실행 중입니다. 디폴트 설정에서, Oracle TimeTen은 처음으로 실행되는 시점에 데이터 스토어를 자동으로 생성합니다. TABLES 커맨드를 사용하면 데이터 스토어의 시스템 테이블 목록을 조회할 수 있습니다. 또 HELP 커맨드를 실행하면 전체 ttlsql 커맨드의 목록을 조회할 수 있습니다. 모든 ttlsql 커맨드의 뒷부분에는 세미콜론(;)을 붙여 주어야 합니다.

데이터 스토어 디렉토리(그림 2의 c:\a\timesten)에서, 확장자 .ds0, .ds1을 갖는 두 개의 체크포인트 파일 사본을 확인할 수 있습니다. 파일의 이름은 3 단계에서 입력한 것과 동일하게 설정됩니다. 로그 디렉토리(예제의 c:\a\timesten)에는 .log 확장자를 갖는 로그 파일들을 확인할 수 있습니다.

TimesTen Data Manager 6.0 드라이버(2 단계 참고)를 이용하면 애플리케이션을 데이터 스토어와 직접 연결할 수 있습니다. 컨텍스트 스위치를 수행하거나 네트워크를 통해 쿼리를 전송할 필요가 없습니다. 데이터에 대한 접근은 다이렉트 방식으로 신속하게 수행됩니다. 데이터 스토어를 이용하는 모든 애플리케이션은 공유 메모리 세그먼트를 통해 데이터 스토어에 대한 액세스를 공유합니다.

디폴트 설정에서, Oracle TimesTen은 첫 번째 사용자가 데이터 스토어에 연결할 때 모든 데이터를 메모리로 읽어들이고, 마지막 사용자가 연결을 종료할 때 데이터를 디스크에 기록합니다. Oracle TimesTen이 별도의 유지보수 작업을 전혀 필요로 하지 않는 이유가 여기에 있습니다. 하지만 또 다른 옵션도 가능합니다. 예를 들어, Oracle TimesTen이 서버 시작 시점에 데이터 스토어를 메모리에 읽어들이도록 함으로써, 첫 번째 사용자가 연결했을 때에도 빠른 접근이 가능하도록 보장할 수 있습니다.

테이블의 생성

Oracle TimesTen에서 테이블을 생성하는 방법은 다른 데이터베이스와 다르지 않습니다. 예를 들어, 아래와 같은 테이블을 생성하여 주민들이 응급 구조 시스템에 자신의 개인 의료 정보를 입력하도록 할 수 있습니다:

CREATE TABLE emergency_info (
   phone_num VARCHAR(8),
   info VARCHAR(160),
   PRIMARY KEY (phone_num));

이제 긴급 상황에서 응급 구조원들에게 도움이 될만한 커멘트를 입력합니다:

INSERT INTO emergency_info 
   VALUES ('555-1234',
   'Child Jeff allergic to egg white.   
   Epinephrine autoinjector in orange box
   near refrigerator.');

INSERT INTO emergency_info 
   VALUES ('555-2345',
   'Bedridden resident needs help 
   exiting home in case of fire.');

Oracle TimesTen는 오라클 데이터베이스와 동일한 데이터타입을 사용하고 있지 않습니다. 한 예로, Oracle TimesTen에서는 VARCHAR2가 아닌 VARCHAR를 사용합니다. 데이터타입에 대한 상세한 정보, 그리고 오라클 데이터베이스의 데이터타입을 Oracle TimesTen 데이터타입으로 매핑하는 방법은 <Oracle TimesTen In-Memory Database API>와 문서를 참고하시기 바랍니다.

읽기 전용 데이터의 캐싱

응급 구조 시스템의 전화번호와 주소는 읽기 전용 상태로 관리될 가능성이 높습니다. 응급 구조원이 특정 전화번호의 주소를 확인하는 것은 중요하지만, 구조원들이 주소 정보를 편집하는데 시간을 뺏기는 것은 바람직하지 않을 것입니다. 따라서 PHONES 테이블을 읽기 전용으로 관리하는 편이 좋을 것입니다.

전화/주소 데이터의 읽기 전용 캐시를 생성하기 전에, 오라클 데이터베이스에 캐시 관리자 계정을 생성해야 합니다. 이 사용자는 Oracle TimesTen이 변경 사항의 추적을 위해 오라클 데이터베이스에 생성하는 트리거와 테이블들을 소유합니다. 이 트리거와 테이블들은 Oracle TimesTen에 캐시된 데이터를 효과적으로 리프레시하는 용도로 사용됩니다. 시스템 사용자로 로그인한 상태에서 아래 구문을 실행하여 ttdispatch라는 이름의 캐시 관리자 계정을 생성합니다:

CREATE USER ttdispatch
   identified by ttdispatch
   default tablespace users
   quota unlimited on users;

그런 다음 아래 grant 구문을 사용하여 캐시 관리자가 다른 사용자들(예: DISPATCH 스키마 오너)이 소유하고 있는 테이블에 트리거를 생성할 수 있게 합니다.

grant create any trigger to ttdispatch;

다음으로, DISPATCH 스키마 오너로 로그인하여 PHONES 테이블에 대한 SELECT 액세스 권한을 캐시 관리자에게 할당합니다:

GRANT SELECT ON phones TO ttdispatch;

그리고 Oracle TimesTen으로 전환하여 캐시 그룹(cache group)을 생성합니다. 이를 위해 아래와 같이 작업합니다:

1. ttIsql로부터 데이터 스토어에 연결합니다.

2. ttCacheUidPwdSet() 빌트-인 프로시저를 호출하고, Oracle TimesTen에서 오라클 데이터베이스에 캐시 관리자로 연결할 때 사용할 사용자이름/패스워드를 설정합니다.

3. ttCacheStart()를 호출하여 TimesTen 캐시 에이전트를 시작합니다. 이 캐시 에이전트는 오라클 데이터베이스로부터 데이터를 가져오고 데이터를 Oracle TimesTen의 캐시에 저장하는 실질적인 작업을 수행합니다.

4. CREATE CACHE GROUP 구문을 실행하여 관련 테이블의 그룹을 정의합니다. 본 문서의 예제에서는 하나의 테이블만이 Oracle TimesTen의 캐시에 저장됩니다.

위 네 단계의 실행 과정이 Listing 2와 같습니다.

Code Listing 2: 읽기 전용 캐시 그룹의 생성

Command> connect dsn=ttdispatch;
Connection successful:
.
.
.
Command> call ttCacheUidPwdSet('ttdispatch','ttdispatch');
Command> call ttCacheStart();
Command>
Command> CREATE READONLY
>    CACHE GROUP phone_data
>    AUTOREFRESH
>       INTERVAL 5 MINUTES
>    FROM dispatch.phones (
>         phone_num VARCHAR(8) NOT NULL PRIMARY KEY,
>         street_addr VARCHAR(20),
>         city VARCHAR(15)
>       );
Warning  5112: Cache table DISPATCH.PHONES contains 
VARCHAR column(s). Oracle VARCHAR comparison rule is different.

Listing 2 마지막 부분의 경고 메시지는 Oracle TimesTen이 빈 문자열('')을 null로 취급하지 않는 반면, 오라클 데이터베이스는 이를 null로 취급함을 안내하고 있습니다. VARCHAR 컬럼을 포함하는 쿼리를 작성하는 경우, 이러한 차이에 주의해야 합니다.

이제 phone_data라는 이름의 캐시 그룹이 생성되었습니다. 이 그룹 내에는 PHONES라는 빈 테이블이 포함되어 있습니다. 캐시 그룹은 자동으로 리프레시되며, 5 분 간격으로 오라클 데이터베이스를 폴링(polling)하고 데이터 변경 내역을 확인합니다. 하지만, 자동 리프레시 기능은 디폴트로 중단(pause)된 상태로 생성됩니다. Listing 3의 LOAD CACHE GROUP 구문을 실행하여 오라클 데이터베이스의 현재 데이터로 캐시를 초기화하고 캐시 그룹의 중단 상태를 해제합니다. 이제부터 Oracle TimesTen은 매 5 분 간격으로 오라클 데이터베이스의 PHONES 테이블의 변경 사항을 쿼리합니다(폴링 주기는 더 크게, 또는 작게 조정이 가능합니다). 캐시 관리자(예제의 경우 ttdispatch)가 소유한 트리거와 테이블들을 이용하여 매우 효과적인 방법으로 폴링을 수행할 수 있습니다.

Code Listing 3: 최초 로딩 작업의 수행

Command> SELECT * FROM phones;
0 rows found.

Command> LOAD CACHE GROUP phone_data
>    COMMIT EVERY 100 ROWS;
6 rows affected.

Command> select * from phones;
< 555-1234, 100 W. Munising Ave, Munising >
< 555-2345, 101 E. Varnum, Munising >
< 555-3456, E2904 S. First, Trenary >
< 555-4567, N3284 M-67, Limestone >
< 555-5678, N7569 Spruce St., AuTrain >
< 555-6789, 112 Colwell, Grand Marais >
6 rows found.

"Write-through" 캐시의 생성

전화/주소 데이터가 오라클 데이터베이스에서 Oracle TimesTen으로 전달되는 반면, 로그 데이터는 반대 방향으로의 흐름을 갖습니다. 응급 구조원은 911 전화에 관련한 이벤트를 Oracle TimesTen에 기록합니다. 한편으로, 로그 데이터의 장기 보존을 위해서는 오라클 데이터베이스에 변경 사항을 전달해야 합니다. 이러한 목적을 위해, 비동기식 "write-through" 캐시 그룹을 생성할 수 있습니다. Listing 4는 이를 위해 사용되는 TimesTen 구문을 보여 주고 있습니다.

그룹을 생성한 후, ttlsql로부터 빌트-인 ttRepStart 프로시저를 호출하여 Oracle TimesTen 복제 소프트웨어를 시작합니다:

CALL ttRepStart();

이 시점 이후로, 응급 구조원의 애플리케이션에 의해 기록된 Oracle TimesTen CALL_LOG 테이블은 오라클 데이터베이스 CALL_LOG 테이블에 기록됩니다. 캐시 그룹이 비동기식으로 동작하기 때문에, Oracle TimesTen은 오라클 데이터베이스에 대한 INSERT 작업이 완료되기를 기다리지 않고 CALL_LOG에 대한 INSERT 트랜잭션을 커밋합니다. 오라클 데이터베이스에 대한 연결이 중단된 경우, Oracle TimesTen은 새로 삽입된 로그 엔트리를 관리하다가 연결이 재설정되는 시점에 오라클 데이터베이스로 전달합니다.

비동기식 write-through 캐시는 최상의 성능을 제공합니다. 한편으로, 동기식 캐시 그룹을 생성하면 CALL_LOG 테이블에 관련한 트랜잭션이 Oracle TimesTen에서 커밋됨과 동시에 오라클 데이터베이스에서도 커밋됨을 보장할 수 있습니다. 어떤 방법을 선택할 것인지의 여부는 전적으로 비즈니스 요구사항에 따라 달라집니다.

복제 에러

애플리케이션 설계 과정에서 주의하지 않는 경우, CALL_LOG 테이블에 대한 INSERT 작업이 Oracle TimesTen에서는 성공적으로 커밋되는 반면 오라클 데이터베이스에 '푸시(push)'되는 과정에서 실패할 수도 있습니다. 이러한 복제 에러는 비동기식 'write-through' 에러 파일에 기록됩니다. 에러 파일은 .awterr 확장자를 가지며 체크포인트 파일과 동일한 디렉토리에 저장됩니다.

복제 관련 문제를 방지하는 한 가지 방법으로, 어떤 데이터베이스를 "소유"할 것인지 또는 어떤 테이블 또는 테이블들을 컨트롤 할 것인지 주의 깊게 선택하는 것이 중요합니다. 예제 시나리오에서, CALL_LOG 테이블에 대한 모든 INSERT 작업은 Oracle TimesTen에서 수행됩니다. 오라클 데이터베이스 내부에서는 어떠한 데이터 변경 작업도 허용되지 않습니다. 따라서, 모든 INSERT 작업이 에러 없이 Oracle TimesTen에서 오라클 데이터베이스로 전달될 수 있습니다.

오래된 레코드의 관리

CALL_LOG와 같은 테이블의 크기는 무한히 증가할 수 있습니다. 이러한 테이블의 전체 레코드를 인-메모리 데이터베이스에 영원히 보관할 수는 없습니다. 따라서 오래된 로그 레코드를 삭제하기 위한 조치가 필요합니다. 그 한 가지 대안으로, 최근 며칠 간의 로그 엔트리만을 Oracle TimesTen에 보존하고, 장기적, 아카이브 데이터는 오라클 데이터베이스에서 관리하도록 할 수 있습니다. 이를 위해서는, Listing 5의 UNLOAD CACHE GROUP 구문을 매일 단위로 실행하면 됩니다. 이 구문은 Oracle TimesTen의 오래된 로그 엔트리를 삭제합니다. 이때 오라클 테이블의 CALL_LOG 테이블은 영향 받지 않습니다. 응급 구조원들은 최근의 로그 엔트리를 Oracle TimesTen에서 액세스할 수 있습니다. 이전의 로그 엔트리를 조회하려면 오라클 데이터베이스를 조회해야 합니다.

메모리는 만병통치약인가?

Oracle TimesTen은 전체 데이터를 메모리에 저장함으로써 성능 상의 개선 효과를 제공합니다. 그렇다면 그냥 오라클 데이터베이스만을 실행하고 버퍼 캐시를 충분히 확보하여 전체 데이터베이스가 메모리에 저장되도록 하는 것으로도 충분하지 않을까요? 이렇게 하면 오라클 데이터베이스도 Oracle TimesTen과 같은 수준의 성능을 제공할 수 있지 않을까요? 이것은 충분히 검토해 볼 만한 가치가 있는 좋은 질문입니다.

Oracle TimesTen은 그 기초부터 인-메모리 데이터베이스로서 설계되었습니다. 따라서 오라클 데이터베이스에서와 같은 논리적 I/O의 개념은 존재하지 않습니다. 데이터베이스 블록도 존재하지 않습니다. 버퍼 캐시도 없습니다. 인덱스 엔트리는 논리적 로우 ID를 저장하는 대신, 타겟 로우가 존재하는 메모리 위치를 바로 포인팅합니다. 따라서 인덱스 엔트리에서 로우로 이동하는 과정에서 간단히 포인터의 참조제거(dereferencing)만을 수행하면 됩니다. TimesTen Data Manager 6.0 드라이버를 사용하는 경우 애플리케이션이 데이터를 저장한 메모리에 직접 액세스하므로, 복잡한 컨텍스트 스위치가 불필요 합니다.

하지만, 메모리는 결코 만병통치약이 될 수 없습니다. 지난 수 년 동안 오라클 데이터베이스의 논리적 I/O에 수반되는 비용에 대해 논란이 있었습니다. 마찬가지로, Oracle TimesTen의 인-메모리 데이터에 접근하는 과정에서 수반되는 비용은 0에 가깝지만, 그렇다고 해서 비용이 전혀 발생하지 않는 것은 아닙니다. 여기에서도 설계의 중요성은 여전히 강조됩니다. 큐잉 이론 또한 동일하게 적용됩니다. 성능 최적화를 통해 불필요한 작업을 최소화하기 위한 작업 역시 여전히 중요합니다.

TimesTen의 혜택

Oracle TimesTen은 여기에서 설명한 것 이외에도 여러 가지 측면에서 유연성을 제공합니다. Oracle TimesTen이 제공하는 혜택이 아래와 같습니다:
Next Steps

READ more about
Oracle TimesTen 인-메모리 데이터베이스
아키텍처 개요

Oracle TimesTen 인-메모리 데이터베이스 설치 가이드

다운로드
Oracle TimesTen
아티클 관련 샘플 코드

  • 캐시를 생성한 후, 캐시에 데이터를 필요에 따라 자동으로 로드하고 일정 기간이 지난 후 에이징(aging) 처리할 수 있습니다.
  • 비동기식 로깅을 설정하거나, 로깅을 전혀 사용하지 않음으로써 내구성을 희생하는 대신 성능을 극대화할 수 있습니다.
  • Oracle TimesTen과 다른 Oracle TimesTen 간의 복제를 이용하여 스탠바이/미러 데이터베이스를 생성하고 고가용성 구성 또는 로드 밸런싱에 이용할 수 있습니다.
  • Oracle TimesTen에는 없지만 오라클 데이터베이스에는 존재하는 테이블에 대해 "pass-through" 형태의 쿼리를 자동 실행할 수 있습니다.

적절한 데이터베이스/애플리케이션 설계와 조합되는 경우, Oracle TimesTen의 인-메모리 아키텍처는 미션-크리티컬 데이터베이스 기반 애플리케이션의 성능을 극대화하는데 많은 도움이 될 수 있습니다. 마이크로초 단위의 응답 시간을 통해 비용을 절감하고 인명을 구조할 수 있는 환경에서, Oracle TimesTen In-Memory Database는 그 유용성을 갖습니다.

이 아티클에 관련한 여러 가지 질문에 답변을 제공해 준 오라클의 샘 드레이크와 사이몬 로에게 감사드립니다. 또 응급 구조 센터의 투어를 허락해 준 미시건주 앨거 카운티에 감사드리며, 이 아티클에서 사용된 예제 시나리오에 영감을 불어 넣어준 앨거 카운티 응급 의료 서비스 센터 여러분께 감사드립니다.


Jonathan Gennick (www.gennick.com) 는 오랜 경험을 보유한 오라클 전문가이자Oak Table Network의 회원입니다. 그는 베스트셀러인 <SQL Pocket Guide>와 Oracle <SQL*Plus Pocket Reference (O'Reilly Media)>의 저자이기도 합니다.

여러분의 의견을 보내 주십시오.

E-mail this page
Printer View Printer View