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

Oracle 21c: Tính Năng Nâng Cao Cho Cơ Sở Dữ Liệu On-Premises Và Cloud

Tổng quan Oracle 21c

Cơ sở dữ liệu Oracle 21c cung cấp năng lực cho các dịch vụ cơ sở dữ liệu Oracle trong hạ tầng on-premises và cloud, bao gồm Autonomous Database (ADB), Oracle Exadata Service@Customer và Oracle Exadata Machine.

Phiên bản Oracle mới nhất bao gồm các trường hợp sử dụng mới, tự động hóa hiệu suất optimizer, hỗ trợ dữ liệu JSON và mô hình đồ thị. Các tính năng tự động hóa giúp cuộc sống của cả người dùng và nhà phát triển dễ dàng hơn. Nó hỗ trợ nhiều mô hình dữ liệu, workload, bao gồm khả năng machine learning tích hợp, trong số đó, loại bỏ nhu cầu các dịch vụ riêng biệt. Oracle 21c cho phép giao dịch SQL, REST và API trên tất cả các loại mô hình dữ liệu.

Kiến trúc 21c

Kiến trúc cơ sở dữ liệu Oracle giống như các phiên bản cũ hơn. Nó bao gồm các instance cơ sở dữ liệu Oracle và cơ sở dữ liệu Oracle như được hiển thị trong sơ đồ sau.

Nguồn hình ảnh

Kiến trúc kỹ thuật Oracle Database 21c

Kiến trúc đa thuê (Multitenant) bao gồm các tệp vật lý gọi là datafiles và instance cơ sở dữ liệu bao gồm các cấu trúc bộ nhớ (SGA - Shared Global Area và PGA) và các tiến trình nền để thực hiện các tác vụ như thực thi truy vấn thay mặt người dùng với sự giúp đỡ của server process, lấy dữ liệu từ đĩa, ghi dữ liệu vào datafiles hoặc redo log files, lưu trữ kế hoạch thực thi, v.v.

Kiến trúc cơ sở dữ liệu đơn (single database) chứa mối quan hệ một-một giữa instance và database. Nhiều instance đơn lẻ có thể được cài đặt trên cùng một máy chủ, nhưng sẽ có cơ sở dữ liệu riêng biệt cho mỗi instance.

Kiến trúc Oracle RAC bao gồm nhiều instance chạy trên các máy chủ riêng biệt, nhưng tất cả đều sử dụng cùng một database. Cấu hình này được thiết kế để cung cấp tính sẵn sàng cao, hiệu suất cao cấp và khả năng mở rộng cho khách hàng. Listener trong database chấp nhận yêu cầu từ ứng dụng client và thiết lập kết nối đến database, sau đó chuyển giao cho server process. Server process sẽ làm việc thay mặt người dùng và thực hiện yêu cầu của họ.

Tính năng Oracle 21c

Thế hệ 21c hỗ trợ tất cả các loại kiểu dữ liệu như Relational, JSON, XML, spatial graph, OLAP, v.v. và cung cấp hiệu suất cao hơn, khả năng mở rộng, sẵn sàng cao và bảo mật cho tất cả các loại workload như phân tích, vận hành và workload hỗn hợp như được mô tả trong hình ảnh sau.

Nguồn hình ảnh

1) Blockchain Tables (Bảng Blockchain)

Đã giải quyết các vấn đề liên quan đến giao dịch được xác minh. Nó hỗ trợ bản chất phức tạp của việc xây dựng ứng dụng có thể hỗ trợ sổ cái phân tán. Các bảng này hoạt động như bất kỳ heap table bình thường nào nhưng với một số khác biệt quan trọng. Đáng chú ý nhất là các hàng được băm mật mã (cryptographically hashed) khi được chèn vào bảng, đảm bảo rằng hàng không thể bị thay đổi sau đó.

Nguồn hình ảnh

Điều này tạo ra một bảng chỉ chèn (insert-only) và người dùng không thể cập nhật hoặc xóa các hàng của bảng blockchain. Ngoài ra, người dùng bị ngăn chặn việc cắt bỏ dữ liệu (truncate), xóa blockchain và phân vùng bảng trong một giới hạn thời gian nhất định. Những khả năng quan trọng này có nghĩa là người dùng khác có thể tin tưởng rằng dữ liệu được giữ trong Bảng Blockchain là bản ghi chính xác của các sự kiện.

2) Native JSON Data Type (Kiểu dữ liệu JSON gốc)

