Ảnh: techzine

Oracle vừa mới đây đã cho ra mắt Oracle database 21c. Bản phát hành mới nhất của cơ sở dữ liệu phổ biến nhất thế giới theo tiêu chí “cloud first” đã có trong Oracle Cloud Database Service Virtual Machine (cho RAC và phiên bản đơn) và Bare Metal Service (phiên bản đơn). Nó cũng có sẵn trong Autonomous Database Free Tier Service cho một số khu vực trên thế giới. Phiên bản Cơ sở dữ liệu Oracle 21c cho các nền tảng on-prem (bao gồm Exadata, Linux và Windows) sẽ xuất hiện vào năm 2021.

Tương lai theo hướng dữ liệu (Data-Driven)

Oracle đã nhất quán áp dụng phương pháp lưu trữ và quản lý dữ liệu trong cơ sở dữ liệu hội tụ hiệu quả và năng suất hơn là chia nhỏ thành nhiều công cụ sử dụng một lần – điều này chắc chắn dẫn đến các vấn đề về tính toàn vẹn, nhất quán và bảo mật của dữ liệu. Nói một cách đơn giản, cơ sở dữ liệu hội tụ là cơ sở dữ liệu đa mô hình (multi-model), phục vụ nhiều khách hàng (multi-tenant), multi-workload. Cơ sở dữ liệu Oracle hỗ trợ đầy đủ nhiều mô hình dữ liệu và phương pháp truy cập, đơn giản hóa việc hợp nhất trong khi đảm bảo tính cô lập và vượt trội trong các trường hợp sử dụng khối lượng công việc cơ sở dữ liệu điển hình – cả hoạt động và phân tích.

Cơ sở dữ liệu hội tụ (ảnh Oracle Blog)

Do đó, thế hệ 21c của cơ sở dữ liệu hội tụ của Oracle cung cấp cho khách hàng; hỗ trợ tốt nhất cho tất cả các loại dữ liệu (ví dụ: quan hệ, JSON, XML, không gian, đồ thị, OLAP, v.v.) và hiệu suất hàng đầu trong ngành, khả năng mở rộng, tính khả dụng và bảo mật cho tất cả khối lượng công việc hoạt động, phân tích và hỗn hợp khác của chúng. Chiến lược hội tụ của Oracle cũng đảm bảo rằng các nhà phát triển được hưởng lợi từ tất cả các khả năng chính của Cơ sở dữ liệu Oracle 21c (ví dụ: ACID transactions, đọc tính nhất quán, quét song song và DML, sao lưu trực tuyến, v.v.) – giúp họ tập trung vào việc phát triển ứng dụng mà không phải lo lắng về độ bền của dữ liệu.

Những tính năng mới của Oracle database 21c

Dưới đây là một số tính năng mới trong Cơ sở dữ liệu Oracle 21c.

Bảng Blockchain

Blockchain như một công nghệ đã hứa hẹn để giải quyết nhiều vấn đề liên quan đến việc xác minh các giao dịch. Mặc dù đã đạt được nhiều tiến bộ đáng kể trong việc đưa công nghệ này vào doanh nghiệp, nhưng vẫn còn một số vấn đề. Có thể cho rằng, điều lớn nhất là bản chất phức tạp của việc xây dựng các ứng dụng có thể hỗ trợ sổ cái phân tán (distributed ledger). Cơ sở dữ liệu Oracle 21c giải quyết vấn đề này với sự ra đời của Bảng Blockchain (blockchain table). Các bảng này hoạt động giống như bất kỳ bảng heap bình thường nào, nhưng có một số điểm khác biệt quan trọng. Điều đáng chú ý nhất trong số này là các hàng được băm bằng mật mã khi chúng được chèn vào bảng, đảm bảo rằng hàng không còn có thể bị thay đổi sau đó.

Bảng blockchain trong cơ sở dữ liệu Oracle database 21c
Bảng Blockchain trong Oracle database 21c

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

Kiểu dữ liệu Native JSON

