Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Oracle TimesTen: Cơ sở dữ liệu In-Memory siêu nhanh cho hiệu suất đỉnh cao

TimesTen là sản phẩm Oracle có tiềm năng nâng cao hiệu suất Oracle Database đáng kể.

Bên cạnh việc tối ưu hóa bộ nhớ, TimesTen còn cung cấp throughput cao, đảm bảo độ bền (durability) và khả năng mở rộng. Tất cả trong khi cung cấp thời gian phản hồi tối thiểu, đặc biệt cho ứng dụng phụ thuộc nghiêm ngặt vào hiệu suất. Khác với Database truyền thống, TimesTen cung cấp hiệu suất cao, nằm hoàn toàn trong RAM.

Lịch sử TimesTen

  • Phát minh tại HP Labs năm 1994
  • Nhúng vào giải pháp HP Open Call
  • Tách ra năm 1996 thành Startup vốn rủi ro (VC funded)
  • Hàng nghìn khách hàng Production
  • Được Oracle Corporation mua lại năm 2005
  • 3 bản phát hành chính kể từ 2005: 6.0, 7.0, 11gR2, 18c Release 1

Tổng quan Oracle TimesTen

Oracle TimesTen In-Memory Database là hệ quản trị cơ sở dữ liệu quan hệ in-memory có tính bền vững (persistence) và high availability. Được thiết kế và triển khai ban đầu tại Hewlett-Packard Labs, Palo Alto, California, TimesTen tách ra thành startup riêng năm 1996 và được Oracle mua lại năm 2005.

TimesTen Database có persistence và availability cao. Cung cấp latency rất thấp và throughput cao nhờ là In-Memory Database. Các tính năng khác bao gồm Standard Relational Database APIs như JDBC và ODBC. TimesTen không chỉ dùng như In-Memory Database độc lập, mà còn cung cấp tiện ích dùng như Cache cho các Relational Databases khác, kể cả Oracle Database. Thường dùng trong ứng dụng OLTP khối lượng cực lớn như giao dịch tài chính, billing viễn thông.

Cách TimesTen lưu dữ liệu trên Disk

Nguồn ảnh: https://luna-ext.di.fc.ul.pt/oracle11g/timesten.112/e14261/overview.htm

Mỗi TimesTen Data Store có chính xác 2 Checkpoint Files. Checkpoint được gọi mỗi 10 phút mặc định; ghi dirty memory pages vào Checkpoint File đầu tiên, Checkpoint tiếp theo dùng file thứ hai. Write Transactions đặt vào In-Memory Buffer trước, sau đó flush xuống Log Files.

Hai loại Transactional Logging:

1. Buffered Logging:

(TỐC ĐỘ: NHANH, ĐỘ BỀN: TỐT) Transaction lưu vào In-Memory Log Buffer trước. Khi Buffer đầy, nó flush xuống Disk nền (background). Quy trình rất nhanh (5000 TPS trở lên). Có cơ hội nhỏ Transaction bị mất nếu Crash xảy ra trước khi Buffer Flush. Khách hàng có thể cấu hình kích thước Log Buffer.

2. Durable Commit

(TỐC ĐỘ: CHẬM, ĐỘ BỀN: XUẤT SẮC) Mọi Transaction flush xuống Disk ngay lập tức. Tốc độ phụ thuộc vào tốc độ Disk Device. Vì mọi Transaction đều lưu Disk, nên rất bền vững.

Khách hàng có thể chuyển từ BUFFERED LOGGING sang DURABLE COMMIT bất cứ lúc nào bằng cách gọi SQL Function TTDURABLECOMMIT(). Khách hàng có thể linh hoạt kiểm soát Durability vs Performance tại Runtime, điều không thể với RDBMS truyền thống.

Cải thiện thời gian phản hồi đáng kể: In-Memory Database Cache + Oracle Database

Nguồn ảnh: https://www.oracle.com/technetwork/database/windows/ds-imdb-cache-1-129794.pdf

Biểu đồ trên cho thấy Average Transaction Response Time đo được cho 7 loại Transaction.

Cột đỏ là Response Time khi Data được Cache trong TimesTen IMDB. Cải thiện khổng lồ cho Operation Database của Application. Nhớ rằng phần lớn Response Time trên Oracle Database do Client-Server Connection và Network Roundtrip, không tồn tại khi Application Link trực tiếp đến TimesTen Database trong Memory. Application cũng có thể kết nối TimesTen qua TCP/IP Client/Server.

Tạo TimesTen Database