Lưu trữ dữ liệu JSON dưới dạng VARCHAR2 hoặc LOB (CLOB hoặc BLOB) giúp nhà phát triển xây dựng ứng dụng với sự linh hoạt của mô hình thiết kế không schema (schemaless). Ví dụ, người dùng có thể truy vấn tài liệu JSON với SQL và tận dụng phân tích nâng cao, lập chỉ mục các thuộc tính riêng lẻ hoặc toàn bộ tài liệu, và xử lý hàng tỷ tài liệu JSON song song. Trong Oracle Database 21c, hỗ trợ JSON được nâng cao hơn bằng cách cung cấp kiểu dữ liệu gốc "JSON".

Điều này có nghĩa là thay vì phải phân tích cú pháp JSON khi đọc hoặc cập nhật, việc phân tích chỉ xảy ra khi chèn (insert) và JSON sau đó được giữ ở định dạng nhị phân nội bộ giúp truy cập nhanh hơn nhiều. Điều này có thể dẫn đến các hoạt động đọc và cập nhật nhanh gấp 4-5 lần và cập nhật tài liệu JSON rất lớn nhanh gấp 20-30 lần.

CREATE TABLE j_order (
 id INTEGER PRIMARY KEY,
 po_doc JSON
);

Kiểu dữ liệu mới không phải là thay đổi duy nhất được giới thiệu cho JSON trong Oracle Database 21c, Oracle cũng thêm hàm JSON mới JSON_TRANSFORM giúp đơn giản hóa việc cập nhật và xóa nhiều thuộc tính trong một tài liệu trong một thao tác duy nhất.

UPDATE j_order SET po_doc = JSON_TRANSFORM(po_doc,
  SET '$.address.city' = 'Santa Cruz',
  REMOVE '$.phones[*]?(@.type == "office")')
WHERE id = 555;

3) Thực thi JavaScript bên trong Oracle Database

Sử dụng Multi Language Engine (MLE) để chạy mã JavaScript bên trong database với gói PL/SQL mới: DBMS_MLE. JavaScript cho phép tương tác người dùng phong phú hơn trong ứng dụng web và mobile. Đây là một trong những ngôn ngữ ít chạy được trong trình duyệt web và có thể dùng để phát triển cả mã phía server và client-side.

Có một bộ sưu tập lớn các thư viện JavaScript hiện có để triển khai các chương trình phức tạp, và JavaScript hoạt động kết hợp với các công nghệ phát triển phổ biến như JSON và REST. Trong Oracle 21c, nhà phát triển có thể chạy mã JavaScript của họ bên trong database nơi dữ liệu nằm. Điều này cho phép họ thực thi các tác vụ tính toán ngắn được viết bằng JavaScript mà không cần di chuyển dữ liệu lên tầng trung gian (mid-tier) hoặc trình duyệt. MLE tự động ánh xạ các kiểu dữ liệu JavaScript sang kiểu dữ liệu Oracle Database và ngược lại, và nhà phát triển không phải lo lắng về chuyển đổi kiểu dữ liệu.

Ngoài ra, JavaScript có thể thực thi PL/SQL và SQL thông qua mô-đun JavaScript tích hợp sẵn. Tất cả điều này cho phép các nhà phát triển APEX sử dụng JavaScript như một ngôn ngữ hạng nhất trong ứng dụng APEX của họ, mà không hy sinh sức mạnh của PL/SQL và SQL. Trong JavaScript, bạn có thể truy cập database – bảng và view – thông qua SQL thông thường. Sau đây minh họa cách viết mã trong JavaScript:

DECLARE
  ctx DBMS_MLE.CONTEXT_HANDLE_T;
BEGIN
  ctx := DBMS_MLE.CREATE_CONTEXT(); -- Tạo ngữ cảnh thực thi cho MLE
  DBMS_MLE.EVAL(ctx, 'JAVASCRIPT', 'console.log("Hello from JavaScript")'); -- Đánh giá đoạn mã nguồn trong ngữ cảnh thực thi
  DBMS_MLE.DROP_CONTEXT(ctx); -- Xóa ngữ cảnh thực thi khi không còn cần thiết
  -- LƯU Ý: miễn là ngữ cảnh được giữ, nó giữ giá trị của các đối tượng toàn cục bao gồm các hàm
END;

4) SQL Macros