Oracle đã giới thiệu hỗ trợ cho JSON trong Cơ sở dữ liệu Oracle 12c, lưu trữ dữ liệu JSON dưới dạng VARCHAR2 hoặc LOB (CLOB hoặc BLOB). Điều này cho phép các nhà phát triển xây dựng các ứng dụng với tính linh hoạt của một mô hình thiết kế không có lớp, với tất cả sức mạnh của Cơ sở dữ liệu Oracle. Ví dụ: người dùng có thể truy vấn tài liệu JSON bằng cách sử dụng SQL tiêu chuẩn, 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. Oracle cũng cung cấp các công cụ để khám phá những thuộc tính nào tạo nên các tài liệu JSON, và do đó tạo ra các chế độ xem quan hệ trên đầu các bộ sưu tập. Các nhà phát triển cũng có thể coi Cơ sở dữ liệu Oracle của họ như thể đó là cơ sở dữ liệu NoSQL bằng cách truy cập nó bằng các API SODA (API dữ liệu đối tượng đơn giản) có sẵn cho Java, Node.js, Python, C và REST.

Trong Cơ sở dữ liệu Oracle 21c, hỗ trợ JSON được nâng cao hơn nữa 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 trên các hoạt động đọc hoặc cập nhật, quá trình phân tích cú pháp chỉ diễn ra trên một phần chèn 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 hoạt động đọc và cập nhật nhanh hơn 4 hoặc 5 lần và cập nhật cho các tài liệu JSON rất lớn nhanh hơn từ 20 đến 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 một hàm JSON mới JSON_TRANSFORM giúp việc cập nhật và loại bỏ nhiều thuộc tính trong một tài liệu trở nên đơn giản hơn nhiều chỉ trong một thao tác.

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

Oracle cũng đã bổ sung khả năng tương thích cho kiểu dữ liệu JSON mới với các trình điều khiển và tiện ích tích hợp như Datapump và GoldenGate.

Thực thi JavaScript bên trong Oracle Database

JavaScript là một ngôn ngữ kịch bản phổ biến, trong số nhiều cách sử dụng, cho phép người dùng tương tác phong phú hơn trong các ứng dụng web và ứng dụng di động. Đó là một trong số ít ngôn ngữ chạy trong trình duyệt web và có thể được sử dụng để phát triển cả mã phía máy khách và phía máy chủ (client-side & server-side code). 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 cùng với các công nghệ phát triển phổ biến như JSON và REST.

Trong Cơ sở dữ liệu Oracle 21c, các developer có thể thực thi các đoạn mã JavaScript bên trong cơ sở dữ liệu, nơi chứa dữ liệu. Điều này cho phép họ thực thi các tác vụ tính toán ngắn dễ dàng được thể hiện bằng JavaScript mà không cần phải di chuyển dữ liệu sang trình duyệt hoặc trình duyệt trung cấp. Công cụ đa ngôn ngữ (MLE) trong Cơ sở dữ liệu Oracle 21c, được cung cấp bởi GraalVM, tự động ánh xạ các loại dữ liệu JavaScript sang các loại dữ liệu Cơ sở dữ liệu Oracle và ngược lại để các nhà phát triển không phải tự xử lý việc chuyển đổi loại dữ liệu. Ngoài ra, bản thân mã 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 cũng 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 các ứng dụng APEX của họ mà không cần phải hy sinh sức mạnh của PL / SQL và SQL. Dưới đây là một số mã mẫu sử dụng gói DBMS_MLE PL / SQL để thực thi mã JavaScript:

set serveroutput on;

DECLARE
  ctx dbms_mle.context_handle_t;
  source CLOB;
  greeting VARCHAR2(100);
BEGIN
  ctx := dbms_mle.create_context(); -- Create execution context for MLE execution

  dbms_mle.export_to_mle(ctx, 'person', 'World'); -- Export value from PL/SQL

  source := q'~
    var bindings = require("mle-js-bindings");
    var person = bindings.importValue("person"); // Import value previously exported from PL/SQL
    var greeting = "Hello, " + person + "!";
    bindings.exportValue("greeting", greeting); // Export value to PL/SQL
  ~';

  dbms_mle.eval(ctx, 'JAVASCRIPT', source); -- Evaluate the source code snippet in the execution context

  dbms_mle.import_from_mle(ctx, 'greeting', greeting); -- Import value previously exported from MLE

  dbms_output.put_line('Greetings from MLE: ' || greeting);

  dbms_mle.drop_context(ctx); -- Drop the execution context once no longer required