Định nghĩa DSN

  • DataStore Attribute: Chỉ định tên thư mục của Checkpoint Files của Database, ví dụ: DATASTORE=/DATA/TTDEMO/TTDEMO-DSN1/TTDEMO-DSN1
  • LogDir Attribute: Chỉ định tên thư mục cho Transaction Log Files. Transaction Log chứa Log Records cho mỗi Database Update, Commit, Rollback.
  • DatabaseCharacterSet Attribute: Charset lưu trữ dữ liệu. Chia logic thành 2 vùng nhớ riêng biệt.
  • Database Memory Regions
    - Permanent Region - PermSize DSN Attribute cấu hình kích thước cấp phát. - Region lưu trữ các yếu tố Database bền vững (Tables, Indexes). - Region ghi xuống Disk trong Checkpoint Operation.
    - Temporary Region - TempSize DSN Attribute cấu hình kích thước cấp phát. - Region lưu trữ dữ liệu tạm thời và thông tin sinh ra khi thực thi Statements (Temp Tables, Stored Result Sets...)

Database sẽ tự động tạo khi Instance Administrator kết nối đến Database:

$TTISQL <DSN NAME>

• TTISQL Utility kết nối trực tiếp Server DSN, TTISQLCS Utility kết nối Client DSNs của TimesTen.

$TTISQL CONNSTR "DSN=TTDEMO-DSN1;UID=TIMESTEN;PWD=TIMESTEN"

• RAM Policy: Quyết định khi nào Database Load vào và Unload khỏi Memory.

INUSE: Database ở trong Memory nếu đang được dùng (Default Policy).
ALWAYS: Database luôn được giữ Resident trong Memory.
MANUAL: Database thủ công Load vào và Unload khỏi Memory.

GitOps có thể tạo nền tảng hiệu quả cho việc xây dựng Cloud Native Applications. Các nguyên tắc chính của GitOps nêu bật lợi ích sau cho tổ chức:

In-Memory Database Cache

Nguồn ảnh: https://www.oracle.com/database/technologies/timesten-cache.html

• Cache Oracle Database Tables ở Application Tier

  1. Cache từng Table riêng lẻ và các Table liên quan
  2. Cache toàn bộ hoặc Subset Rows và Columns

• Read-Only và Updatable Cache Database

  1. Truy cập Cached Tables như Table SQL thông thường
  2. Joins/Search, Insert/Update/Delete

• Tự động đồng bộ dữ liệu

  1. TimesTen → Oracle
  2. Oracle → TimesTen

Oracle IMDB Cache

  • Cache Group là gì?
    Một tập hợp Cached Tables được tạo trong TimesTen Database tương ứng với Tables trong Oracle Database
  • Read-Only Cache Group

    Read Operations thực hiện trong TimesTen

    Write Operations chuyển qua Oracle và tự động Refresh về TimesTen

    Nguồn ảnh: https://docs.oracle.com/cd/E18283_01/TIMESTEN.112/E14261/CACHE.HTM

Cache Connect trong Oracle cho phép User Cache Subset Oracle Database vào TimesTen để cung cấp Response Time và Throughput tốt hơn cho dữ liệu truy cập thường xuyên.

Bạn có thể Cache toàn bộ Table, Subset Rows, hoặc Subset Columns. Cache có thể Read-Only hoặc Updatable. Nếu dữ liệu Update trong TimesTen Database, các Update truyền播 đến Oracle Database qua Synchronous Write-Through hoặc Asynchronous Write-Through. Bạn có thể có nhiều Cache Instances caching từ cùng một Oracle DB; mỗi Cache Instance có thể có tập hợp Cached Content khác nhau.

IMDB Cache Administration & Best Practices

  • One-time Cache Setup trong cả Oracle và TimesTen Databases (theo Implementation Doc)
  • Set Cache Agent Restart Policy: Manual, Always, Norestart
  • Chỉ định AUTOREFRESH Interval
    • Tạo INSERT, UPDATE, DELETE Triggers trên Oracle Table(s) trong Cache Group
    • Trigger Insert một Row nhỏ vào Logging Table mà TimesTen giữ trong Oracle
    • TimesTen Agent query Table này và Refresh Data theo Interval bạn chỉ định • Thay đổi Data Definition trong Oracle sẽ yêu cầu LOAD, UNLOAD, FLUSH, REFRESH CACHE GROUPS

Kết luận

TimesTen là In-Memory Relational Database cung cấp Latency rất thấp và Throughput cực cao cho SQL Operations trong khi cung cấp chức năng Relational Database chuẩn qua Standard APIs. Có thể triển khai như Standalone Database hoặc High-Performance Relational Cache cho Oracle Database.

Sử dụng tab Feedback để bình luận hoặc đặt câu hỏi. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.