Times Ten은 Oracle 데이터베이스의 성능을 획기적으로 향상시킬 수 있는 잠재력을 지닌 Oracle 제품입니다.
메모리 최적화 외에도 Times Ten은 높은 처리량을 제공하고 내구성을 보장하며 확장 기능을 제공합니다. 특히 성능에 크게 의존하는 애플리케이션의 경우 응답 시간을 최소화합니다. 기존 데이터베이스와 달리 Times Ten은 RAM에 완전히 상주하여 높은 효율성을 제공합니다.
타임즈텐 역사
• 1994년 HP 연구소에서 발명
• HP의 Open Call 솔루션에 내장
• 1996년 VC 자금 지원 스타트업으로 분사
• 수천 명의 프로덕션 고객
• 2005년 Oracle Corporation에 인수됨
• 2005년 이후 3개의 주요 릴리스:6.0, 7.0, 11gR2,18c 릴리스 1
Oracle Timesten 개요
Oracle TimesTen In-Memory Database는 지속성과 고가용성을 갖춘 인메모리 관계형 데이터베이스 관리 시스템입니다. 원래 캘리포니아 팔로 알토에 있는 Hewlett-Packard 연구소에서 설계 및 구현된 TimesTen은 1996년 별도의 스타트업으로 분사되어 2005년 Oracle Corporation에 인수되었습니다.
Times Ten 데이터베이스는 높은 지속성과 가용성을 가지고 있습니다. 인메모리 데이터베이스인 매우 짧은 대기 시간과 높은 처리량을 제공합니다. 다른 기능에는 JDBC 및 ODBC와 같은 표준 관계형 데이터베이스 API가 포함됩니다.Times Ten은 독립형 인메모리 데이터베이스로 사용할 수 있을 뿐만 아니라 Oracle 데이터베이스 자체를 포함한 다른 관계형 데이터베이스에서 캐시로 사용되는 유틸리티를 제공합니다. 금융 거래 및 통신 청구를 비롯한 대용량 OLTP 애플리케이션에 자주 사용됩니다.
TimesTen이 디스크에 데이터를 저장하는 방법
이미지 출처:https://luna-ext.di.fc.ul.pt/oracle11g/timesten.112/e14261/overview.htm
각 TimesTen 데이터 저장소에는 정확히 두 개의 체크포인트 파일이 있습니다. 체크포인트는 기본적으로 10분마다 호출됩니다. 이것은 첫 번째 체크포인트 파일에 더티 메모리 페이지를 쓰고, 다음 체크포인트는 다른 체크포인트 파일을 사용합니다. 쓰기 트랜잭션은 먼저 인메모리 버퍼에 배치된 다음 로그 파일로 플러시됩니다.
트랜잭션 로깅의 두 가지 유형:
1. 버퍼링된 로깅:
(속도:빠름, 내구성:좋음) 트랜잭션은 먼저 메모리 내 로그 버퍼에 저장됩니다. 버퍼가 가득 차면 백그라운드에서 디스크로 플러시됩니다. 프로세스는 매우 빠릅니다(5000TPS 이상). 버퍼가 플러시되기 전에 충돌이 발생하여 트랜잭션이 손실될 가능성이 약간 있습니다. 고객은 로그 버퍼의 크기를 구성할 수 있습니다.
2.지속적인 커밋
(속도:느림, 내구성:우수) 모든 트랜잭션은 즉시 디스크로 플러시됩니다. 이 속도는 디스크 장치의 속도에 따라 다릅니다. 모든 트랜잭션이 디스크에 저장되기 때문에 매우 내구성이 있습니다.
고객은 ttDurableCommit().
라는 SQL 함수를 호출하여 언제든지 BUFFERED LOGGING에서 DURABLE COMMIT로 전환할 수 있습니다. 기존 RDBMS에서는 불가능했던 내구성과 런타임 성능을 고객이 유연하게 제어할 수 있습니다.
상당한 응답 시간 개선:메모리 내 데이터베이스 캐시 + Oracle 데이터베이스
이미지 출처:https://www.oracle.com/technetwork/database/windows/ds-imdb-cache-1-129794.pdf
위의 그래프는 7가지 트랜잭션 유형별로 측정한 평균 트랜잭션 응답 시간을 보여줍니다.
빨간색 막대는 데이터가 TimesTen IMDB에 캐시될 때 얻은 응답 시간입니다. 응용 프로그램 데이터베이스 작업에 대한 엄청난 개선입니다. Oracle 데이터베이스에서 응답 시간의 상당 부분은 클라이언트-서버 연결 및 네트워크 왕복으로 인한 것이며 애플리케이션이 메모리의 TimesTen 데이터베이스에 직접 링크될 때 존재하지 않는다는 것을 기억하십시오. 애플리케이션은 TCP/IP 클라이언트/서버를 통해 TimesTen에 연결할 수도 있습니다.
TimesTen 데이터베이스 만들기
DSN 정의
• DataStore 속성:데이터베이스의 체크포인트 파일의 디렉터리 이름을 지정합니다. 예:DataStore=/data/TTDEMO/TTDEMO-DSN1/TTDEMO-DSN1
• LogDir 속성:트랜잭션 로그 파일의 디렉터리 이름을 지정합니다. 트랜잭션 로그에는 각 데이터베이스 업데이트, 커밋 및 롤백에 대한 로그 레코드가 포함됩니다.
• DatabaseCharacterSet 속성:데이터가 저장되는 문자 집합 논리적으로 두 개의 개별 메모리 영역으로 나뉩니다.
• 데이터베이스 메모리 영역
- Permanent region
- PermSize DSN attribute configures its allocated size.
- Region stores persistent database elements (ex: tables, indexes)
- Region is written to disk during a checkpoint operation.
- Temporary region
-TempSize DSN attribute configures its allocated size
-Region stores transient data and information generated when executing statements.( temp tables, stored result sets..)
• 인스턴스 관리자가 데이터베이스에 접속하면 데이터베이스가 자동으로 생성됩니다.
$ttisql <DSN name>
•Ttisql 유틸리티는 서버 DSN에 직접 연결하고 ttIsqlCS 유틸리티는 TimesTen 클라이언트 DSN에 연결합니다.
$ttisql connStr "DSN=TTDEMO-DSN1;UID=timesten;pwd=timesten"
• RAM 정책:데이터베이스가 메모리에 로드 및 언로드되는 시기를 결정합니다.
inUse: The database is in memory if it is in use (default policy).
always: The database is always kept resident in memory.
manual: The database is manually loaded into and unloaded from memory.
GitOps는 클라우드 네이티브 애플리케이션을 구축하기 위한 효과적인 기반을 제공할 수 있습니다. GitOps의 주요 원칙은 조직에 다음과 같은 이점을 강조합니다.
메모리 내 데이터베이스 캐시
이미지 출처:https://www.oracle.com/database/technologies/timesten-cache.html
• 애플리케이션 계층에서 Oracle 데이터베이스 테이블 캐시
- 개별 테이블 및 관련 테이블 캐시
- 행 및 열의 전체 또는 하위 집합 캐시
• 읽기 전용 및 업데이트 가능한 캐시 데이터베이스
- 일반 SQL 데이터베이스 테이블과 같은 캐시 테이블 액세스
- 가입/검색, 삽입/업데이트/삭제
• 자동 데이터 동기화
- TimesTen에서 Oracle로
- 오라클에서 TimesTen으로
오라클 IMDB 캐시
• 캐시 그룹이란 무엇입니까?
A set of cached tables created in TimesTen database that correspond to tables in Oracle Database
• 읽기 전용 캐시 그룹
읽기 작업은 TimesTen에서 수행됩니다.
쓰기 작업은 Oracle로 전달되고 자동으로 TimesTen으로 새로 고쳐집니다.
이미지 출처:https://docs.oracle.com/cd/E18283_01/timesten.112/e14261/cache.htm
Oracle의 Cache Connect를 사용하면 Oracle 데이터베이스의 하위 집합을 TimesTen에 캐시하여 자주 액세스하는 데이터에 더 나은 응답 시간과 처리량을 제공할 수 있습니다.
전체 테이블, 행의 하위 집합 또는 열의 하위 집합을 선택하여 캐시할 수 있습니다. 캐시는 읽기 전용이거나 업데이트할 수 있습니다. 데이터가 TimesTen 데이터베이스 내부에서 업데이트되면 업데이트는 동기 쓰기를 통해 Oracle 데이터베이스로 전파됩니다. 쓰루 또는 비동기 write-through. 동일한 Oracle DB에서 캐싱하는 여러 캐시 인스턴스를 가질 수 있습니다. 각 캐시 인스턴스는 고유한 캐시 콘텐츠 집합을 가질 수 있습니다.
IMDB 캐시 관리 및 모범 사례
• Oracle 및 TimesTen 데이터베이스 모두에서 1회 캐시 설정(구현 문서당)
• 캐시 에이전트 재시작 정책 설정:수동, 항상, 재시작 안 함
• AUTOREFRESH 간격 지정
- 캐시 그룹의 Oracle 테이블에 대한 INSERT, UPDATE 및 DELETE 트리거 생성
- 트리거는 TimesTen이 Oracle에 보관하는 로깅 테이블에 작은 행을 삽입합니다.
- TimesTen 에이전트는 이 테이블을 쿼리하고 지정한 간격으로 데이터를 새로 고칩니다. • Oracle의 데이터 정의 변경에는 LOAD, UNLOAD, FLUSH, REFRESH CACHE GROUPS가 필요합니다.
결론
TimesTen은 표준 API를 통해 표준 관계형 데이터베이스 기능을 제공하면서 SQL 작업에 대해 대기 시간이 매우 짧고 처리량이 매우 높은 메모리 내 관계형 데이터베이스입니다. 독립 실행형 데이터베이스 또는 Oracle 데이터베이스용 고성능 관계형 캐시로 배포할 수 있습니다.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.