END;
/

SQL Macros

Không có gì lạ khi một câu lệnh SQL tăng độ phức tạp khi số lượng các phép nối (join) tăng lên hoặc các hoạt động được thực hiện trên dữ liệu được truy xuất trở nên liên quan hơn. Cũng không có gì lạ khi các nhà phát triển cố gắng giải quyết vấn đề này bằng cách sử dụng các thủ tục được lưu trữ và các hàm bảng để đơn giản hóa các hoạt động thường được sử dụng này. Điều này hoạt động cực kỳ hiệu quả để đơn giản hóa mã, nhưng có thể hy sinh hiệu suất khi công cụ SQL chuyển đổi ngữ cảnh với công cụ PL / SQL. Trong Cơ sở dữ liệu Oracle 21c, SQL Macro giải quyết vấn đề này bằng cách cho phép các biểu thức SQL và các hàm bảng được thay thế bằng các lệnh gọi đến các thủ tục được lưu trữ trả về một chuỗi ký tự sẽ được chèn vào SQL mà chúng ta muốn thực thi. Đó là một khái niệm cực kỳ đơn giản và là một khái niệm mà các lập trình viên C và Rust sẽ quen thuộc. Ví dụ nhỏ sau đây cho thấy nó hoạt động thế nào.

Đầu tiên, hãy tạo một bảng và chèn một vài hàng.

CREATE TABLE line_items
(
   id        NUMBER,
   name      VARCHAR2(30),
   item_type VARCHAR2(30),
   price     FLOAT
);

INSERT INTO line_items VALUES (1, 'Red Red Wine', 'ALCOHOL', 15.6);
INSERT INTO line_items VALUES (2, 'Its Cold Out There Heater', 'RADIATOR', 200.49);
INSERT INTO line_items VALUES (3, 'How Sweet It Is Cake', 'FOOD', 4.56);
COMMIT;

SQL bên dưới tính thuế giá trị gia tăng trên các hàng trong bảng LINE_ITEMS

SELECT id,
  CASE
    WHEN item_type = 'ALCOHOL'     THEN ROUND(1.2 * price, 2)
    WHEN item_type = 'SOLAR PANEL' THEN ROUND(1.05 * price, 2)
    WHEN item_type = 'RADIATOR'    THEN ROUND(1.05 * price, 2)
    ELSE price
  END AS total_price_with_tax
FROM line_items; 

Tuy nhiên, Oracle Database 21c có thể đơn giản hóa bằng cách tạo một hàm với từ khóa SQL_MACRO mới và trả về một chuỗi.

CREATE OR REPLACE FUNCTION total_price_with_tax(the_price FLOAT, the_item_type VARCHAR2)
  RETURN VARCHAR2 SQL_MACRO(SCALAR) IS
BEGIN
  RETURN q'[CASE
    WHEN the_item_type = 'ALCOHOL'     THEN ROUND(1.2 * the_price, 2)
    WHEN the_item_type = 'SOLAR PANEL' THEN ROUND(1.05 * the_price, 2)
    WHEN the_item_type = 'RADIATOR'    THEN ROUND(1.05 * the_price, 2)
    ELSE the_price END]';
END;
/

Sau đó, các nhà phát triển chỉ cần tham chiếu Macro SQL bên trong một câu lệnh chọn. SQL được thực thi hoàn toàn giống với Câu lệnh SQL ban đầu mà không có chi phí chuyển đổi ngữ cảnh mỗi khi hàng được tìm nạp để thực thi chức năng này.

SQL> SELECT id, total_price_with_tax(price, item_type) AS total_price_with_tax
        FROM line_items;

	ID TOTAL_PRICE_WITH_TAX
---------- --------------------
	 1		  18.72
	 2		 210.51
	 3		   4.56

Cũng cần lưu ý rằng các nhà phát triển có thể sử dụng cách tiếp cận tương tự khi tạo Chế độ xem tham số và Bảng đa hình (Parameterized Views and Polymorphic Tables).

Cải tiến trong bộ nhớ (In-Memory Enhancements)