Thông thường các truy vấn SQL trở nên phức tạp khi số lượng join tăng lên hoặc việc truy xuất dữ liệu phức tạp hơn. Nhà phát triển giải quyết vấn đề này bằng cách sử dụng stored procedures và functions để đơn giản hóa các thao tác này. Nhưng điều này có thể giảm hiệu suất vì SQL engine chuyển đổi ngữ cảnh (context switch) với PL/SQL Engine. Trong Oracle 21c, SQL Macros giải quyết vấn đề này bằng cách cho phép các biểu thức SQL và table functions được thay thế bằng lời gọi đến stored procedures trả về string literal để chèn vào SQL bạn muốn thực thi.

5) Cải tiến In-Memory

Phân tích dữ liệu sử dụng định dạng cột (columnar) có thể tăng hiệu suất so với định dạng dựa trên hàng (row-based). Mặc dù cập nhật dữ liệu nhanh hơn trong mô hình hàng, tính năng Oracle Database In-Memory giúp chúng ta sử dụng cả hai mô hình tùy theo yêu cầu. Với sự giúp đỡ này, người dùng có thể chạy ứng dụng của họ mà không cần thay đổi và in-memory sẽ duy trì một columnar store hỗ trợ các truy vấn phân tích thời gian thực cực nhanh. Có ba cải tiến chính để nâng cao hiệu suất và dễ dàng sử dụng trong Oracle Database In-Memory.

A. Database In-Memory Vector Joins (Kết hợp Vector In-Memory)

Giúp tăng tốc các hoạt động như hash joins trên các cột bên trong in-memory column store. Trong trường hợp hash joins, các joins được chia thành các hoạt động nhỏ hơn và chuyển cho vector process. Bảng giá trị khóa được sử dụng là SIMD optimized và dùng để khớp hàng trên join trái và phải, cải thiện hiệu suất gấp 10 lần.

B. Self-Managing In-Memory Column Store (Column Store In-Memory tự quản lý)

Khi Oracle Database In-Memory được phát hành, người dùng phải khai báo rõ ràng các cột được populate vào memory column store, điều này cho phép kiểm soát cao nếu bộ nhớ chặt chẽ.

Trong database 18c, đã giới thiệu chức năng tự động đặt đối tượng vào Column Store nếu chúng được sử dụng chủ động và xóa các đối tượng không được sử dụng. Tuy nhiên, người dùng vẫn phải chỉ định các đối tượng cần xem xét.

Trong Oracle Database 21c, thiết lập INMEMORY_AUTOMATIC_LEVEL thành HIGH đảm bảo tất cả các đối tượng đều được xem xét - từ đó đơn giản hóa công việc quản lý in-memory column store.

C. In-Memory Hybrid Columnar Scans (Quét Hybrid Columnar In-Memory)

Không thể có mọi cột của mọi bảng được populate trong Column Store vì bộ nhớ bị giới hạn. Trong nhiều trường hợp, đây không phải là vấn đề nhưng đôi khi người dùng có thể gặp truy vấn cần dữ liệu (cột) từ Column Store và dữ liệu chỉ có sẵn trong row store.

Trong các bản phát hành trước của Oracle Database In-Memory, các truy vấn như vậy chỉ chạy trên row store. Trong Oracle Database 21c, người dùng giờ đây có thể sử dụng cả hai! Optimizer giờ đây có thể chọn quét In-Memory Column Store và lấy giá trị cột được chiếu từ row store nếu cần. Điều này có thể dẫn đến cải thiện hiệu suất đáng kể.

Nguồn hình ảnh

Kết luận

Tổng thể các lợi ích có thể tóm tắt như sau:

  • 1) Có sự cải thiện đáng kể về hiệu suất truy vấn của cơ sở dữ liệu.
  • 2) Thế hệ 21c hỗ trợ tất cả các kiểu dữ liệu như JSON, XML và OLAP.
  • 3) Khả năng mở rộng lớn, sẵn sàng cao và bảo mật cho tất cả workload như OLTP, ad-hoc queries và data warehouse.
  • 4) Hỗ trợ cả workload vận hành và hỗn hợp.
  • 5) Trong 21c nhiều thứ được tự động hóa như parallel scans, online backups, v.v., giải phóng nhà phát triển khỏi lo lắng về sự bền bỉ của dữ liệu.
  • 6) Tính năng hiệu suất đã được tự động hóa ở mức độ lớn với các tính năng như automatic indexing (lập chỉ mục tự động).

Sử dụng tab Feedback để đưa ra nhận xét 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.