ภาพรวม Oracle 21c
Oracle 21c Database เป็นพื้นฐานของบริการฐานข้อมูล Oracle ทั้ง On-premises และ Cloud รวมถึง Autonomous Database (ADB), Oracle Exadata Service@Customer และ Oracle Exadata Machine เวอร์ชันล่าสุดนี้รวมฟีเจอร์ใหม่ๆ เช่น การเพิ่มประสิทธิภาพ Optimizer อัตโนมัติ รองรับข้อมูล JSON และ Graph Models ฟีเจอร์อัตโนมัติช่วยลดภาระงานของผู้ใช้และนักพัฒนา รองรับ Data Models หลากหลาย รวมถึง Machine Learning ในตัว ทำให้ไม่ต้องใช้บริการแยกต่างหาก Oracle 21c รองรับ SQL, REST และ API Transactions ทุกประเภทของ Data Models
สถาปัตยกรรม 21c
สถาปัตยกรรม Oracle Database 21c คล้ายกับเวอร์ชันก่อนหน้า ประกอบด้วย Oracle Database Instances และ Oracle Database
สถาปัตยกรรมทางเทคนิค Oracle Database 21c
Multitenant Architecture ประกอบด้วย Physical Files (Datafiles) และ Database Instance ประกอบด้วย Memory Structures (SGA - Shared Global Area และ PGA) และ Background Processes ที่ทำงานแทนผู้ใช้ผ่าน Server Process เช่น Execute Queries, Fetch Data จาก Disk, เขียนข้อมูลลง Datafiles หรือ Redo Log Files, จัดเก็บ Execution Plans ฯลฯ
Single Database Architecture มีความสัมพันธ์ 1:1 ระหว่าง Instance และ Database สามารถติดตั้ง Multiple Single Instances บน Server เดียวกันได้ แต่แต่ละ Instance จะมี Database แยกกัน
Oracle RAC Architecture ประกอบด้วย Multiple Instances รันบน Server แยกกัน แต่ใช้ Database เดียวกัน ให้ High Availability, High Performance และ Scalability Listener รับ Request จาก Client Application สร้าง Connection แล้วส่งต่อให้ Server Process ทำงานแทน User
ฟีเจอร์หลักของ Oracle 21c
21c รองรับ Data Types ทุกประเภท: Relational, JSON, XML, Spatial, Graph, OLAP ให้ Performance, Scalability, Availability, Security สูงสำหรับ Workloads ทุกประเภท: Analytical, Operational, Mixed
1) Blockchain Tables
แก้ปัญหา Verified Transactions รองรับการสร้างแอปพลิเคชัน Distributed Ledger ทำงานเหมือน Heap Table ธรรมดาแตแตกต่างสำคัญ: Rows ถูก Cryptographically Hashed เมื่อ Insert ไม่สามารถ Update หรือ Delete ได้ ไม่สามารถ Truncate, Drop หรือ Partition ภายในช่วงเวลาที่กำหนด ทำให้ข้อมูลใน Blockchain Table น่าเชื่อถือเป็นบันทึกเหตุการณ์ที่ถูกต้อง
2) Native JSON Data Type
เก็บ JSON เป็น VARCHAR2 หรือ LOB (CLOB/BLOB) ช่วยให้นักพัฒนาสร้างแอปด้วย Schemaless Design สามารถ Query JSON ด้วย SQL, Index Attributes หรือ Document ทั้งหมด, ประมวลผล JSON Documents หลายพันล้านแบบ Parallel ใน 21c เพิ่ม Native Data Type "JSON" - Parse เกิดขึ้นครั้งเดียวตอน Insert แล้วเก็บใน Binary Format ภายใน ทำให้ Read/Update เร็วขึ้น 4-5 เท่า Update JSON ใหญ่ เร็วขึ้น 20-30 เท่า
CREATE TABLE j_order (
id INTEGER PRIMARY KEY,
po_doc JSON
);
เพิ่มฟังก์ชัน JSON_TRANSFORM ทำให้ Update/Remove หลาย Attributes ใน Document ครั้งเดียวได้ง่ายขึ้น
UPDATE j_order SET po_doc = JSON_TRANSFORM(po_doc,
SET '$.address.city' = 'Santa Cruz',
REMOVE '$.phones[*]?(@.type == "office")')
WHERE id = 555;
3) Executing JavaScript inside Oracle Database
ใช้ Multi Language Engine (MLE) รัน JavaScript ใน Database ด้วย PL/SQL Package: DBMS_MLE JavaScript ใช้พัฒนา Client/Server-side เข้าถึง Database ผ่าน SQL ธรรมดา MLE Map Data Types อัตโนมัติ ช่วย APEX Developers ใช้ JavaScript เป็น First-class Language
DECLARE
ctx DBMS_MLE.CONTEXT_HANDLE_T;
BEGIN
ctx := DBMS_MLE.CREATE_CONTEXT();
DBMS_MLE.EVAL(ctx, 'JAVASCRIPT', 'console.log("Hello from JavaScript")');
DBMS_MLE.DROP_CONTEXT(ctx);
END;
4) SQL Macros
แก้ปัญหา Complex SQL Queries ที่ต้องใช้ Stored Procedures/Functions ทำให้ Performance ลดลงจาก Context Switch ระหว่าง SQL และ PL/SQL Engine SQL Macros ให้ SQL Expressions และ Table Functions ถูกแทนที่ด้วยการเรียก Stored Procedures ที่ Return String Literal เพื่อนำไปวางใน SQL
5) In-Memory Enhancements
Columnar Format เร็วกว่า Row-based สำหรับ Analytics ในขณะที่ Row Model เร็วกว่าสำหรับ Update In-Memory ใช้ได้ทั้งคู่
A. Database In-Memory Vector Joins: เร่ง Hash Joins บน Columns ใน In-Memory Column Store ใช้ SIMD Optimized Key-Value Table จับคู่ Rows ทำให้ Performance เร็วขึ้น 10 เท่า
B. Self-Managing In-Memory Column Store: ตั้งค่า INMEMORY_AUTOMATIC_LEVEL = HIGH ทำให้ Object ทั้งหมดถูกพิจารณาเข้า Column Store อัตโนมัติ ลดภาระการจัดการ
C. In-Memory Hybrid Columnar Scans: Optimizer สามารถ Scan In-Memory Column Store และ Fetch ค่าจาก Row Store ได้พร้อมกัน เมื่อ Column บางส่วนไม่อยู่ใน Column Store เพิ่ม Performance อย่างมีนัยสำคัญ
สรุปประโยชน์หลัก
- Query Performance ดีขึ้นอย่างมีนัยสำคัญ
- รองรับ Data Types ครบครัน: JSON, XML, OLAP
- Scalable, Highly Available, Secure สำหรับทุก Workloads (OLTP, Ad-hoc, Data Warehouse)
- รองรับ Operational และ Mixed Workloads
- อัตโนมัติมากขึ้น: Parallel Scans, Online Backups ฯลฯ
- Performance Features อัตโนมัติ เช่น Automatic Indexing