Phân tích dữ liệu bằng mô hình cột có thể dẫn đến cải thiện hiệu suất lớn so với việc sử dụng mô hình dựa trên hàng. Tuy nhiên, việc cập nhật dữ liệu nhanh hơn đáng kể khi sử dụng dữ liệu được tổ chức theo hàng. Oracle Database In-Memory đặc biệt ở chỗ nó cho phép người dùng hưởng lợi từ cả hai cách tiếp cận. Với khả năng này, người dùng có thể chạy các ứng dụng của họ không thay đổi và Oracle Database In-Memory sẽ duy trì một kho lưu trữ dạng cột hỗ trợ các truy vấn phân tích theo thời gian thực cực nhanh. Bạn có thể xem thêm tại The Oracle Database In-Memory Blog.

Oracle Database 21c giới thiệu ba cải tiến chính để nâng cao hiệu suất và dễ sử dụng khi sử dụng Oracle Database In-Memory:

  • Database In-Memory Vector Joins: Thông qua việc sử dụng Deep Vectorization SIMD Framework, Cơ sở dữ liệu trong bộ nhớ của Oracle có thể tăng tốc các hoạt động như tham gia băm trên các cột được tổ chức bên trong cửa hàng cột trong bộ nhớ. Trong trường hợp tham gia băm, liên kết được chia thành các hoạt động nhỏ hơn có thể được chuyển cho bộ xử lý vectơ. Bảng khóa-giá trị được sử dụng được tối ưu hóa SIMD và được sử dụng để khớp các hàng ở phía bên trái và bên phải của phép nối. Cách tiếp cận này có thể dẫn đến cải thiện hiệu suất tham gia lên đến 10 lần so với các phương pháp truyền thống.
  • Self-Managing In-Memory Column Store: Khi Oracle Database In-Memory được phát hành lần đầu tiên, người dùng phải khai báo rõ ràng cột nào sẽ được điền vào In-Memory Column Store. Điều này cho phép người dùng kiểm soát mức độ cao nếu bộ nhớ bị hạn chế. Cơ sở dữ liệu Oracle 18c đã giới thiệu chức năng sẽ tự động đặt các đối tượng vào Cửa hàng Cột nếu chúng được sử dụng tích cực và loại bỏ các đối tượng không được sử dụng. Tuy nhiên, người dùng vẫn phải chỉ ra các đối tượng được xem xét. Trong Cơ sở dữ liệu Oracle 21c, thiết lập INMEMORY_AUTOMATIC_LEVEL thành HIGH, đảm bảo rằng tất cả các đối tượng đều được xem xét – do đó đơn giản hóa công việc quản lý lưu trữ cột trong bộ nhớ.
  • In-Memory Hybrid Columnar Scans: Thường không thể có mọi cột của mọi bảng được điền trong Column Store vì bộ nhớ bị hạn chế. Trong nhiều trường hợp, đây không phải là vấn đề nhưng thỉnh thoảng người dùng có thể gặp phải 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 sẽ đơn giản chạy trên row store. Trong Cơ sở dữ liệu Oracle 21c, người dùng có thể sử dụng cả hai! Giờ đây, trình tối ưu hóa có thể chọn quét Column Store trong bộ nhớ và tìm nạp các giá trị cột dự kiến từ kho lưu trữ hàng nếu cần. Điều này có thể dẫn đến một sự cải thiện đáng kể về hiệu suất.
Hybrid Columnar Scan trong Oracle database 21c
Hybrid Columnar Scan

Các cải tiến đáng chú ý khác

Dưới đây là một số cải tiến đáng chú ý hơn cho các DBA, nhà phát triển, nhà phân tích và nhà khoa học dữ liệu:

  • Expression based init.ora parameters :có đặt các tham số cơ sở dữ liệu (init.ora) dựa trên các tính toán được thực hiện trên cấu hình của hệ thống, tức là đặt tham số cơ sở dữ liệu CPU_COUNT trên một nửa số CPU có sẵn cho hệ điều hành.
  • Automatic Zone Maps: Cơ sở dữ liệu Oracle 21c trên Exadata hiện có thể tự động tạo Bản đồ vùng dựa trên các vị từ được sử dụng trong các truy vấn. Trước đây, đây là một thao tác thủ công yêu cầu người dùng hiểu cách dữ liệu sẽ được truy cập. Bản đồ khu vực tự động có thể giảm đáng kể số lượng khối cần được quét.
  • Giải thuật In-Database Machine Learning (ML): các thuật toán machine learning được tích hợp trong Cơ sở dữ liệu Oracle cho phép các nhà khoa học dữ liệu tận dụng sức mạnh của Cơ sở dữ liệu Oracle để xây dựng các mô hình dự đoán (sử dụng hơn 30 thuật toán ML) chạy trực tiếp trên dữ liệu được lưu trữ trong các bảng cơ sở dữ liệu (trái ngược với việc trích xuất dữ liệu vào hệ thống tệp hoặc cơ sở dữ liệu chuyên dụng cho ‘sandbox ‘phân tích). Cách tiếp cận của Oracle trong việc di chuyển các thuật toán ML sang dữ liệu cơ bản giúp giảm thiểu sự di chuyển của dữ liệu, đạt được khả năng mở rộng, duy trì bảo mật dữ liệu và tăng tốc triển khai mô hình theo thời gian để phân tích kiểu dự đoán Oracle Database 21c bổ sung hỗ trợ cho các thuật toán MSET-SPRT và XGBoost, và Trình giải quyết Tối ưu hóa Adam (Adam Optimization) cho Thuật toán Mạng thần kinh.
  • AutoML: Oracle Database 21c giúp các nhà khoa học và phân tích dữ liệu tận dụng lợi thế của việc học máy trong cơ sở dữ liệu đơn giản hơn bằng cách cung cấp giao diện học máy Python cho cơ sở dữ liệu. Công cụ máy khách mới này khen ngợi các giao diện R và SQL hiện tại đã có sẵn. AutoML đơn giản hóa việc phát triển các mô hình học máy dự đoán bằng cách tự động hóa quá trình lựa chọn mô hình, lựa chọn tính năng và điều chỉnh tham số cần thiết để xây dựng mô hình chính xác
  • Optimized Graph Models: Đồ thị có thể bao gồm hàng triệu hoặc thậm chí hàng tỷ cạnh và đỉnh và do đó, việc tối ưu hóa lưu trữ trong Cơ sở dữ liệu Oracle 21c có thể dẫn đến cải thiện hiệu suất và không gian lớn cho mô hình.
  • Sharding Enhancements: Để giúp việc phát triển các ứng dụng Java trên Oracle Sharding dễ dàng hơn, Java Data Source giúp dễ dàng có được các kết nối mà không cần phải xác định khóa phân đoạn hoặc quản lý khóa kết nối một cách rõ ràng. Sharding cũng có khả năng fault-tolerant tốt hơn bằng cách tự động tìm kiếm các thay thế nếu phân đoạn làm việc không thành công trong quá trình thực thi.
  • Persistent Memory (PMEM) Support: Oracle Database 21c bao gồm hỗ trợ cho các hệ thống tệp PMEM có thể cung cấp các cải tiến đáng kể về độ trễ và băng thông so với các hệ thống tệp truyền thống sử dụng SSD hoặc đĩa quay. Tuy nhiên, các ứng dụng sử dụng chúng cần phải hiểu cách ghi vào chúng một cách an toàn và cách hiệu quả nhất để sử dụng chúng cùng với các tài nguyên hệ điều hành khác. Việc triển khai Oracle Database 21c cung cấp khả năng ghi nguyên tử, bảo vệ an toàn chống lại việc ghi từng phần khi mất điện đột xuất. Nó cũng cung cấp các hoạt động I / O nhanh bằng cách sử dụng sao chép bộ nhớ. Ngoài ra, nó sử dụng hiệu quả bộ đệm cache của cơ sở dữ liệu bằng cách bỏ qua và đọc trực tiếp từ bộ lưu trữ PMEM.

Ngoài ra còn có rất nhiều cải tiến khác bạn có thể xem tại Oracle Database 21c New Features Guide

Theo Oracl Blog

Đánh giá bài viết

Average rating 4.8 / 5. Vote count: 6

No votes so far! Be the first to rate this post.

Comments are closed.